CS 4610 — Programming Languages — Programming Assignments

Instructions

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

C. C is a structured, imperative, weakly-typed language designed for
efficient systems programming.
This class assumes a passing familiarity with the C programming
language. If you are not familiar with it and choose to continue with the
class, many tutorials are available online.
For example, try this tutorial from Drexel University.

C will only be used in Programming Assignment 1 and in some
additional assignments related to linking and multi-language projects.
However, C generally serves as the lingua franca of
the programming languages world, and you will find that many other tools
(e.g., lexical analyzer generators) explain themselves with respect to
similar C implementations.

When in doubt, support gcc version 4.1.2 20080704 (Red Hat 4.1.2-51), x86_64-redhat-linux.

Cool. Cool is an imperative, strongly-typed classroom
object-oriented programming language. It can be viewed as a simplified
version of Java.

Haskell. Haskell is a statically-typed, lazy, purely
functional language. The HaskellWiki lists
a number of
tutorials.Note: Of the languages available, Haskell is likely
to be the most different from what you are used to.

When in doubt, support The Glorious Glasgow Haskell Compilation
System, version 7.0.4 (with available library mtl 2.0.1.0
for Control.Monad.State and missingH 1.2.1.0 for
general utility).

JavaScript. JavaScript is a dynamically-typed language with
object-oriented, imperative and functional support; it is often used in web
and asynchronous programming. Many popular
JavaScript tutorials are available.