McMaster University
CAS 706

Lectures  Extra material  Languages and compilers  Assignements Presentations


Tuesday 12:30-13:20 in ITB/222, and Friday 10:30-12:20 in ITB/AB105.


40% assignments, 35% in-class presentation, 25% final exam.


  1. Parametrized quicksort. Languages: D, Eiffel, Ocaml, Prolog.
  2. Lambda calculus interpreter. Languages: Lua, Scala, Haskell, mercury.
  3. Typed Lambda calculus interpreter. Languages: Pascal, Javascript, F#, curry.
  4. Fun with scripting languages. Perl, python.
  5. Bonus: implement the AO Challenge in MetaOCaml, where each ``aspect'' should be modularized, in the same style as the modularization for the Gaussian Elimination family. See also this paper.

Textbooks and web materials

Required: Types and Programming Languages Benjamin C. Pierce
A good idea: Programming Languages: Principles and Paradigms Allen Tucker and Robert Noonan.
There is some very useful material at the following pages: When in the mood to look at weird languages, I definitely recommend In the same vein, some good jokes based on programming languages.

I recently found a nice comparison of the extension benefits of OO vs functional. Clearly lays out the tradeoffs involved. I could also talk about how FP is (mostly) based on initial algebras and OO on co-algebras, but that might not enlighten many amongst you!

For specific languages, I recommend: All the sites above contain executables and lots of documentation.


Topics to choose from (* items need to be covered):