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.
Labs
Lab attendance, participation, and in-lab quizzes will account for
approximately 10% of your final grade.
Assignments