Languages and Compilers Fall 2012
This page is updated frequently, so check back often. All materials for the course will be posted here.
In this course you will learn 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.
The course is heavily project-based. Students will implement a compiler for a high-level programming language on modern hardware. Students will also do written assignments to understand programming language and compiler principles Students are expected to read the assigned readings before class. During class sessions we will discuss remaining questions and problems.
Logistics When, where, what and how
|Lectures||Mon, Wed, Fri 13:30–15:15 in SI-003|
|Prerequisites||Software Atélier IV, Computer Architecture, Algorithms and Data Structures, Automata and Formal Languages|
|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|
|Grade Distribution||Assignments and exercises: 20%, Project: 50%, Midterm: 15%, Final: 15%|
Staff Professor and TA details
IMPORTANT Contact us using the staff mailing list for administrative questions. Post questions about assignments to the Moodle forum.
Nate Nystrom, Instructor
|Office Hours||Whenever the door is open, or send an email, or try the mensa|
|Contact Details||Staff mailing list|
Schedule Subject to change
|Date||Topic||Lecture notes||Additional reading||Assignment out||Assignment due|
Homework will consist of programming assignments. You are encouraged to work on the programming assignments with your classmates.
In general, no late assignments are accepted. However, you have two grace days for the entire semester. That means you can be late by one day for two assignments, or use the two days up for one assignment.
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!
Where are the assignments?
All assignments are posted on the schedule
Honor Code 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\%.