|Home | People | Curriculum | Projects | Resources | Media|
Instructor: David Wonnacott
Semester & Year: Spring 2014
Schedule: Lecture 10:00-11:30 T/Th in KINSC H108;
Scheduled Labs Tuesday either 11:30-12:15 or 2:30-3:15 in KINSC H110
NOTE: If there are more than 18 students in the class, we'll either expand to two one-hour labs, or (better yet) add a third 45-minute section Tuesday afternoon or on Wednesday.
Lab attendance is required for students who have not submitted the current lab project.
Concurrent enrollment in this and two other CMSC lab courses requires permission of the instructor.
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
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 beyond the "basic" level, 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 up to 3 days 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.
Mini-homework assignments:Mini-homeworks will be assigned regularly to review or prepare for a given class.