CS 502 Web Server
CS 502: Compiling and Programming Systems
Instructor :
Professor Zhiyuan Li
Refer to School Update
Home
page of the course:
In addition to 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?
The first part of the course will be an overview of the "front end" of the compiler and basic mechanism for code generation , including the following components:
- Lexical analysis
- Examples of context free grammars
- Syntax analysis
- top-down parsing
- bottom-up parsing
- Abstract syntax tree
- Basic type checking
- Symbol tables
- intermediate code format and generation
- machine code generation
- garbage collection
- code generation for programs written in object-oriented languages.
The first programming project will deal with the internal representation of the program at the source level.
The second part of the course gives more in depth coverage of
the fundamental program analysis techniques
commonly used by compilers and software engineering tools, which include,
but not limited to,
the following:
- Control flow and control dependence
- Data flow and data dependence analysis
- Interprocedural analysis
- Pointer analysis
- How such analyses are applied to program transformations for better performance and to enhancement of software reliability
Attempt will be made to give students a sense of the state of the art concerning program analysis.
The second programming project will be designed to give students an opportunity to practice such analysis techniques.
Examples will be presented to illustrate the use of such analysis algorithms for code improvement. Most of such examples are related to "optimization options"
offered by production compilers. The discussion will put more emphasis on
breadth coverage than depth, with the main objective being that students be able to understand the impact of enabling such options.
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 a midterm and a final exam (dates and places
to be announced when the room is scheduled by the central scheduling office).
Written Assignments
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.
Programming Assignments
The afore-mentioned two programming projects will be implemented in the framework of a widely used "real" compiler, such as GCC.
In addition to these projects, small programming assignments will be given in order to practice the use of tools for building lexical analyzer (Lex) and for parsing (YACC/Bison).
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 for copying) for the first time
will receive zero point for the particular assignment or for the entire course,
depending on the severity of the offense.
A second offense will automatically result in a failing grade
for the entire course.
Students will be required to sign this form agreeing to this policy. The form will be submitted to the instructor.
Textbook
The following book is our required text:
Compilers: Principles, Techniques, and Tools (Second Edition)
A Aho & M. Lam & Sethi & Ullman
Addison-Wesley
978-032-148681-3
Articles from the compiler literature may be introduced to augment the required textbook.
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 a part% 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.