CS 502 Web Server
CS 502: Compiling and Programming Systems
Spring 2009
Instructor :
Professor Zhiyuan Li
Lecture
Schedule:
Home
page of the course:
In addition this this public web page,
students will access course
materials (course policies, lecture notes, grades, assignments, etc)
through Purdue's
WebCT
What Does This Course Cover?
We will first give a quick review of the "front end" of compilers, namely
- Lexical analysis
- Syntax analysis
- Basic type checking
- Abstract syntax tree
- Symbol tables
We will have programming assignments practicing how to
use the Lex and Yacc tools to build a lexical analyzer and a parser.
The parser will implement a particular feature of macro-processing
for the C/C++ language.
We will next have a GCC-based project to get us familiar with
the abstract syntax tree inside the GCC compiler.
We will not have "paper" homeworks for the front-end part of the compiler.
The core materials of the course
are various program analysis techniques
commonly used by compilers and software engineering tools to enable
-
machine code generation,
- code transform to "optimize" certain aspects
of a program, e.g. code size, power-saving, and performance enhancement,
-
reliability and security check, and others
We will study the following program analysis techniques
- Control flow and control dependence
- Data flow and data dependence analysis
- Abstract interpretation of programs
- Program slicing
- Interprocedural analysis
- Pointer analysis
- Program profiling
Several well-known examples showing the application of these analyses
will be discussed, which include, but are not limited to, the following:
- Constant propagation
- Register allocation
- Parallelism and data locality
We will have programming projects that cover these issues.
Breadth versus Depth
We will try to balance breadth against depth.
Since students will come from various background and research interests,
a main emphasis will be on covering wide enough scope to give
them a general idea of this subject.
The core concepts, such as control and data flow analysis, parallelism
and data locality, will be given treatment with considerable depth.
It should also be emphasized that, in such a graduate-level course,
students should not expect a set of recipes fed to them.
Instead, everyone is expected to be actively engaged in grasping
the concepts behind the discussed techniques and the relationship between
various methods.
Exams
We will have an evening midterm and a final exam (dates and places
to be determined by the university).
The exams will be open book and open notes, but no discussions.
Written assignments will, to a certain degree, reflect the style
of the exam questions. Students therefore are strongly advised to
complete them with due diligence.
Academic Integrity
Discussions among the students on the course subject and project designs
are strongly encouraged. However, all written and programming assignments must
be completed independently. Copying from one another is strictly prohibited.
Individuals who break this rule (both those copying and those providing
the work to copy)
will receive zero point for the particular assignment or for the entire course,
depending on the severity of the offense.
Textbook
The following book is highly recommended but not required.
Compilers: Principles, Techniques, and Tools (Second Edition)
A Aho & M. Lam & Sethi & Ullman
Addison-Wesley
978-032-148681-3
The lectures will be based on a set of lecture notes,
but the students are encouraged to read the recommended book
for more examples and exercises.
Grading of CS502
- Midterm 20%
- Final exam 30%
- Programming projects 30%
- Written assignment 20%
Note: This distribution is planned as of May 2008.
If the class size turns out not too big, we may be able, as in some
of the past semesters, to give students opportunities to present
papers for which they will receive part of the grade. (A large class will
make this idea infeasible, however.)
Grades Dispute
If anyone finds the grading of a piece of course work to be questionable,
the issue must be brought to the attention of the TAs as soon as possible
through email, i.e. within the first week from the day the graded work
is returned to the student. This will ensure that the graders still have
clear memory of the entire context in which the grade was assigned.
The Ph.D. Qualifying Exam
Students who wish to take the Compiler qualifying exam
must inform the department office by a certain deadline (to be announced
by the department).
The final exam will be comprehensive, and will be used as the qualifying
exam. The exam will be open book and open notes.
Since the final exam constitutes only 30% of the course work,
it is possible that a student may get a A grade for the course
but fails the qualifying exam or, reversely, may pass the qualifying exam
but receives a below-A grade for the course.