This is an old revision of the document!

CMPU-331 Compilers (Spring 2019)

“If you don't know how a compiler works, you don't know how a computer works.”

— Steve Yegge

Compilers are used throughout the world of computers and computing. But what is a compiler? What functions and purposes do they serve? How do they operate? What problems do they solve? How might one be designed?

This capstone course examines these questions and others to develop a deeper understanding of computers, their operation and their programming, using a combination of lectures, in-class discussions, exercises and an incremental semester-long project.



  • Professor Simon Ellis. Website. Email.
  • Office hours: Tuesday, 12.30 – 2.0 p.m. and Friday, 11.30 a.m. – 1.0 p.m.. Or by appointment.
  • Location: Sanders Classroom 220.


  • Mr Parker Zimmerman.
  • Coaching hours: To be determined.
  • Location: Asprey Lab. (Sanders Physics 307).


Time: Tuesday & Thursday, 10.30 – 11.45 a.m.
Location: Sanders Physics 105.

Course Literature


  • Aho, Alfred V., Lam, Monica S., Sethi, Ravi & Ullman, Jeffrey D., Compilers: Principles, Techniques, and Tools (2nd edition).
    Boston, MA: Addison-Wesley, 2006.

This textbook (generally referred to as 'the “Dragon Book”') is widely accepted as an industry standard in the field of compilers and compiler design. It is required for all students in this class. It provides substantial background material which there is not time to cover during lectures, and a solid understanding of the book will be highly beneficial in the exam.

Rich Programmer Food This is the website from which the quotation at the top of the page is taken. It is an excellent read, and outlines succinctly and clearly why studying compiler design and compilation is so important.



Before joining this course, students must have successfully completed:

It is strongly recommended that students have completed at least one of following courses before taking this course:

CMPU-241 Analysis of Algorithms is also very useful.

This course has assignments which are both assessed and unassessed. Although some assignments are unassessed, they are intended to support your learning and understanding of the material in the course.

  1. Weekly readings.
  2. Pair-based homework exercises.
    • Interim development submissions. (24%)
    • Final submission of complete compiler. (36%)

Weekly Readings

The weekly readings are intended to both introduce new material and supplement the material presented in lectures. It is strongly recommended that you have at least familiarised yourself with the content of the reading before the associated lecture(s). If you have any questions about the material in the book, please do raise them in class.

While the readings are not graded, please bear in mind that the textbook forms the basis for the exam.

I reserve the right to present unscheduled quizzes.

Pair-Based Homework Exercises

These exercises will be scheduled roughly every two weeks and will generally be relevant to the material currently being presented in the class. Their intention is to give you a chance to practise new material, to review and sharpen existing skills, and to experiment with new combinations of ideas, with the liberty of not being required to complete the work.

While these homeworks will not be graded, it is nonetheless strongly recommended that you attempt them, at least in part, as much of what they will cover will appear elsewhere in the course. We will discuss some of these problems, explore issues that arise, and review selected solutions together in class.

Written Examination

The examination counts for 40% of your grade for this course.

The examination will be a take-home exam scheduled towards the end of the semester. It will cover the theoretical aspects of the course, with an emphasis on material from the textbook.

Compiler Software Development Project

The project counts for 60% of your grade for this course.

The project involves the implementation of a compiler consisting of four parts: lexical analysis routines, parser, symbol table management routines, and semantic routines. Due to its size and complexity, the semantic routine subsystem is broken into four sections. Each piece is integrated with what has been completed previously, so that by the end of the semester you have created a single, complex program.

I support wholeheartedly and implement all the general policies of Vassar College, including but not limited to those relevant to students with disabilities, Title IX, plagiarism, and classroom etiquette.

Late Policy



Absent any extenuating circumstances or accommodations, examinations returned late will receive a grade of zero.

Academic Accommodations

Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity (AEO). Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.


We are each of us angels with only one wing, and we can only fly by embracing one another.
— Luciano de Crescenzo

We are a community of learners, and we must be present to help one another in order to learn at our best.

Your contributions and insights are unique and valuable in every class. The questions you ask will help everyone to understand the course material. The ideas you express may start discussions which lead to ideas for new and exciting projects.

Missing class deprives all of us of your insights, understanding, knowledge, experience and enthusiasm.

I understand that sometimes events occur which will preclude attendance. Please let me know in advance if you will have to miss a class. Do be aware that this is a difficult course, and missing too many lectures may hurt your overall performance in the class.

When Life Just Gets in the Way...

Sometimes, Life happens: it's the nature of the beast.

If something unexpected occurs which will prevent you from being able to submit project phases on time, preclude attendance at class, or otherwise interferes or conflicts with, or has a deleterious effect upon, your ability to work, it is important to let me know as soon as possible so we can devise a work-around.

Extenuating Circumstances

The term “extenuating circumstances” includes, for example, unexpected personal illness, a family emergency, or any other significant event which is likely to have a significant negative impact.

I am happy to work with students to reschedule work or provide extensions as necessary. Please let me know as soon as possible that there is an issue, either privately after class, in office hours (or by appointment) or by email.

I appreciate that it is not always possible to make contact in a timely manner. In this case, please just be in touch when you can.

Sports & Athletic Fixtures

You're on a team? Great! Fantastic! The very best of luck to you!

If you are on a team, please let me know well in advance (e.g. as soon as you get your schedule) when your sports fixtures might clash with the class.

If there is a last-minute cancellation and rescheduling of a match, perhaps due to bad weather or illness, and you find out one morning that you're shipping out that evening… this is not a problem. Again, please reach out to me as soon as possible and we'll make it work.


Any request for academic easement must be supported by evidentiary material. For example:

  • In the case of extenuating circumstances, the Dean of Studies' Office will send me an email.
  • For sports fixtures known well in advance, an email from the team coach outlining which students will be away, and when.
  • For last minute changes to sporting fixtures, please forward to me the email from the coach with the changed schedule.


All arrangements for academic easements are made on a case-by-case basis and without prejudice as necessary throughout the semester.

Academic Integrity

Please don't cheat.

Read Going to the Source.

Any course fundamentally based on composition, development, imagination and creativity – which this course is, to a large degree – is subject to the same kind of guidelines that apply to writing, creativity, research and development in general. Writing code is no different from writing anything else, whether it's a plot for a story or a scholarly work.

Copying someone else's work without attribution amounts to plagiarism.

If someone helps you out by providing you a substantial chunk of code (e.g. a section of function or more), or your work is improved by discussion with someone (since talking about your work with someone else is always a great idea), give proper attribution for the help you receive.

“In suspected cases of plagiarism, the instructor prepares a written statement of complaint to the Academic Panel.”

Going to the Source, Chapter X (p. 13).

This means that all cases where plagiarism is suspected — even ones where we are, in fact, incorrect, and students are completely innocent — must be reported to the Dean of Studies. The department is not able or permitted, legally, to intervene or intercede in any way.

Please don't put yourself or your professor in that position.

(This section was based on text by Professor Marc Smith.)

Title IX

Vassar College is committed to providing a safe learning environment for all students that is free of all forms of discrimination and sexual harassment, including sexual assault, relationship abuse, and stalking. If you (or someone you know) has experienced or experiences any of these incidents, know that you are not alone. Vassar College has staff members trained to support you in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more.

Please be aware all Vassar faculty members are “responsible employees,” which means that if you tell me about a situation involving sexual harassment, sexual assault, relationship abuse, or stalking, I must share that information with the Title IX Coordinator. Although I have to make that notification, the Title IX office will only provide outreach by email. You will control how your case will be handled — you don’t have to read or respond to the email, and it is completely up to you whether to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need.

If you wish to speak to someone privately, you can contact any of the following on-campus resources:

The SAVP website and the Title IX section of the EOAA website have more information, as well as links to both on- and off-campus resources.