198:415 - Compilers
Announcements
Description
Introduction to compiler construction.
Course contents include the following: Formal translation of programming
languages, program syntax and semantics. Finite state recognizers and
regular grammars. Context-free parsing techniques such as LL(k) and LR(k).
Attribute grammars, syntax-directed translation schema, type checking,
register allocation, instruction selection, code generation,
data flow analysis and code improvement transformations (code optimizations).
There will be at least two programming projects, most likely three
projects.
Staff
- Ulrich (Uli) Kremer
(uli@cs.rutgers.edu)
Office: CoRE 318
Office hours: Tuesday, 2:00pm - 3:00pm, or by appointment
- John McCabe (jomccabe@cs)
Office: CoRE 334
Office hours: TBA
Prerequisites, Lectures and Recitations
211 and 314
lectures : Monday/Wednesday 3:20pm - 4:40pm, Hill 009
(basement)
recitation : Wednesday 5:15pm - 6:10pm, SEC 206
Textbooks
- required (EAC): K. Cooper and L. Torczon: Engineering a
Compiler
Morgan-Kaufmann Publishers, 2004, ISBN 1-55860-698-X
(hardback), ISBN 1-55860-699-8 (paperback)
- recommended (ALSU): Aho, Lam, Sethi and Ullman: Compilers: Principles,
Techniques, and Tools (Dragon Book, Second Edition)
Addison-Wesley, 2007, ISBN 0-321-48681-1
Please read carefully.
Read/Post questions
Please post questions regarding homeworks and projects using
Rutgers's Sakai
system . Select Discussion and Private Messages
in our course group (198:415:01 Sp10).
DO NOT send homework or project
questions directly to John or me. THANKS!
You should read the news group at least every other day!
MIDTERM
There will be one midterm exam.
FINAL EXAM
There will be a final exam.
Lecture Notes
- January 20, 2010 -- Lecture 1
Course overview, what are compilers, why studying compiler design,
front end, back end, middle end, register allocation, instruction scheduling
Reading: EAC Chapter 1
- January 25, 2010 -- Class canceled
- January 27, 2010 -- Lecture 2
Register allocation (top-down)
Reading: EAC Chapters 13.1 - 13.3
- February 1, 2010 -- Lecture 3
Register allocation (top-down)
Reading: EAC Chapters 13.1 - 13.3; Appendix A (ILOC)
- February 3, 2010 -- Lecture 4
Register allocation (bottom-up); introduction to instruction scheduling
Reading: EAC Chapters 12.1 - 12.3
- February 8, 2010 -- Lecture 5
Instruction scheduling, forward list scheduling, precedence
(dependence) graph
Reading: EAC Chapters 12.1 - 12.3
- February 10, 2010 -- Lecture 6
Lexical analysis
Reading: EAC Chapters 2.1 - 2.5
Homeworks
Homeworks must be handed in at the beginning of your
recitation. Here is the source code of a
(partial) ILOC simulator
(tar.gz format). The same simulator is available on the ilab cluster.
- Problem Set 1 . Due date:
Wednesday, February 3, before recitation.
- Problem Set 2 . Due date:
Wednesday, February 10, before recitation.
Projects
For the projects, we use the machines in the ilab cluster.
The ilab cluster page
contains the listing of valid hostnames
available for projects. Be aware that ilab.rutgers.edu,
cereal.rutgers.edu, pasta.rutgers.edu and soup.rutgers.edu are NOT to
be used . Remember to use a type of cereal (trix.rutgers.edu), a type
of pasta (macaroni.rutgers.edu), etc.
You have the
same home directory across all machines of the ilab cluster .
Acknowledgement
This course has been based on courses taught by Keith Cooper at
Rice University and Chau-Wen Tseng at the University of Maryland.