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
- The basic principles of compiler design and implementation, including
lexical analysis, syntactic analysis, type checking, and code
- An ability to write a translator that implements a language of your
- An ability to use a variety of tools associated with software
and compiler development.
- An ability to work in a team environment, and to appreciate the
different roles that may be assumed by team members in a software