|Lecture:||Mondays, 7:10-9:00pm, CIWW 202|
|Instructors:||Kristoffer H. Rose (firstname.lastname@example.org) with Eva Rose|
|Instructors's office hours:||Mondays 6:00-7:00pm, Room CIWW 328, or by appointment|
|Prerequisites:||G22.1170 (algorithms), G22.2110 (programming languages), and G22.2250 (operating systems)|
Compilers: Principles, Techniques, and Tools (2nd Edition), aka the |
by Aho/Lam/Sethi/Ullman. Addison-Wesley, 2007.
|Grader's office hours:||Wednesday 5:30-6:30pm, 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
(second edition) as the text book. In the semester-long programming
project, we will implement a fully functional compiler for a simple
programming language. The implementation will use a custom NYU
version of the compiler-generator infrastructure
CRSX, called HACS.
There are homework assignments most weeks. These test your understanding of material beyond the immediate hands-on knowledge needed for the project. Each homework assignment is made available at the lecture one week before it is due.
There are project milestones every 2-3 weeks, which involve a substantial amount of programming. Project milestones are made available two weeks before their due date. Each milestone builds on code from the previous milestone; reference code will be made available before each milestone as an alternative to your own code from the previous stage.
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.
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.
Here is the schedule. Each lecture links to the slides for that
lecture, as they become available. Each homework and project milestone
deliverable is linked from the due week. Paragraph
references are to the dragon book, except
H references that
refer to sections of the hacs-gently.pdf document provided
|Date||Lecture topic||Reading||Homework due||Project milestone due|
|Mon 1/27||Introduction||1.1-1.2 (12p), H1|
|Mon 2/3||Lexical analysis||3.1-3.6 (43p), H2||hw1 (solutions)|
|Mon 2/10||Top-down syntax analysis||2.4 + 4.1-4.4 (50p), H3||hw2 (solutions)|
|Mon 2/17||Presidents Day||—||hw3 (solutions)|
|Mon 2/24||Syntax-directed translation (SDT)||2.3 + 2.5 + 5.1-5.3 (37p), H4||—||pr1: Parser, tests (zip), solution|
|Mon 3/3||Name analysis||1.6 + 2.7 (15p), H5+H6||hw4 (solutions)|
|Mon 3/10||Type analysis||6.3 + 6.5 (20p)||hw5 (solutions)|
|Mon 3/17||Spring Recess||—||—|
|Mon 3/24||Intermediate code generation||6.1, 6.2, 6.4, 6.6, 6.9 (34p), H7+8||hw6 (solutions)|
|Mon 3/31||Midterm exam||—||—|
|Mon 4/7||Runtime environments (extra slides)||7.1-7.4 (36p)||—|
|Mon 4/14||Code generation||8.1-8.4 + 8.6 (34p)||hw7|
|Mon 4/21||Register allocation||8.8 (5p)||hw8||pr2: Analyzer (pr2-base.hx)|
|Mon 4/28||Optimization||8.5 + 8.7 (13p)||hw9|
|Mon 5/5||Bottom-up syntax analysis||4.5 + 4.8 (17p)||hw10|
|Mon 5/12||Final exam||—||—||pr3: Code Generator|
|The Dragon book, 2nd edition:||http://dragonbook.stanford.edu/|
|Introduction to ARM Subset:||Not Yet Available|
|ARM Instruction Set Summary:||http://ozark.hendrix.edu/~burch/cs/230/arm-ref.pdf|
|ARM Calling Conventions:||http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf|
|Useful ARM Reference Manual:||https://www.scss.tcd.ie/john.waldron/3d1/arm_arm.pdf|
|Machines at Courant:||http://cims.nyu.edu/webapps/content/systems/resources/computeservers|
|Graduate cs.nyu.edu courses:||http://cs.nyu.edu/webapps/spring2014/Graduate/courses|
|Graduate cs.nyu.edu calendar:||http://cs.nyu.edu/webapps/Graduate/calendar|
|Previous Incarnations:||Fall'13 (Martin Hirzel and Kristoffer Rose), Spring'13 (Hubertus Franke), Fall'12 (Mohamed Zahran), Fall'11 (Martin Hirzel), Spring'09 (Allan Gottlieb)|
|Academic integrity policy:||http://cs.nyu.edu/web/Academic/Graduate/academic_integrity.html|