CSC 254/454

Programming Systems

Fall 2001

Teaching staff and office hours

Instructor: Prof. Chen Ding, CSB 710, ext. 51373

TA: Bill Scherer, CSB 620, ext. 55492

Lectures: 3:25pm-4:40pm, Tuesday and Thursday @ CSB 601

Office hours:

Textbook (recommended)



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 teaches fundamental concepts in modern programming languages by
explaining their operational definitions, i.e. how they are implementated.
The course will guide students through basic techniques of lexical and
semantic analysis, code generation and run-time environment, first-class
functions, static and dynamic typing.  The teaching is styled as a process of problem
solving, so that students will see not only how languages were defined but also why
they were so designed.  To complete the learning experience, students will
implement a set of core language features on a real machine.

The basic material of this course is covered by its textbook.  In addition,
I will emphasize concepts and techniques that are most relevant to building
large programs or programs processing large data sets.  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 compilation and language implementation,
especially new techniques for program data management.


Additional reading