CS 2210 COURSE INFORMATION

Fall 2004

Class web page: http://www.cs.pitt.edu/~mock/cs2210/
Class mailing list: cs2210 AT cs DOT pitt DOT edu

Course Agenda(day by day)

Course Syllabus(PDF)

Practice Midterm

Review Sheet


Instructor & T.A.:

 

Name

Office

Email 

Office Hours

Professor

Markus U. Mock

6407 SENSQ

mock AT cs DOT pitt DOT edu

MW  4:00 – 5:00 and by arrangement

TA

Rupa Natarajan

6406 SENSQ

rnataraj AT cs DOT pitt DOT edu

TH  2:00 – 3:00 and by arrangement

Time and Place:
 

Lectures

MW 

2:30-3:45

5129 SENSQ

Course description:

The implementation of high level programming languages. We will cover the structure of compilers, lexical, syntactic and semantic analysis. After covering the basics, the main focus will be dataflow analysis and program optimization. We will learn about code generation for modern architectures, including some backend optimizations such as register allocation and code scheduling. Run-time issues, such as memory allocation are another topic you will learn about in this class.

See syllabus for more details.

Course prerequisites:

CS1621 Structure of Programming Languages or equivalent course or consent of instructor. This course requires some programming experience and some basic knowledge of assembly language.

If you are unsure whether you meet these requirements, talk to the instructor.
 

Textbooks:

Required


Steven S. Muchnick: “Advanced Compiler Design and Implementation
”, 1st edition, 3rd printing, Morgan Kaufmann Publishers 1997.

 

Recommended

A. Aho, R. Sethi, and J. D. Ullman: "Compilers: Principles, Techniques, and Tools", 2nd edition, Addison-Wesley, 1986.

 

Reference

Robert Morgan: “Building an Optimizing Compiler”, Digital Press, 1998.

 

We will also use a few research papers, which will be distributed in class. The reference and recommended textbooks are on reserve in the Library.

Home Page:

The class home page for the course is http://www.cs.pitt.edu/~mock/cs2210/. All course handouts, answers to frequently asked questions, lecture notes, and updates on assignments will be posted. Please check the home page and mailing list regularly for important course information. Students are responsible for changes to assignments posted on the home page.

Written Assignments:

There will be a number of written assignments.

Programming Project:

The course project consists of five programming assignments. Four of the assignments form the components of compiler.  The project is to be done individually.  Discussion with other members in the class and the TA is encouraged but each student must do the design of the programs and the coding individually.  The programs are to be written in Java.  We will be using some code that has been written for the compiler project and some commercial software.  Start the programming assignments early! Completing the course project is a large, complex, and rewarding task, which is made much easier by giving adequate forethought to design. The course schedule allows sample time to complete the assignments if started on time -- take advantage of it. The project components are assigned in roughly increasing order of size and difficulty; proportionately more time is allotted for the later assignments. Later assignments will be weighted more heavily in the final grade. Programs will be evaluated for correctness, organization, and documentation.

Documentation and structuring should be incorporated into programs from the beginning. Neither the instructor nor the teaching assistant will help with incomprehensible programs.

Late Policy:

No late assignments will be accepted.

Examinations:

There will be one midterm examination and final.  Both exams will be closed book exams. The date for the midterm is Wednesday, October 8.  The date for the final exam is Wednesday, December 11. There will be no make-up or early exams given so please plan your schedule accordingly.

Grading:

Your grade will depend on your performance in the course---there’s no predetermined curve. It is impossible to pass the course without doing the programming assignments. The relative weight of the components of your grade will be approximately:
 

Written assignments & participation

   20 %

Course project (5 parts)

  35 %

Project 1

   3 %

Project 2

   6 %

Project 3

   6 %

Project 4

  10 %

Project 5

  10 %

Midterm

  20 %

Final

  25 %

It is expected that all students understand University policies on academic honesty. Cheating on assignments or exams is very serious and will not be tolerated in this class.  Evidence of cheating will result in serious actions.

Most homework and programming assignments will have especially designated problems marked “A”. If you want to get an A or A- in class, you have to solve(a significant fraction of) them.

Readings:

The material presented in class will correspond roughly but not exactly to the material covered in the readings. The assigned readings will be updated as the term progresses.

Handouts and Lecture Notes:

In addition to being passed out in class, handouts will be available on-line on the class home page. Lecture notes will also be available on the web page by noon on the day of the class. If you want hard copies of the notes for class, you must print the copies yourself.

Important Dates - 2003

Monday, August 30 - First day of class

Monday, October 11 - Midterm exam (tentatively)

Friday, October 29- Last day to withdraw from course

Monday, December 13 - Last day of class

Wednesday, December 15- Final exam