Joe Gibbs Politz (Instructor)
In this course, we’ll explore the implementation of compilers: programs that transform source programs into other useful, executable forms. This will include understanding syntax and its structure, checking for and representing errors in programs, writing programs that generate code, and the interaction of generated code with a runtime system.
We will explore these topics interactively in lecure, you will implement an increasingly sophisticated series of compilers throughout the course to learn how different language features are compiled, and you will think through design challenges based on what you learn from implementation.
This web page serves as the main source of announcements and resources for the course, as well as the syllabus.
Final: June 13, TBA, 8am
The schedule below outlines topics, due dates, and links to assignments. In a typical week, by Monday before class all due dates, readings, and notable events in the course until the following week will be posted here. So if you check the schedule at the beginning of the week, you’ll know when all reading quizzes, programming assignments, etc. will be due. We will often have the schedule confirmed more than a week out, but we’ll always be at least a week ahead. The schedule of lecture topics might change slightly, but I post a general plan so you can know roughly where we are headed.
(The first week is an exception; we’ll get everything you need for the first week out by Tuesday evening.)
Office hours are subjected to change each week, so please check the calendar before you come. When you come to the office hour, we may ask you to put your name in the queue using the whiteboard. We won’t use Autograder for this course, because we want to encourage you to discuss with each other and ask questions without code in front of us. That said, for open collaboration assignments, we will be happy to help your code if you need it.
Your grade will be calculated from:
You have a total of 4 extension days that you can apply over the course of the quarter. Any amount of time (up to 24 hours) past the deadline counts as a full day. These apply to programming assignments and to take-home work. You cannot use more than one day on a given assignment.
Mistakes occur in grading. Once grades are posted for an assignment, we will allow a short period for you to request a fix (announced along with grade release). If you don’t make a request in the given period, the grade you were initially given is final.
You are not allowed any study aids on in-class exams, aside from those pertaining to university-approved accommodations. References will be provided along with exams to avoid unnecessary memorization.
You cannot discuss the content of exams with others in the course until grades have been released for that exam.
There are two types of assignments in this course:
Programming assignments will explicitly list whether they are open or closed collaboration. There will also be take-home written homeworks, which are always closed collaboration.
You should be familiar with the UCSD guidelines on academic integrity as well.
We are committed to fostering a learning environment for this course that supports a diversity of thoughts, perspectives and experiences, and respects your identities (including race, ethnicity, heritage, gender, sex, class, sexuality, religion, ability, age, educational background, etc.). Our goal is to create a diverse and inclusive learning environment where all students feel comfortable and can thrive.
Our instructional staff will make a concerted effort to be welcoming and inclusive to the wide diversity of students in this course. If there is a way we can make you feel more included please let one of the course staff know, either in person, via email/discussion board, or even in a note under the door. Our learning about diverse perspectives and identities is an ongoing process, and we welcome your perspectives and input.
We also expect that you, as a student in this course, will honor and respect your classmates, abiding by the UCSD Principles of Community (https://ucsd.edu/about/principles.html). Please understand that others’ backgrounds, perspectives and experiences may be different than your own, and help us to build an environment where everyone is respected and feels comfortable.
If you experience any sort of harassment or discrimination, please contact the instructor as soon as possible. If you prefer to speak with someone outside of the course, please contact the Office of Prevention of Harassment and Discrimination: https://ophd.ucsd.edu/.