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.
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.
email: bijun at cs
Office: CSB 631
Office Hours: 7-8 p.m., Tuesday and 9:30-10:30 a.m., Friday
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.
Programming Language Pragmatics ,
Michael L. Scott, 2000 Edition (Morgan Kaufmann Publishers).
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.
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
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
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
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:
- formal aspects of syntax and semantics
- naming, scoping, and binding
- assembly-level machine architecture (largely a review for students who
have taken 252)
- scanning, parsing, semantic analysis, and code generation
- type systems, data structures, data abstraction, and storage management
- control flow, subroutines, exception handling, and concurrency
- imperative, functional, logic-based, and object-oriented programming
- programming environments and tools