Compilers

Alex Aiken

Programming Assignments

Programming Assignments

There are five programming assignments and one optional assignment for this course. To get started on the programming assignments, download and extract the starter code for your particular machine. The individual source files are also available individually, but we strongly recommend that you use the tarball if one is available for your architecture. Many of the source files you will use are actually linked from other directories in the tree—make sure not to disturb the overall structure of the source tree. You should extract the tarball into an empty directory in a convenient location; when the assignment documentation refers to [cool root] it is referring to this location.

There are several dependancies you will need to get the programming assignments to work correctly. Specifically, you will need g++, csh, flex, and bison. If you are using Linux and have the apt package manager installed, you can get them all with a single command:

      sudo apt-get install g++ csh flex bison
    
If you are completing the Java version of the assignments, you will also need javac, which you can install as follows:
      
      sudo apt-get install openjdk-6-jdk
    

Download
Linux (i686) — compiled and tested on Ubuntu 10.04
Mac OS X (coming soon)
Download individual files (coming soon)

Once you extract it, you will find the [cool root] directory is broken down into several subdirectories:

assignments The root working directory for each assignment can be found here. The README found in each of these directories will offer more information regarding each specific assignment, as will that assignment's handout.
handouts This directory contains all of the assignment handouts, as well as documentation for the Cool programming language. These are the same handouts that can be found in the Handouts section of the course website.
examples This directory contains many example programs written in the Cool programming language.
bin This directory contains the spim, xspim, and coolc binaries, compiled for your particular architecture. To be able to run these applications from any location. You may want to add the following lines to your .bashrc file:
                  
        alias spim="[cool root]/bin/spim"
        alias xspim="[cool root]/bin/xspim"
        alias coolc="[cool root]/bin/coolc"
etc, include, lib, src These directories contain various source and helper files that are used by the assignment makefiles, spim, and elsewhere. Many of these source files may be symbolically linked into the working directory for each programming assignment. You should not need to access these directories directly to complete the assignments.