CS152: Compiler Design

Instructor: Betul Buyukkurt, abuyukku@cs.ucr.edu, (951) 827-2373
Lecture: Monday, Tuesday, Wednesday, Thursday 3:30-5:00 PM EBU-II 141
Office hours: Monday, Wednesday, Thursday 11:30-12:30 PM EBU II 407 or by appointment.

TA: An Nguyen, nguyena@cs.ucr.edu
Lab: Monday, Wednesday 6:00 PM-9:00 PM, EBU II 135
Consultations: Monday, Wednesday 4:30PM-6:00PM, (room TBA)

Required Textbook

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

Expected coverage

Selected topics from the first eight chapters.

Important Note: Attendance is required for both labs and lectures. Students are required to read the sections pertaining to the material covered in the class from the textbook preferably prior to class meetings.

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

A class mailing list cs152@lists.cs.ucr.edu is 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. Yet,there will be a midterm and a comprehensive final exam. Approximate weights assigned to them will be as follows:

Quizzes, homework and lab assignments 10%
5 programming assignments 60%
One midterm 15%
One comprehensive final 15%

Quizzes, homework and lab assignments: Attendance is required for both lectures and labs. Pop-up quizzes may be given during lectures with no make-ups. Each lab meeting will have a lab exercise that is to be completed during the lab. Make sure you get your work checked off with the TA at the end of each lab meeting.

Programming assignments: Five relatively complex programming assignments will be given in Java. The assignments will be progressively more complex with the final project resulting in an implementation of an interpreter 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://fish.cs.ucr.edu/radmin. The turnin program always keeps the most recent version of the program submitted.

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.

Midterm: Midterm is on Wednesday, July 12. Topics included in the midterm are chapters 1-3 from the textbook as well as all material discussed and covered in class. As a study guide here is quiz 1.

Comprehensive Final: is on Friday, July 28. Topics include all material discussed and covered during lectures and labs. As a study guide here is the midterm and quiz 2.

Policy on Cheating and Student Collaboration

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.


Welcome to the Class!

Labs

Assignments