CS152: Compiler Design

Professor: Dr. Teodor C. Przymusinski, (951) 787-5015
Lecture: Monday, Wednesday, Friday 2:00-3:00 PM Sproul Hall 2355
Office hours: Monday, Wednesday, Friday 3:00-4:00 PM Engineering II 419 or by appointment.

TA: Betul Buyukkurt
Lab: Tuesday 11:10 AM-2:00 PM, Engineering II 226
Consultations: Monday 10:30-11:30AM, Wednesday 3:30-4:30PM, Friday 10:30-11:30AM, Room 110 or by appointment in Engineering II 464.

TA: Vladimir Vacic
Lab: Thursday 2:10-5:00 PM, Engineering II 226
Consultations: Tuesday 3:10-4:00PM, Thursday 5:10-6:00PM and Friday 1:10-2:00PM, Engineering II 362 or by appointment.

Required Textbook

Andrew W. Appel, Modern Compiler Implementation in Java, Cambridge University Press.

Expected coverage

Selected topics from the first eight chapters.

Important Note: Students are required to read the sections pertaining to the material covered in the class and familiarize themselves with the relevant exercises. Students are required to attend both the lectures and the lab sections.

Additional Resources

Programming assignments as well as any other required files and resources will be made available through this web page.

Textbook's home page: http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=052182060x

Sun Microsystems NetBeans programming environment, online manuals and help will be installed in Engineering II Building computer labs.

A class mailing list cs152@lists.cs.ucr.edu will be established to disseminate information pertaining to this class. Students should sign up for it at https://www.cs.ucr.edu/mailman/listinfo/cs152

Essential software includes: The /bin directory for JDK needs to be added to the PATH, and the share needs to be added to the CLASSPATH. Since the systems people intend on moving to mandatory profiles, this will be included in the profile for all CS majors.

The tools are used with the command line. The commands:
java java_cup/Main < [input]
java JLex/Main [input]
are used to access the corresponding tools.

Grading Policy

Grading will be based primarily on the programming assignments. There will be no final exam. Approximate weights assigned to them will be as follows:

Quizzes and Lab assignments 10%
Programming assignments (4-5) 90%

Quizzes: Several pop-up quizzes will be given in the lab with no make-ups.

Programming assignments: About 4-5 relatively complex programming assignments will be given in Java. The assignments will be progressively more complex with the final project resulting in a partial implementation of a compiler for MiniJava. They have to run under Sun Microsystems Java 1.5. Students should gather and study in advance manuals and any other materials needed to run simple programs in Java, and, if possible, should practice using the language. Programming assignments are due by the midnight of the date specified and are to be submitted electronically by means of the turnin WWW program available at https://www.cs.ucr.edu.

There will be a 20% penalty for assignments that are late by one day, 50% penalty for a two-day delay and no credit will be given for homework that is more than two days late.

Submitted programs or projects must be developed completely independently by each one of the students. NO COOPERATIION on assigned projects, SHARING OR DISCUSSION of project code is allowed!!! Students violating this policy on cheating will be given a failing grade for the course and their case will be referred to the office of Vice-Chancellor for Student Affairs.

Note: The turnin program always keeps the most recent version of the program submitted.

Welcome to the Class!
PDF version of the syllabus is also available.


Lab attendance, participation, and in-lab quizzes will account for approximately 10% of your final grade.