Atélier 5: Languages and Compilers Fall 2013
This course is about how programs written in high-level languages are executed on modern hardware. Understanding how languages are implemented is useful for reasoning about program behavior and performance. A secondary goal of the course is to expose students to the principles, techniques, and tools used to construct compilers and interpreters.
The course will cover both the theory and practice of programming language implementation. Topics include compiler structure, lexical and syntactic analysis (parsing), types, semantic analysis, program representations, data-flow analysis, register allocation, optimization, and compiler construction tools.
Logistics
Lectures | Tue, Thu, Fri 13:30–15:15 in SI-006 |
Prerequisites | Software Atélier IV, Computer Architecture, Algorithms and Data Structures, Automata and Formal Languages |
Lecture Notes |
|
Compiler References |
|
Python References |
|
LLVM References | |
Class Q&A Website | Compilers on Moodle - for all questions related to the material |
Staff Mailing List | usi-compilers AT googlegroups DOT com for administrative questions |
Grading | Written assignments and in-class exercises: 10%, Programming assignments: 60%, Exams: 30% |
Syllabus |
Announcements
- Coming soon!
Course staff
IMPORTANT Contact us using the staff mailing list for administrative questions. Post questions about assignments to the Moodle forum.
Nate Nystrom instructor
Office | SI-203 |
Office hours | Whenever the door is open |
Ilya Yanok teaching assistant
Office | Openspace near SI-206 |
Office hours | TBA |
Schedule Subject to change
Date | Topic | Preparation | Lecture notes | Assignment out | Assignment due |
---|
Policies
Group Work
Assignments will include both written and programming assignments. You are encouraged to work on the programming assignments with your classmates. The contributions of each student must be explicitly described.
Programming Assignments
Since each phase of the project builds on the previous phase, it is important that you correctly implement each phase before starting the next. Programs should not be submitted unless they successfully run according to specification. You must demo your correct program and give a code walkthrough to the course staff within two days of the submission. Ten percent credit is taken off per day late (a weekend counts as one day). Correct programs submitted on time will receive full credit. If your program is incorrect, you may be asked to fix the major problems, resubmit with a late penalty, and demo the program again.
Submission
Homework should be submitted through the Moodle web site.
Programming assignments will have specific submission instructions included with the handouts. We will use a certain amount of automatic grading to help us deal with the massive amounts of code everyone submits, so please follow the submission instructions exactly as written!
Cheating and plagiarism is unacceptable
You are free to discuss assignments and solutions with others. However, you must write your own assignments, and must not represent any portion of others' work as your own. Assignments found to have plagiarized will be given a grade of -100%.