Computer_Science
 Home | People | Curriculum | Projects | Resources | Media

CMSC 350b: Compiler Design

Instructor: David Wonnacott

Semester & Year: Spring 2008

Schedule: Lecture 1:00-2:30 T/Th in KINSC H110; Lab 2:00-4:00 Friday, also in KINSC H110

Texts:

Prerequisites: CMSC 245

Description: An introduction to compiler design. Students undertake a semester-long laboratory project, building a compiler to turn Andrew Appel's "Tiger" language into an equivalent HERA assembly language program that can then be executed on the HERA-C simulator or assembled using the Hassem assembler and run on (simulated) HERA microprocessors created in CMSC 240. Lectures combine practical topics such as the use of compiler construction tools and techniques with more abstract discussions of the algorithms upon which these tools are based and discussions of techniques that are beyond the scope of our one-semester lab project.

This course covers the classic steps of compilation, specifically

and, in so doing, serves as a vehicle for several advanced topics in the design, analysis, and use of algorithms and data structures: A course syllabus from 2006 is available in html or PDF formats. It is correct for 2008 except that it says 2006 and the "review questions" will become "mini-homework".

Requirements: Midterm and Final exam, Lab projects, "mini-homework" assignments and other class participation.

Late Submission of Projects: The lab projects for this course are cumulative, and getting behind on one can cause a "cascade of lateness" that can leave an insurmountable amount of work for the end of the semester. Thus, lab work must be submitted on time to recieve credit, except in case of illness or other emergency qualifying for a note from a dean, or one instance in which a lab can be submitted late just due to difficulty scheduling work (please notify me in advance if you want to take advantage of this last rule).

Collaboration: You are encouraged to discuss the lecture material and the weekly labs and "mini-homework" problems with other students, subject to the following restriction: for labs, the only "product" of your discussion should be your memory of it - you may not write up solutions together, or exchange written work or computer files. Unlimited collaboration is allowed on "mini-homework" assignments, which may be written up jointly. Collaboration is not allowed on exams.

Labs:

The above labs make use of C++ files designed to work with Appel's textbook. Anyone outside of Haverford who is interested in these files, or planning to use Appel's book with C++, is encouraged to contact davew.

Mini-homework assignments:

Mini-homeworks will be assigned regularly to review or prepare for a given class. The mini-homework assigments are:

Haverford College Page maintained by John Dougherty, David Wonnacott, and Rachel Heaton.
Computer Science Department, Haverford College.