General Information
Announcements
- 1.
Course website and Sakai group open (COMPILERS 01 Sp16). Please post questions regarding the class using the Forum in our Sakai group.
- 2.
Last lecture notes posted.
- 3.
Project 3 deadline extended to Saturday 4/30, 11:59pm EDT.
| Instructor | Zheng Zhang (eddy.zhengzhang@cs.rutgers.edu) | |
|---|---|---|
| Office: CORE 310 | ||
| Office hours: Thu, 3:30-4:30pm | ||
| TAs | Shaohua Duan (compiler.ru.spring.16@gmail.com) | Vahid Azizi (compiler.ru.spring.16@gmail.com) |
| Office: Hill 202 | Office: Hill 204 | |
| Office hours: Friday 1:30 pm to 2:30 pm | Office hours: Wednesday 5:00 pm to 6:00 pm | |
| Location | SEC 212 | |
| Time | Tuesdays, Thursdays 1:40pm - 3:00pm |
| Textbook | Required: Keith Cooper and Linda Torczon , "Engineering a Compiler, Second Edition (2011)" (EAC) |
|---|---|
| Publisher: Morgan Kaufmann (Elsevier), ISBN-10: 012088478X ISBN-13: 978-0120884780 | |
| Recommended: Aho, Lam, Sethi, Ullman (ALSU) (New Dragon Book), " Compilers: Principles, Techniques, and Tools 2 /E (2007) " | |
| Publisher: Addison-Wesley, ISBN10: 0321486811, ISBN13: 9780321486813 |
Course Description
This course covers the general concepts and theoretical foundations of programming language translation and implementation, as well as tools and techniques for the practice of compiler constructions. Emphasis is placed on imperative languages. Topics include parsing, run-time storage management, error recovery, code generation, and optimization. This course will also discuss some advanced topics in optimization techniques such as automatic parallelization/vectorization and data locality analysis.
Homework and Project Questions
Please post questions regarding homeworks and projects using Rutgers's Sakai system. Select Forums in our course group (COMPILERS 01 Sp16). DO NOT send homework or project questions directly to the TA or me.
Schedule (Tentative)
| Date | Topic | Reading | Notes |
|---|---|---|---|
| 01/19 | Overview and Introduction | EAC Chapter 1 | [pdf] |
| 01/21 | Register Allocation (Top-down) | EAC Chapter 13.1 - 13.3 | [pdf] |
| 01/26 | Register Allocation (Bottom-up) | EAC Chapter 13.1 - 13.3 | [pdf] |
| 01/28 | Instruction Scheduling | EAC Chapter 12.1 - 12.3 | [pdf] |
| 02/02 | Lexical Analysis I | EAC Chapter 2.1 - 2.5 | [pdf] |
| 02/04 | Lexical Analysis II | EAC Chapter 2.1 - 2.5 | [pdf] |
| 02/09 | Lexical Analysis III | EAC Chapter 3.1 - 3.3 | [pdf] |
| 02/11 | Syntax Analysis I (Top Down Parsing) | EAC Chapter 3.1 - 3.3 | [pdf] |
| 02/18 | Syntax Analysis II (Top Down Parsing) | EAC Chapter 3.1 - 3.3 | [pdf] |
| 02/23 | Syntax Analysis III (Top Down Parsing) | EAC Chapter 3.1 - 3.3 | [pdf] |
| 03/01 | Syntax Analysis IV (Top Down Parsing & Bottom Up Parsing) | EAC Chapter 3.4 | [pdf] |
| 03/03 | Syntax Analysis V (Bottom Up Parsing) | EAC Chapter 3.4 | [pdf] |
| 03/08 | Midterm Exam | ||
| 03/10 | Syntax Analysis VI (Bottom Up Parsing) | EAC Chapter 3.4 | [pdf] |
| 03/22 | Syntax Analysis VII (Bottom Up Parsing) | EAC Chapter 3.4 | [pdf] |
| 03/24 | Syntax Analysis VIII (Bottom Up Parsing) | EAC Chapter 3.4 | [pdf] |
| 03/29 | Context Sensitive Analysis I (Attribute Grammar) | EAC Chapter 4.3 | [pdf] |
| 03/31 | Context Sensitive Analysis II (Syntax Directed Translation) | EAC Chapter 4.3 | [pdf] |
| 04/05 | Typing, Symbol Table and Intermediate Representation | EAC Chapter 4.3, 5.1 - 5.3 | [pdf] |
| 04/07 | Code Generation I | EAC Chapter 5.1 - 5.3, 7.1 - 7.5 | [pdf] |
| 04/12 | Code Generation II | EAC Chapter 5.1 - 5.3, 7.1 - 7.5 | [pdf] |
| 04/14 | Code Generation III | EAC Chapter 5.1 - 5.3, 7.1 - 7.5 | [pdf] |
| 04/19 | Dataflow Analysis | EAC Chapter 9.1 - 9.3 | [pdf] |
| 04/21 | Procedure Abstraction | EAC Chapter 6.2, 6.4 - 6.6 | [pdf] |
| 04/26 | Interprocedure Analysis | EAC Chapter 9.4-9.5, ALSU Chapter 12.1 - 12.3 | [pdf] |
| 04/28 | Interprocedure Analysis and CSE Optimization | EAC Chapter 9.4-9.5, ALSU Chapter 12.1 - 12.3 | [pdf] |
Project
There will be three projects in this class. Project 1 is posted.
You will need an ilab account since all projects will require code to run on the ilab machines. You should know how to create and edit files in the Linux environment. All projects have to compile and compile on the ilab machines. It is your responsibility to make sure that your code works correctly on the ilab machines. Code that does not compile and/or run on the ilab cluster will not receive any credit.
- ● Project 1 Instruction Scheduling
Due date: Wednesday 2/24/2016 (code) and Friday 2/26 (report) 11:59pm EST
- ● Project 2 A Pascal Subset Front End
Due date: Wednesday 4/20/2016 11:59pm EDT.
- ● Project 3 A Pascal Subset Code Generator
Due date: Thursday 4/28/2016 11:59pm EDT.
Please use SAKAI to submit your project.