CS 415 Compilers

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.