CS 550
Spring 2014
Programming Languages
Thursdays 18:30-21:20
University Crossings 153

Geoffrey Mainland
University Crossings 106
Teaching Assistant:
Mark Boady
Warning! This material is for an old version of the course.


CS 550 covers basic concepts of the design and implementation of programming languages, including data representation and types, functions, sequence control, environments, block structure, subroutines and coroutines, storage management.

Course Staff


Geoffrey Mainland
Office: University Crossings 106
Tentative office hours for this semester: Mondays 3pm-4pm; Wednesdays 3pm-5pm.

Teaching Assistant

Mark Boady
Cyber Learning Center office hours: Thursdays 4pm-6pm
Online office hours (held via BlackBoard collaborate): Wednesday 4pm-6pm.

Course Discussion

Course discussion takes place on the BlackBoard course discussion forums.


We will be using the GHC Haskell compiler. Unfortunately, the default version of ghc installed on tux does not work. We provide a current version of GHC (7.6.3). Please add /home/mainland/local/linux-x86_64/ghc-7.6.3-hp-2013.2.0.0/bin to your PATH to use this version. Note that this is the version of GHC that we will use to grade all homework.

You can add our version of GHC to your PATH by appending the following lines to your .bash_profile file (in your home directory):

export PATH="/home/mainland/local/linux-x86_64/ghc-7.6.3-hp-2013.2.0.0/bin:$PATH"

Make sure you add /home/mainland/local/linux-x86_64/ghc-7.6.3-hp-2013.2.0.0/bin to the beginning of your PATH—otherwise the shell will find the broken version of ghc and try to use that instead. You will need to log out and log back in for bash to pick up the change to your PATH

You can make sure you have the right version of ghc in your PATH by typing which -a at the command line. It should output something like this:

[mainland@tux64-14 ~]$ which -a ghc
[mainland@tux64-14 ~]$ 

Note that /home/mainland/local/linux-x86_64/ghc-7.6.3-hp-2013.2.0.0/bin/ghc comes first.