uci > ics > franz > teaching > fall 2007> ics 142a

ICS 142A: Compilers & Interpreters

Prof. Dr. Michael Franz / Dr. Andreas Gal

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 3.30-4.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 12th, at noon (no exceptions). The results of Quiz 1 will be out at that time.
  • There will be four in-class quizzes on Oct 9th, Oct 23rd, Nov 6th, and Nov 20th.
  • The final exam will be held on Tuesday, December 11th, 4.00-6.00pm in CS 174
  • Instructor's office hours: Tuesdays 11.00-12noon in CS1 building, suite 444.
  • Bulletin board: read the ics.142a board on EEE.
  • Read your ICS email! All email sent to your ICS account will be considered read after 3 working days.

Class Handouts

Teaching Assistants

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.

last update: 19th November 2007 - franz@uci.edu