Course Overview
This course is an introduction to compiler construction (of which interpreters
are a special case). After giving an overview of the theoretical foundations
of artificial languages, we focus on syntax-directed translators for
such languages, discussing lexical analysis, syntax analysis, type
checking, and
code generation. In complementary programming exercises, students gain
some practical insights.
This particular installment of the course will use Microsoft’s
"DotNet" platform
as the target of compilation. The additional skills you learn this
way will look good on your resume; however, this is going to be a
difficult class
and there is not textbook. An "easier" version of the course
will be taught in another quarter.
Motivation
Compilers convert program texts into executable code. Hence, they constitute
the bridge between software and hardware. Understanding the basics of this
translation process gives the computer scientist a deeper knowledge that
is often beneficial in day-to-day software design situations. Some elements
of a compiler's internal structure also crop up in other contexts; for example,
many modern security mechanisms, such as firewalls, contain parsing mechanisms
similar to those in a compiler. Hence, the knowledge acquired in this course
may be put to surprisingly many
uses.
Logistics
- Class meets Tuesday & Thursday from 9.30-10.50 in CS 174.
- Discussion section meets only when required; read
bulletin board for actual schedule. You can attend any discussion
section you like (or all of them) and don't need to go to the one
that you are enrolled for.
- The lab sections are merely a "placeholder" during which the lab is reserved
for attendees of this class. You don't need to be there in person
at that time, and no TA will be present.
- Last day to drop class: Friday, October 13th, at noon (no exceptions).
The results of Quiz 1 will be out at that time.
- There will be four in-class quizzes on Oct 5th, Oct 19th, Nov
7th, and Nov 21st.
- The final exam will be held on Thursday, December 7th, 8.00-10.00 in
CS 174
- Instructor's office hours: Tuesdays 11.00-12noon
in CSE building, room 101. CSE is the blue building
on the outer side of the ring road, across from ICS2. The entrance
you should use to get to Prof. Franz' office is the one facing Engineering,
not the one facing the University Club. That door will be wedged
open duing office hours.
- Bulletin board: newsgroup ics.142.
- Read your ICS email! All email sent
to your ICS account will be considered read after 3 working days.
Class Handouts
Teaching Assistant
Course Grade
Each of 4 in-class quizzes contributes 10% to the final grade, the highest
4 scores out of 5 programming assignments will contribute 10% each, and the
final exam will contribute another 20%. The lowest of your homework scores
will be dropped.
In practice, we will give you a score between 0 and 1000 points.
Each quiz counts for 100 points, each homework (except for the
dropped one) counts
for 100 points, and the final exam for 200 points.
The class will be graded on a curve, i.e. you
will be graded relative to your classmates.
In-Class Quiz
The 4 in-class quizzes will be closed-book exams. Since the classroom is
occupied by another class immediately afterwards, it is imperative
that you show up on time. Please make sure you bring your ID and a permanently
marking
pen. If you use a pencil for the exam, you will not be allowed to claim
grading errors later.
Programming Homework
- Each homework is due in class on the date posted
on the homework handout. Late homework loses 30% per day.
- You MUST simultaneously also
submit it electronically. This electronic version will be maintained
in our plagiarism detection database. Similar programs that have
been flagged by the plagiarism detector will be scrutinized by hand
and if cheating is detected, ALL students involved will be punished.
- Re-grades must be requested within one week of the posting of that
grade. The entire assignment will be re-graded and the new score,
which may be higher or lower, will replace the original one.
Textbooks
There are no recommended textbooks for this course; almost all available
textbooks on compiler construction are hopelessly outdated. If you
absolutely think you need a book on compiler construction, I would recommend
the book “Engineering
A Compiler” by Keith Cooper and Linda Torcson. However, I want to stress
again that you are NOT expected to buy this book, and you will not
be at a disadvantage with respect to the examinations if you don't.
Simply attend
and follow the lecture and you will be fine.
Most students will be much better off without looking into any book
on compiler construction at all. Compiler construction is such a
vast field that any course by necessity must pick some aspects
and leave out others.
If you are using a textbook that presents other material than I am
presenting in class, you may get confused and actually be worse
off than if you weren’t
using any book at all. |