General information /
Course Description /
Thursdays 5:10 pm - 7:00 pm, Room WWH 312
Martin Hirzel (email@example.com) and Kristoffer H. Rose (firstname.lastname@example.org)
|Instructors's office hours:||
Thursdays 4:00-5:00, Room CIWW 328, or by appointment
G22.1170 (algorithms), G22.2110 (programming languages), and G22.2250 (operating systems)
Techniques, and Tools (2nd Edition), by Aho/Lam/Sethi/Ullman. Addison Wesley, 2007.
|October 17 guest lecturer:||
Bowen Li (email@example.com)
|Grader's office hours:||
Tuesdays 1:00-2:00, Room CIWW 230
The course description below is quoted from the Graduate
School of Arts and Science Bulletin:
This is a capstone course based on compilers and modern
programming languages. The topics covered include structure of
one-pass and multiple-pass compilers; symbol table management; lexical
analysis; traditional and automated parsing techniques, including
recursive descent and LR parsing; syntax-directed translation and
semantic analysis; run-time storage management; intermediate code
generation; introduction to optimization; and code generation. The
course includes a special compiler-related capstone project, which
ties together concepts of algorithms, theory (formal languages),
programming languages, software engineering, computer architecture,
and other subjects covered in the MS curriculum. This project requires
a substantial semester-long programming effort, such as construction
of a language compilation or translation system that includes lexical
and syntactic analyzers, a type checker, and a code generator.
Specifically, the course will follow the “Dragon Book” (second
edition) as the text book. In the semester-long programming project,
we will implement a fully functional compiler for “Tiger”.
Tiger is a simple statically-typed programming language invented by
Andrew Appel for compiler construction courses. The preferred
compiler-generator infrastructure for implementing the project is CRSX. The project consists of multiple
milestones. Each milestone builds on code from the previous milestone,
and that code will be made available to you at the appropriate time.
You can develop the project on your own machine, but must make sure
that it works on the energon1.cims.nyu.edu to energon4.cims.nyu.edu machines at NYU.
|Date ||Lecture topic
||Reading ||Homework due ||Project milestone due
|Thu 9/5 ||Introduction (MH, KR)
(sample) ||1.1-1.2 (12p)
|Thu 9/12 ||Lexical analysis (MH)
||3.1-3.6 (43p) ||hw1,
|Thu 9/19 ||Top-down syntax analysis (KR)
||4.1-4.4 (42p) ||hw2,
|Thu 9/26 ||Syntax-directed translation (MH)
||2.5 + 5.1-5.3 (28p) ||
||pr1: Lexer and parser Solution (zip)
|Thu 10/3 ||Name analysis (KR)
||1.6 + 2.7 (15p) ||hw3,
|Thu 10/10 ||Type analysis (MH)
||6.5 (12p) ||hw4,
|Thu 10/17 ||Bottom-up syntax analysis (PC)
||4.5 + 4.8 (17p) ||hw5,
|Thu 10/24 ||--Midterm exam (solutions)--
|Thu 10/31 ||Intermediate code generation (KR)
||6.2-6.4 + 6.6 (34p) || ||pr2: Semantic analyzer
|Thu 11/7 ||Runtime environments (MH)
||7.1-7.4 (36p) ||hw7,
|Thu 11/14 ||Code generation (KR)
||8.1-8.4 + 8.6 (34p) || ||
|Thu 11/21 ||Register allocation (MH)
||8.8 (5p) || ||
|Thu 11/28 ||--Thanksgiving recess--
|Thu 12/5 ||Optimization (KR)
||8.5 + 8.7 (13p) || ||pr3: IR generator (pr3.zip, pr3-tests.zip)
|Thu 12/12 ||--Final exam--
|| || ||
Final grades will be calculated to 10% from homeworks,
30% from the project, 20% from the midterm exam, and
40% from the final exam.
- There are homework assignments every week. These test your
understanding of material beyond the immediate hands-on knowledge
needed for the project.
- There are project milestones every 2-3 weeks, which involve
a substantial amount of programming.
- There are two exams: a midterm and a final. The exams
cover similar questions as the homeworks. The final exam is
cumulative, it will cover material from the entire semester.
Please carefully read the CIMS department's academic integrity policy.
- You are encouraged to collaborate on homework assignments and project
milestones. But you must write up and turn in your own answers.
Also, you must clearly indicate who you collaborated with.
- During the midterm and the final exam, you must not use any
reference material, and of course, you must not communicate with
your fellow students.
- If we detect any incidents of cheating, we will report them
immediately to the department.
All homework and project assignments will be due on Fridays at 1pm. To
submit homeworks, log into home.nyu.edu, go to Academic →
NYU Classes → Compiler Construction → Assignments, and
upload your file with answers there. Don't forget to click
“submit” before the deadline, just “upload” is
not enough. The policy for late assignments is as follows:
- If you submit at least 1 minute late, but at most 3 hours
late, you receive 50% of the points for that homework.
- Otherwise, late homeworks or project milestones are only acceptable
if the lateness is caused by circumstances beyond your control,
such as illness or a missed flight.
- In this case, you only get the points for the homework if
you provide official documentation, such as a doctor's
certificate, for the reason why your homework is late.
Points from homeworks and exams
Each row contains the points of all 6 enrolled students, in descending
order by points for that particular row. That means that the same
student might be further left in one row and further right in another,
depending on how well they did on that part of the class.
hw1 24 24 24 24 24
hw2 24 24 23 23 19 17
pr1 100 95 95 95 90 80
hw3 24 24 24 18 13 0
hw4 16 16 16 16 15 14
hw5 24 24 23 23 22 22
midterm 37 34 33 32 30 27 //midterm exam
m-score 93 91 83 83 81 76 //calculated from hw1-hw5, pr1, midterm exam
m-grade A A B B B C //based on m-score
This file was last checked into CVS $Date: 2013/12/06 00:29:55 $ UTC (New York is at UTC-5).