Traditional approaches to semester-long projects in compiler courses force students to implement the early stages of a compiler in depth; since many students fall behind, they have little opportunity to implement the back end. Consequently, students have a deep knowledge of early material and no knowledge of latter material. We propose an approach based on incremental development and test-driven development; this approach solves the emphasis problem, provides experience with useful tools, and allows for such a course to be taught in a three or four weeks. Categories and Subject Descriptors K.3.2 [Computers and Education]: Computer and Information Science Education—Computer science education; Curriculum; D.2.3 [Software Engineering]: Coding Tools and Techniques—Test-Driven Development General Terms Design, Human Factors, Languages Keywords compiler course, incremental development, refactoring, testdriven development, unit testing
Jeremy D. Frens, Andrew Meneely