CS461 -- Compilers

Brad Vander Zanden

Where to Find Things


CS461 is meant to both provide you will a working knowledge of how programming languages are implemented by compilers and with designing and working on a large software project in a team environment. Even if you never write a compiler during the rest of your career, the insights you glean from knowing how a compiler implements the constructs of a language can allow you to write cleaner, more efficient code. Similarly, we will be using a team development process that has been successfully used at Columbia University and that mimics the real world structure of many software development teams (see the projects web page for additional details). Employers frequently cite a compilers course on a candidate's resume as a significant positive because compiler writing is often seen as helping students develop good software engineering skills because they have had to do a significant piece of code development.

When you have finished this course, you should have a mastery of the following topics:

  1. The basic principles of compiler design and implementation, including lexical analysis, syntactic analysis, type checking, and code generation.

  2. An ability to write a translator that implements a language of your team's choosing.

  3. An ability to use a variety of tools associated with software and compiler development.

  4. An ability to work in a team environment, and to appreciate the different roles that may be assumed by team members in a software development project. <