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 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 We will study the following program analysis techniques Several well-known examples showing the application of these analyses will be discussed, which include, but are not limited to, the following: 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

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.