CS/COE 1622 COURSE Syllabus

                                   Spring Term 2005


Syllabus (PDF Format).
 

Course instructors
 

 

Name

Office

Email 

Office Hours

Professor

Markus U. Mock

6407 SENSQ

mock@cs.pitt.edu

Mon 4-5pm
Th 10:45 - 11:45 and by

arrangement

T.A.

Rupa Natarajan

6406 SENSQ

rnataraj@cs.pitt.edu

Wed 1:00pm-4:00pm,
Fri 12:30pm-3:30pm

Time and Place:
 

Lectures

TTH

9:30-10:45

5129 SENSQ

Course description:

CS 1622 is designed to acquaint students with the implementation of high level programming languages. The course consists of a theoretical component, which stresses general underlying concepts, and a practical component, which consists of a significant course project in Java (you will write a simple compiler for a simple language). This course will be a very rewarding course that will teach you a lot, however, only if you put in the required time. If you don’t, you’ll be struggling and will not enjoy it. If you are looking for an easy course, you are in the wrong class. Typically, you can expect several hours of reading per week, 5-10 hours for the project, and of course, you will have to attend class.

Course prerequisites:

CS 441 and CS 447. Also suggested is programming experience in Java.

Textbooks:

Required

Modern Compiler Implementation in Java by Andrew Appel , January, 1998, Cambridge University Press

References

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

Charles N. Fischer, Richard J. Jr. Leblanc, "Crafting a Compiler With C", January 1991, Addison-Wesley Pub Co; ISBN: 0805321667 


For those unfamiliar with Java, you should try to buy/borrow a Java text and read it.  I cannot lend you a Java text

Policies:                                                                                                                                                                                                                     

Written Assignments:

There will be a number of written assignments.  The purpose of the assignments is to reinforce theoretical material of the course. Spending time on the written assignments will pay off on the exams. Assignments will be turned in, in hard copy, to the TA's mailbox.

Programming Projects:

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 ample time to complete the assignments---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.

Except for the first programming assignment, the project should be done in teams of two. Though we do not encourage it, if you like, you can do the project on your own. Note, however, that you will be he to the same standards as the two-person teams. Teamwork imposes burdens of communication and coordination, but has the potential benefits of more thoughtful designs and cleaner programs. Team programming is also the norm in the professional world. Every team  (including teams of one) must be registered. To register a team, send email to the TA listing the names and complete email addresses of team members. Only one email message per team is needed.

Students on a team are expected to participate equally in the effort and to be thoroughly familiar with all aspects of the joint work.  Both members bear full responsibility for the completion of assignments. Each team turns in one solution for each programming assignment; each member receives the same grade for the assignment. If a partnership is not going well, the teaching assistant will help negotiate new partnerships. Teams may not be dissolved in the middle of an assignment.

Examinations & Quizzes

There will be two midterm examinations and a final. Students are expected to be present for all exams.   Make-up exams will only be given in the event of an emergency, and only if I am informed in advance. If you cannot contact me directly, send me email or call the CS department  (624-8490) and leave me a message.  Failure to notify me prior to missing an exam will result in a zero for the exam.   We will have several quizzes throughout the semester to help you stay on track with your reading and the course material in general. They will be 10-15 minutes each, at the start of class. There will be no make-up quizzes , but we will count only the best N-1 of the N quizzes, (so that you can miss one without penalty). Quizzes may  not be announced. If everybody does their reading and actively participates in class, N will be small. Tentative dates are (subject to change):

January 20, February 3, March 1, March 31, April 14

Grading:

Your grade will depend on your performance in the course---there is no predetermined curve. It is impossible to pass the course without doing the programming assignments.

To help you stay on track during the course, there will be several quizzes testing the material of the previous lectures and readings. The relative weight of the components of your grade will be:
 

Class participation, quizzes & written assignments

20%

Course project (5 parts)

40%

Two Midterms, each 10%

20%

Final

20%

 

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 on the day before  the class. If you want hard copies of the notes for class, you must print the copies yourself.

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..

Home Page & Email List

The class home page for the course is http://www.cs.pitt.edu/~mock/cs1622/. 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.

Make sure you sign up for the mailing list by visiting https://lists.cs.pitt.edu/mailman/listinfo/cs1622

Please sign up with your email address AND name (so we can match names with addresses). We will use the email list for announcements, clarifications, and answers to questions. If you have questions, please email the instructor or the TA directly, or better still, come to office hours.


Important Dates:

Event

Date

First class meeting

January 6

Last day to add/drop

January 18

Midterm 1

February 15

Midterm 2

March 22

Spring Recess - no class

March 6 - March 13

Last day for monitored withdraw

March 16

Last Day of Class

April 21

Final 

Monday, April 25th, 4 – 5:50pm