Programming Language Design and Implementation

CSC 254 is an introduction to the design and implementation of programming languages. From the design point of view, we will study language features as tools for expressing algorithms. From the implementation point of view, we will study compilers as tools to map those features efficiently onto modern computer hardware. The course will touch on a wide variety of languages, both past and present, with an emphasis on such modern Algol descendants as C++, Java, Ada 95, and Modula-3. Rather than dwell on the features of any particular language, it will focus instead on the differences between languages, the reasons for those differences, and the implications those differences have for compiler implementation.

Instructor:

Sandhya Dwarkadas
e-mail: sandhya at cs
Office: CSB 717, 275-5647
Office hours by appointment, but don't be afraid to drop by. If you want to be sure I'm in my office, use e-mail to contact me.

TAs:

Bijun He
email: bijun at cs
Office: CSB 631
Office Hours: 7-8 p.m., Tuesday and 9:30-10:30 a.m., Friday
John Kramer
e-mail: jkramer at cs
Office: CSB 631
Office Hours: 7-8 p.m., Monday and 1-2 p.m., Wednesday

Questions and Answers

E-mail is best. Questions of general interest can be posted to the ur.cs254 newsgroup. Answers will be posted as soon as possible. Slides or notes for the lectures will be accessible here, as will the in-class quizzes . I will try to post any updates to the lecture notes online before class meets so that you can bring copies to class with you. However, I will not always be able to do so.

Prerequisites:

CSC 173. CSC 252 is also recommended.

Required text:

Programming Language Pragmatics , Michael L. Scott, 2000 Edition (Morgan Kaufmann Publishers).

Assignments:

There will be a compiler project, broken into several parts. In addition, there will be separate assignments in functional as well as concurrent programming. There could also be occasional written assignments as well as potential pop quizzes at the beginning of each class, with the goal of making sure that you are grasping the material. Any assignment instructions will be available here.

Java information:

  • Java sources:

    Grading:

    Your final score will be determined as follows.

    Assignments: 50%, Midterm: 20%, and Final Exam: 30%.

    A mid-semester course evaluation feedback form is avaliable in ps and pdf . Feel free to fill the form out and drop it in my mailbox - the earlier the better so I can do my best to incorporate any constructive feedback.

    Honor Code Policy:

    For homeworks and programming assignments, students are encouraged to consult each other, the labbies, the instructor, or anyone else for that matter. However, the assistance offered or accepted should not go beyond a discussion of the problem and a sketch of a solution. You can use the following guideline: when it comes time for you to write your program or your homework paper, do not use any written material from the discussion. If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course).

    Late homework and absences from exams:

    Late assignments will have 10% of your raw score deducted for each 24-hour period after the due date that the assignment is late. Examinations will be given at alternate times only with appropriately documented medical excuses.

    Topics covered include: