CSC 467
Fall 2005
Staff
Professor: Andreas Veneris
Office: 2001 Sandford Fleming Building
946-3062
Email:
veneris@eecg.toronto.edu
Office Hours: TBA
Secretary: Rosa Esteireiro
Office: 2001 Sandford Fleming Building
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:
- Chapters 1--2 (Intro to Compiler Design)
- Chapters 3--4 (Elementary
theory of regular and context-free languages. Finite-state
automata. Using finite-state machines to build lexical
analyzers. LR parsing and ambiguity)
- Chapters 5--6 (Syntax Directed Translation and Type
Checking. Bottom-up and top-down translation of
attributes. Symbol tables)
- Chapters 7--9 (Run--Time Environments. Lexical binding and activation
records. Static links/dynamic links/displays. Garbage collection.
Code generation and intro to code optimization)
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:
- a description of which member of your team was
responsible for each part of the work
- well written documentation for the work you did on the
assignment. Documentation will worth at least
15% of the mark for each assignment.
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.