Compiler Construction: Three Sample CoursesThe broadening of computer science education has called into question the roles of many traditional core courses. ACM's Curriculum 2001 defines a course called ``Programming Language Translation'' (CS240s):
Introduces the theory and practice of programming language translation. Topics include compiler design, lexical analysis, parsing, symbol tables, declaration and storage management, code generation, and optimization techniques.
Unfortunately, it is impossible to cover all of this material, in depth, in a single course. A complete compiler, especially one coded by hand, is a large program for students at the undergraduate and first-year graduate level. Moreover, that program has three major tasks (analysis, transformation, and resource allocation) with very different characteristics. The result is that what the students carry away with them is the memory of late-night coding marathons and a mish-mash of techniques for solving very specific problems posed by a particular source language and target machine.
If we are to continue offering a course in this area, we need a viable strategy that will allow us to make consistent decisions about viewpoint, depth of coverage, and detailed tactics resulting in a coherent view of the subject. Course design must take the overall goals of the curriculum and the prerequisites into account, providing the necessary bridges between old and new material. The Compiler Course in Today's Curriculum: Three Strategies, presented at SIGCSE06, details the following successful approaches:
Each strategy provides the professor with a rationale for making decisions about the selection of material to cover, assignments to give, and tools to use. Here is a summary of possible choices discussed in the paper:
It should be emphasized that these are examples that have been found to work in practice. Each link on the navigation bar to the left leads to material from a course taught at the University of Colorado using the given strategy. The following meta-information has been added to the home page for each of those courses: