CSC254 Homepage

Programming Language Design & Implementation

Fall 2010

Teaching staff and office hours

  • Instructor: Prof. Chen Ding, CSB 710, ext. 51373
  • TA: Xiaoming Gu, CSB 726, ext. 55414
  • Lectures: 12:30pm-13:45pm, Tuesday and Thursday @ CSB 601
  • Office hours
    • Ding: by appointment @ CSB 710
    • Gu: 2:00-3:00pm, Tuesday and Thursday @ CSB 726

Textbook (required)


  • 70% programming projects
  • 30% exams

Course description

Today's programmers face a wide range of programming language features. For efficiency in embedded systems, one may use static data structures and macros. For extensibility in prototyping, one may favor polymorphic operations and encapsulated modules. For resource sharing and aggregation, one may design a parallel and distributed system. Quite often, the program demand at hand is a mixture of many requirements, and the appropriate solution is probably a combination of several languages/systems. For example, if you were to write a web-based agent, what programming language or languages would you use? To made such decision, you need to understand how programming languages work.

This course will focus on the design, implementation, and composition of core constructs in procedural, object-oriented, and functional languages while at the same time covering basic material on syntax analysis, semantic analysis, and code generation. The teaching is styled as a process of problem solving and learning by doing. Students will build a compiler for a C-like language, and an interpreter for Lambda calculus, and (release) new modules for real languages such as Ruby, Python, and R.

The material of this course is covered by its textbook, supplemented by lecture slides and other reading material. I will emphasize concepts and tools that are most relevant to building composable and reusable software. For this reason, I will focus on high-level language implementation and leave out most assembly-level issues. Drawing from my own research, I will include in lectures the most recent advances in parallel programming language design as well as techniques for program behavior analysis and adaptation.

Course schedule

  • The current schedule in pdf (Updated Oct 1, 2010.  Further updates see file 254F10schedule.pdf in the class repository.)

Additional reading