|
|
Name |
Office |
|
Office Hours |
|
Professor |
|
6407 SENSQ |
mock AT cs DOT pitt DOT edu |
MW |
|
TA |
Rupa Natarajan |
6406 SENSQ |
rnataraj AT cs DOT pitt DOT edu |
TH |
Time and Place:
|
Lectures |
MW |
|
5129 SENSQ |
The implementation of high level programming
languages. We will cover the structure of compilers, lexical,
syntactic
and semantic analysis. After covering the basics, the main focus will
be
dataflow analysis and program optimization. We will learn about code
generation
for modern architectures, including some backend optimizations such as
register
allocation and code scheduling. Run-time issues, such as memory
allocation are another
topic you will learn about in this class.
See syllabus for
more
details.
CS1621 Structure of Programming Languages or
equivalent
course or consent of instructor. This
course
requires some programming experience and some basic knowledge of
assembly
language.
If you are unsure
whether you
meet these requirements, talk to the instructor.
|
Required |
|
Recommended
|
A. Aho, R. Sethi, and J. D. Ullman: "Compilers: Principles, Techniques, and Tools", 2nd edition, Addison-Wesley, 1986.
|
|
Reference |
Robert Morgan: Building an Optimizing Compiler, Digital Press, 1998.
|
We will also use a few research papers, which will be distributed in class. The reference and recommended textbooks are on reserve in the Library.
The class home page for the course is http://www.cs.pitt.edu/~mock/cs2210/. All course handouts, answers to frequently asked questions, lecture notes, and updates on assignments will be posted. Please check the home page and mailing list regularly for important course information. Students are responsible for changes to assignments posted on the home page.
There will be a number of written assignments.
The course project consists of five programming assignments. Four of the assignments form the components of compiler. The project is to be done individually. Discussion with other members in the class and the TA is encouraged but each student must do the design of the programs and the coding individually. The programs are to be written in Java. We will be using some code that has been written for the compiler project and some commercial software. Start the programming assignments early! Completing the course project is a large, complex, and rewarding task, which is made much easier by giving adequate forethought to design. The course schedule allows sample time to complete the assignments if started on time -- take advantage of it. The project components are assigned in roughly increasing order of size and difficulty; proportionately more time is allotted for the later assignments. Later assignments will be weighted more heavily in the final grade. Programs will be evaluated for correctness, organization, and documentation.
Documentation and structuring should be incorporated into programs from the beginning. Neither the instructor nor the teaching assistant will help with incomprehensible programs.
No late assignments will be accepted.
There will be one midterm examination and final. Both exams will be closed book exams. The date for the midterm is Wednesday, October 8. The date for the final exam is Wednesday, December 11. There will be no make-up or early exams given so please plan your schedule accordingly.
Your grade will depend on your performance in the
course---theres
no predetermined curve. It is impossible to pass the course without
doing the
programming assignments. The relative weight of the components of your
grade
will be approximately:
|
Written
assignments & participation |
20 % |
|
Course project (5 parts) |
35 % |
|
Project 1 |
3 % |
|
Project 2 |
6 % |
|
Project 3 |
6 % |
|
Project 4 |
10 % |
|
Project 5 |
10 % |
|
Midterm |
20 % |
|
Final |
25 % |
It is expected that all students understand University policies on academic honesty. Cheating on assignments or exams is very serious and will not be tolerated in this class. Evidence of cheating will result in serious actions.
Most homework and programming assignments will have especially
designated
problems marked A. If you want to get an A or A- in class, you have
to solve(a
significant fraction of) them.
The material presented in class will correspond roughly but not exactly to the material covered in the readings. The assigned readings will be updated as the term progresses.
In addition to being passed out in class, handouts
will be
available on-line on the class home page. Lecture notes will also be
available
on the web page by
Important Dates - 2003
Monday, August 30 - First day of class
Monday, October 11 - Midterm exam (tentatively)
Friday, October 29- Last day to withdraw from course
Monday, December 13 - Last day of class
Wednesday, December 15- Final exam