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, homework exercises and an incremental semester-long project.
|Time:||Tuesday & Thursday, 3.10 – 4.25 p.m.|
|Location:||Sanders Classroom 212.|
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.
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.
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.
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.
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.
Absent any extenuating circumstances or accommodations, examinations returned late will receive a grade of zero.
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 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.
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.
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.
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:
All arrangements for academic easements are made on a case-by-case basis and without prejudice as necessary throughout the semester.
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.
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.
—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.)
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: