Home | Lectures | Written Assignments | Programming Assignments | Exams | Cool

CS 4610 — Programming Languages — Programming Assignments


Start the programming assignments early! Completing the course project is a large, complex, and rewarding task, which is made much easier by giving adequate forethought to design. The course schedule allows ample time to complete the assignments -- take advantage of it.

Documentation and structuring should be incorporated into programs from the beginning. Neither instructors nor teaching assistants will help with incomprehensible programs.

I highly recommend that you find an account on a Unix (or Mac OSX) machine or that you install Cygwin on your Windows machine.

The instructional lab machines should have OCaml, Ruby and Python pre-installed.

Language Guides

Ocaml. Start with Jason Hickey's Introduction to Objective CAML and move on to the official OCaml tutorial. Ruby. You might consider the official Ruby in Twenty Minutes. Python. Try the official Beginner's Guide or Guido's Tutorial. Cool. See the course webpage on Cool.

C. Google for "C tutorial" or somesuch. For example, try this tutorial from Drexel University.

Automatic Grading

PA1: The Rosetta Stone

PA2: The Lexer

PA3: The Parser

PA4: The Semantic Analyzer

PA5: The Interpreter

CS 4501 — Compilers Practicum — Programming Assignments

Language Guides

x86-64. A number of on-line resources are available. I used these when making the Reference Compiler. Cool Assembly Language. The definitive source for the assembly language definition as well as the machine model is the Cool Reference Manual.

PA6: The Compiler

PA7: The Optimizer