CS 160 @ UCSB

Translation of Programming Languages

This course is intended to provide understanding of fundamental concepts in compiler design and implementation. Compilers are ubiquitous in the Computer Science field, especially in an era where programmers use many languages and a single language does not dominate.

Catalog Description: Study of the structure of compilers. Topics include: lexical analysis; syntax analysis including LL and LR parsers; type checking; run-time environments; intermediate code generation; and compiler-construction tools.


  • Two problem sets are posted to help you prepare for the midterm.
  • Project 3 is posted and it is due April 28th.
  • Midterm exam will be on May 4, Thursday, in class (9:30 AM to 10:45 AM)
  • Final exam will be on June 13, Tuesday, 8:00 AM to 11:00 AM
  • Project 2 is posted and it is due April 20th.
  • Project 1 is posted and it is due April 11th.


We will use Piazza for the course this quarter. We will post important announcements and answer questions there, and it is important that you join as soon as possible. You cannot receive any points for Project 1 unless you join the course on Piazza.

You can find the course on Piazza at: https:piazza.com/ucsb/spring2017/cs160.

Practice Problems

You can use the problems below as part of your preparation for the midterm exam.

Reading Assignments

  • Weeks 3 and 4: Read sections 3.4, 3.5, 3.6, 3.7 from the textbook
  • Week 2: Read sections 3.1, 3.2 and 3.3 from the textbook
  • Week 1: Read Chapters 1 and 2 from the textbook


If you have any questions that are NOT specific to your code for your project solutions, please post them on Piazza so that the whole class has the opportunity to hear the answer.

Questions that include your specific solution should be sent to the TA.

ProfessorTevfik Bultan
Office:HFH 2123
Hours: Tuesdays, Thursdays 11:00AM - 12:00PM
TASeemanta Saha
Office:Trailer 936, 103-104
Hours: Monday & Wednesday 10:00 AM - 11:00 AM

Course Details

Lectures are Tuesday and Thursday at 9:30-10:45 in BRDA 1640.

Discussion sections are Friday at 10:00-10:50 in GIRV 1115.

Attendance to lectures and discussion sections is important and an immensely valuable resource to succeed in the course.


The coursework will be reading assignments from the textbook, 6 projects, 1 midterm exam, and 1 final exam.


The grade breakdown will be 25% midterm, 25% final and 50% projects. For the projects, the grade breakdown is as follows: 5% Project 1, 15% Project 2, 15% Project 3, 20% Project 4, 22.5% Project 5, 22.5% Project 6.


The textbook for the course is Engineering a Compiler, 2nd Edition (9780120884780) by Keith Cooper and Linda Torczon. You can find it at the bookstore or on Amazon.

Late Policy

Each student will have 4 "slip days" to use over the quarter. Using a slip day allows one project to be turned in up to 24 hours after the deadline. Slip days are automatically applied by the TAs upon late assignment submission. Slip days can only be used in 24 hour increments: turning in an assignment 30 minutes late uses a slip day. If all slip days are expended, a late assignment will not be accepted.

Academic Honesty

Each student is responsible for their own work, and is expected to complete the assignment without collaborating with anyone else. High-level discussion of the concepts without anything specific to an assignment is OK. Talking specifically about the solution to an assignment or sharing code is NOT OK. Violation of this policy can lead to an F on the assignment or, in extreme cases, an F for the entire course. When in doubt, refer questions to the professor or a TA.