CS 5641 Course Syllabus
Compiler Design
Fall, 2009

Course Information

Instructor:Rich Maclin
Office:315 Heller Hall
Lectures: 11:00-12:15 Tu,Th, 306 HH
Lab: 19:00-19:50 Tu, 177 MWAH
Office Hours: 15:00-16:00 Tuesday, 13:30-14:30 Wednesday and by appointment
Teaching Assistant: Bharat Siginam
Text: Aho, Lam, Sethi, and Ullman, Compilers: Principles, Techniques, and Tools, 2nd Ed., Addison-Wesley, ISBN 0-321-48681-1

Catalog Description

A selection from the following topics: finite-state grammars, lexical analysis, and implementation of symbol tables. Context-free languages and parsing techniques. Syntax-directed translation. Run-time storage allocation. Intermediate languages. Code generation methods. Local and global optimization techniques.


Course Goals

This course presents a comprehensive introduction to the process of creating a compiler for a high-level programming language. One of the goals of this course is to give students the theoretical background and hands-on implementation experience necessary to understand and employ tools used in compiler design such as lex and yacc. Students are expected to understand and be able to implement both scanner and parser tools so as to better understand how to effectively use tools that automatically generate scanners and parsers. A second goal is to give students significant understanding of and experience with semantic analysis techniques such as abstract syntax tree generation, type checking, etc., in order to produce intermediate code. A third goal is to give students the requisite understanding of and some experience with code optimization and code generation. A fourth goal is to give students significant understanding of a variety of programming language capabilities to increase their proficiency with these programming languages and to allow them to better exploit the capabilities of these languages. A fifth goal is for students to increase their overall programming proficiency and their ability to work in teams as a result of the implementation of their team compiler project. The overall goal of the course is to give students significant knowledge and experience with compilers and programming languages, both in terms of being able to develop them and in terms of being better able to employ them as part of developing a software system.

Examinations and Grades

Item Points Date and Time
Midterm Exam 1 175 points October 15 (Thursday), 11:00-1215
Midterm Exam 2 175 points November 24 (Tuesday), 11:00-1215
Final Exam 350 points December 19 (Saturday), 8:00-9:55
Programming Assignments (3-5) 200 points TBA
Homework Assignments (5) 100 points TBA
Total 1000 points Grade based on total points

Grades are assigned on a percentage basis, and then an adjustment is applied based on a minimum effort requirement (see below). The grade percentage cutoffs are as follows:

These percentages may be lowered but will not be raised.

Minimum Effort Requirement: Students must turn in a minimal credible effort for EVERY assignment or their grade will be reduced one full letter grade (an A would become a B, an A- a B-, a B+ a C+, etc.). A turned-in assignment achieving at least 40% of the possible points (before late assignment penalties) will be considered a minimal credible effort (though this percentage may be revised downwards by the instructor as warranted). For example, if a program has a maximum possible 30 points, then a turned-in assignment achieving at least 12 points before late penalties would be considered a minimal credible effort.


Missed Classes

You are responsible for what goes on in class, including lecture material, handouts, and turning in assignments. If you are unable to attend class it is your responsibility to obtain copies of class notes and any materials distributed in class. You may turn in copies of assignments early or have other members of the class turn in an assignment for you.

Missed Exams

No exam will be given early. Exams can be made up only in the case of emergencies such as severe illness or death in the immediate family. You must contact me 24 hours in advance in order to arrange a makeup.


All assignments will be collected at the beginning of class on the due date. Late assignments will be penalized 20% of the grade for each working day the assignment is late.


Programming assignments must be your own work. You may discuss general ideas with other students, but should not discuss actual code with others. If you are having problems with an assignment, please come and see me or send me email.

Equal Opportunity

As instructor I shall make every attempt to treat all students equally, without regard to race, religion, color, sex, handicap, age, veteran status, or sexual orientation. I encourage you to talk to me about your concerns of equal opportunity in the classroom. To inquire further about the University's policy on equal opportunity, contact the Office of Equal Opportunity (6827) or (6849), 269-273 DAdB.

Students With Disabilities

If you have any disability (either permanent or temporary) that might affect your ability to perform in this class, please inform me at the start of the semester. I may adapt methods, materials, or testing so that you can participate equitably. To learn about the services that UMD provides to students with disabilities, contact the Access Center (6130), 258 Kirby Student Center, or the Office of Equal Opportunity (6827) or (6849), 269-273 DAdB.