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:
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: 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.