How to pick an implementation language for CS 4120

This document has some guidelines and tips for choosing a language to write your compiler in for CS 4120. It's based on the experiences of past groups.

General guidelines

  1. Pick a language everyone in your group knows. Everyone should have written at least a few non-toy programs in it. Simultaneously learning a language while using it to write the compiler will be very challenging.
  2. Default to Java. The course staff and infrastructure are best equipped to support compilers written in it.
  3. Get the approval of the course staff before using something other than Java or OCaml. The staff have experience dealing with compilers written in various languages. They can tell you about pitfalls that you would rather not discover for yourself during the later programming assignments.

Golden rule for selecting a language

Pick a language that has an expressive type system, is statically typed, and is garbage-collected.

Notes on specific languages

Again, remember that picking a language everyone is already familiar with is strongly recommended; the projects rapidly get more difficult and you probably don't want to be figuring out the documentation days before a deadline.