CPSC 466 Compiler Design
Spring 2005

Instructor: Dr. Deborah Whitfield Voice Mail/ Phone: (724) 738-2935
Office Hours: MWF 10:00 – 11:40 E-Mail: deborah.whitfield@sru.edu
Office: Maltby 106A http://granite.sru.edu/~whit

Required Text: Crafting a Compiler with C by Charles Fischer and Richard LeBlanc, Jr.
Suggested Text: A text on C or C++. New C Primer Plus by Waite and Prata

Course Objectives: To understand the principles of compiler design. This goal will be achieved by introducing compiler design and implementation techniques and theory, reading current compiler development literature, and discussing the design and implementation of components of a compiler. This course will emphasize the implementation of a compiler through the development of a large, complex, well-structured software system that implements phases of a compiler such as the scanner, parser, and code generator. An interpreter will be implemented to test the compiler and simulate the run-time environment. Additionally, students will be able to describe the design of a compiler including its phases and components, describe current developments in compiler design and implementation, identify similarities and differences among various parsing techniques, and transform grammars into parsable forms. Prerequisites: CpSc 374, 376, 378 (3 credits)

The departmental learning outcomes that a student will acquire from this course are Problem Solving, Communication, and Critical Thinking.

    By the end of the semester, the student will be able to:
  1. describe the design of a compiler including its phases and components
  2. develop a large, complex, but well-structured software system that implements various phases of a compiler such as the scanner, parser, code generator, and optimizer
  3. work with peers on a group project
  4. describe current developments in compiler design and implementation
  5. identify the similarities and differences among various parsing techniques
  6. transform grammars into parsable forms
  7. describe the role of the compiler in ensuring the security, privacy and integrity of data

Click for departmental course outline and course objectives.
Course Grade
The course grade will be based upon the grades from 3 exams, 1 individual programming assignments, a semester long group project, short assignments and quizzes. The following is a tentative point assignment for the course.
Assignment 1: 30
Exam 1: 50
Exam 2: 100
Exam 3 : 100
Project 250
Quizzes, ... 30

The final grade is calculated by adding the number of points that the student earned divided by the total number of possible points. The final grade will be based on the scale:
100 to 90% -- A
89 to 80% -- B
79 to 70% -- C
69 to 60% -- D
59% and below – F
The instructor may change this scale to benefit the students.

Academic Integrity: All work in this class will be the sole effort of the individual student. Cheating in any form will automatically result in a 0 and may result in failure of the course.

Assignments are due at the beginning of class on the due day. Printer problems, lost data, lost programs, etc., are not excuses for late work. Late assignments will be given a grade of 0. However, all assignments must be submitted. Failure to submit an assignment will result in failure of the course.

Attendance: You are expected to attend every minute of every class session. If you miss a class or portion of a class it is your responsibility to determine what was missed.
There are no makeups given for exams or quizzes unless a valid documented absence is provided. Please note that the health center will not provide excuses. If you are seen at the health center, they will tell you if your illness necessitates missing class. With your permission, the health center will report their recommendation to me when I call.

Course Project: The course project will consist of the implementation of a compiler. The project will consist of 4 phases and be completed by teams of students. Each team will hand in the completed project along with a description of each team member's contribution.

Phase 1: Lexical Analyzer - 30 pts
Phase 2: Parser- 50 pts
Phase 3: Intermediate Code Generator - 120 pts
Phase 4: Interpreter - 50 pts

Exam 3: The third exam is scheduled during finals week: Wednesday, May 4th from 2:00-4:00 pm.

Office hours are on a first come first serve basis. If you have problems getting in to see me, you may make an appointment with me. I prefer not to make appointments during office hours with the exception of during registration.
If at anytime through the semester you need to make an appointment with me, please call me or send me e-mail (with your available times).