CSC 467

Fall 2005


Staff

Professor: Andreas Veneris
Office: 2001 Sandford Fleming Building
Phone Number 946-3062
Email: veneris@eecg.toronto.edu
Office Hours: TBA

Secretary: Rosa Esteireiro
Office: 2001 Sandford Fleming Building
Phone Number 978-4760
Email: rosa.esteireiro@utoronto.ca
Office Hours: Generally in the office during business hours.

Teaching Assistants:

Lecture and Tutorial Schedule

Class meets every Monday 3:00-4:00pm at room WB-119 and Thursday, 2:00-3:00pm at room WB-119. Tutorial session meets every Friday 1:00-2:00pm at room BA-2155.

Tutorials will concentrate on problem solving and project related issues. Problem solving will serve as a preparation for the exams. You are strongly encouraged to attend all tutorials.

Textbook

Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman. Compilers: Principles, Techniques and Tools, Addison Wesley, 1986.

Lecture notes and project/problem solving related tutorials will be available on the WWW.

Prerequisites

You are presumed to have good knowledge of computer architecture and programming languages. Background in operating systems, theory of computation, and experience in programming with C will prove helpful.

Course Contents

We will cover the following parts of the textbook:

Newsgroup and the Webpage

All official announcements will be posted through the ut.ecf.csc467f newsgroup. It's your own responsibility to check the newsgroup at regular intervals, i.e. once per day. Questions on the material (i.e. lectures, exams, project etc) will also be welcome through the newsgroup. No solutions to problems should be posted by students on the newsgroup. Only the instructor and TAs may post solutions. Please do not use this newsgroup for any posts other than those relating to the course.

The WWW page for the class is www.eecg.toronto.edu/~csc467 . In this site you will be able to find all available course information, links to previous exams and solutions, project related handouts and a link to the newsgroup. For those who want them, electronic copies of the transparencies shown in class and in some tutorials will be posted on the web.

There will be almost no physical handouts. Make sure to check the class homepage regularly, and to reload it to ensure you are seeing the most recent version. Virtually every handout will be distributed electronically, and important announcements will be also posted on the main WWW page

Machine Project

There will be 4 phases of a machine project, each of major scope. Deadlines for the different phases of the project and how to handin will be announced at the appropriate time. The project will serve as an application of the theory presented in the lectures on a real machine. In particular, you will build a small compiler for a given version of a simple language. It will be implemented using the scanner generator Flex, the parser generator Bison and C language. It will produce assembly code.

You are allowed to work in groups of 3 to 5 students. It is your own responsibility to inform the teaching assistant about the list of students in your team at least one week before the handin of the first phase of the project. For the machine project you will need to work on the ecf lab machines. If you are engineering major, your account should have been already established. In any case, it is your own responsibility to meet Cathy Malfara ( cathy@ecf.toronto.edu) with your student ID card so that you obtain the proper account.

The teaching assistant will discuss the format of the assignments. For every assignment you should handin:

Reading Assignments

Shortly after each lecture, the instructor will post in the newsgroup a brief summary of the material presented in the lecture and the respective sections covering this material from the textbook. This indicates a reading assignment, i.e. the material that is to be read before the next lecture.

Exams

There will be two comprehensive exams for this class: a 50min midterm and a 2:30hrs final. The exams will be based on material covered in the lectures (i.e., reading assignment), tutorials and the machine project. All exams are open book/lecture notes and you are required to bring some form of valid picture ID. The dates and times of the exams will be announced in the newsgroup.

Grading Policy

The weighting scheme for the class requirements will be as follows:

Project 45%
Midterm Exam 15%
Final Exam 40%


Minor lab downtime will not qualify for project extensions. Nuclear meltdown in the lab might qualify. To protect yourself, keep backups on the lab machines so if your computer crashes, you can recover.

Absence from any exam will result in a zero score unless it is due to an emergency and official documentation is provided. You will need to have a mark of at least 30% on the final exam so that you pass the class.

Cheating Policy

Cheating is against ``fair--play'' and will not be tolerated under any circumstances. While the pressures of many classes, homeworks, work and/or extracurricular activities can be great, this is never an excuse for copying solutions from others. "Helping" somebody by allowing them to "borrow" your work is not doing them a favor either, but indicates your approval and active participation in such activities. The University holds among its highest principles the notion of academic freedom and integrity. If you are caught cheating it may lower your grade or it can even give you a fail grade for the class. If you think that there is an issue that influences your performance in the class then talk to the instructor.

How to Get the Most out of this Course

You are urged to read the text, as it is quite thorough, with many examples worked out, and with good motivating discussions and intuitions. You will be given selected problems from the textbook that best test the material and solutions for these problems will be posted on the WWW and/or worked out during the tutorials.

Read the newsgroup regularly!

Attend the lectures, the office hours and the tutorials.

Understand and do the project as it gives you the basic skills to write a simple compiler. Check the availability from time to time of on-line notes and tutoring material. We hope that some of these will be helpful to you.

Other References

The following textbooks are not required but they can serve as good reference material:

Andrew W. Appel. Modern Compiler Implementation in C , Cambridge University Press, 1997 (the same book exists on two additional editions, Java and ML).

Charles N. Fischer and Richard J. LeBlanc, Jr. Crafting a Compiler , Benjamin/Cummings Publishing, 1991.