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 semantic analysis, and a code generator.
Specifically, the course will follow the Dragon Book 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 the compiler-generator tool HACS (part of the open source industrial strength CRSX project).
Class Code: CSCI-GA.2130-001
Lectures: Thursdays, 5:10-7:00pm, CIWW 305
Instructor Office Hours: Thursdays, 4-5pm, CIWW 328, by appointment (made before noon)
Grader: Daniel Zhang (firstname.lastname@example.org )
Grader Office Hours: TBA
Announcements: See NYU classes announcement section
Here is the schedule. Each lecture, homework set, and project, links to the appropriate required reading, as it become available. Paragraph references are to the three required readings:
MinARM32 specification; sections in this document are refererred to as
Note that the contents of every provided link is subject to change up to end of the day of the lecture it is associated with.
|Date||Lecture Topic||Reading||Homework||Project Milestone|
Homework There are homework assignments most weeks (the schedule indicates when homework is assigned). These test your understanding of material beyond the immediate hands-on knowledge needed for the project. Each homework assignment is made available after the appropriate lecture, and must be submitted into the NYUClasses system before the specified deadline in the morning of the day of the subsequent lecture at 9am.
Project There are project milestones, which involve a substantial amount of programming (the schedule indicates when they are assigned) as well as documentation requirements. Each milestone builds on code from the previous milestone, however, reference code will be made available before each as an alternative to your own code from the previous stage. Project milestones must be submitted into the NYUClasses system no later than the specified due date at 9am.
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, as we will test the code there.
Exams 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.
Note: The grading %s are under revision so the following is preliminary.
Final grades will be calculated to 15% from homeworks, 45% from the project, 15% from the midterm exam, and 25% from the final exam.
Machines at Courant: http://cims.nyu.edu/webapps/content/systems/resources/computeservers
Graduate cs.nyu.edu Courses: http://cs.nyu.edu/webapps/fall2017/Graduate/courses
Graduate cs.nyu.edu Calendar: http://cs.nyu.edu/webapps/Graduate/calendar
Academic Integrity Policy: http://cs.nyu.edu/web/Academic/Graduate/academic_integrity.html
Design Copyright © 2017 Sofus Rose. Some Rights Reserved (CC-SA-4.0).