CS 360
Winter 2016
Programming Language Concepts
CS 360-001 Tuesday/Thursday 15:30-16:50 (Rush 014)
CS 360-002 Tuesday/Thursday 14:00-15:20 (Rush 014)
CS 360-003 Tuesday 18:30-21:20 (University Crossings 153)

Geoffrey Mainland
Office: University Crossings 106
Office hours: Mondays 3pm–5pm; Thursdays 5pm–6pm.
Teaching Assistants:
Pavan Kantharaju
Matthew Roll
Warning! This material is for an old version of the course.


CS 360 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
Office hours: Mondays 3pm–5pm; Thursdays 5pm–6pm.

Teaching Assistants

Pavan Kantharaju (pk398@drexel.edu)
CLC office hours: Monday 1pm–3pm; Wednesdays 2pm–4pm

Matthew Roll (mpr56@drexel.edu)
CLC office hours: Wednesdays 12pm–2pm

There are other TAs, including Justin Horvitz and Brian Lee, who are qualified to help you with CS360. See the Cyber Learning Center web site for their office hours.

Course Text

There is no required text for CS 360.

Course Discussion

All course communication, including communication with course staff, will take place on Piazza. You can join the CS 360 Piazza class by following this link.

Piazza allows students to post anonymous questions and to communicate privately with course staff. Please use Piazza for all communication regarding CS 360.

Piazza is also for communicating with other students!

Course Software

All required course software is provided on tux. If you do not have an account on tux, you can get one here.

We will use several software packages in cs360, in particular Racket and GHC, for which only older versions are available on tux. We provide more recent versions of these packages, which we will use to grade your homework. If you are using tux to do the homeworks, please append the following line to your .bash_profile file (in your home directory) on tux:

source ~mainland/cs360/cs360.sh

We recommend you read cs360.sh and understand what it is doing! You will need to log out and then log back in for these changes to take effect.

You can make sure you have the correct versions of racket and ghc in your PATH by using the which -a command at the command line. It should output something like this:

[mainland@tux64-11 ~]$ which -a racket
[mainland@tux64-11 ~]$ which -a ghc   
[mainland@tux64-11 ~]$

Course Virtual Machine

As an experiment this year, we are providing a virtual machine image containing all the software you need for CS 360. You do not need to use the course VM—all required software is also available on tux—but we expect many students will prefer working with the VM. The VM already contains up-to-date versions of Racket and GHC, so if you use the VM, you do not need to take any extra steps to get the correct versions of these programs.

Drexel provides free copies of VMWare Workstation (for Windows or Linux) and VMWare Fusion (for Mac) via DreamSpark. You should have received an email on the first day of the term, from “The College of Computing and Informatics- DreamSpark Premium noreply@kivuto.com”, with information about your DreamSpark account. If you have problems accessing DreamSpark, please first go to http://www.cci.drexel.edu/msdnaareset and enter your Drexel short form email address (abc123@drexel.edu) to have the account information and instructions for connecting sent to you again. If the above link tells you that you do not have an account, or if you are still unable to access DreamSpark, please send email to ihelp@drexel.edu.

To get the virtual machine running:

  1. Download and install either VMWare Workstation or VMWare Fusion.
  2. Download the course virtual machine here.
  3. Unzip the archive.
  4. Open the virtual machine in VMWare.

The VM username and password are both cs360.

Note that in order to run the virtual machine, you may need to enable VT-x in your computer’s BIOS.


Using Racket

A small document to get you started with Racket either on tux or using the course VM.

Using GHC

A similar guide to getting started with GHC.

Online programming language resources

A number of links containing additional information about some of the languages we will be using and/or studying.

Programming languages bibliography

A short bibliography related to CS 360. Many of the texts are available online or electronically from the Drexel library.