CPS206

Programming Languages

R. A. Wagner
D336 LSRC
660-6536
raw@cs.duke.edu

Prerequisites

CPS 220, and Knowledge of more than one programming language, preferably more than one of LISP, C/C++, PROLOG, SML, ISETL, APL.
 

Synopsis of course content

Study of some standard and non-standard components of several programming languages, focussing on the intuitive semantics of these language pieces. For example, I plan to describe and discuss control structures like Procedure calls, Coroutines, Continuations, explaining how they work, and how they can be used. In addition, we will examine possible implementations of these schemes, using C or C++ as the language of instruction. I plan a similar examination of standard and non-standard data structures, including Arrays, Sequences (extendable arrays), Sets, and Vectors. The purpose of the study is to provide each student with a "palette" of design choices, for use in designing new languages. A course project, to be worked in small teams would be the design of a new language, possibly one for specifying thread-level parallelism. Class discussion of issues such as "Why some languages survive, and others don't", and "Which language concepts, and combinations of concepts lead to inefficient execution of programs".
 
 
 

Textbooks

 Advanced Programming Language Design, Rafael A. Finkel
 

Optional Textbooks

Programming Languages, Terrance Pratt and Marvin Zelkowitz
Elements of ML Programming, Jeffrey D. Ullman
Programming in Prolog, W. F. Clocksin and C. S. Mellish
 

Course -- Fall 1999

Course Schedule Details
Text Sections Covered
Submitting Work
Lectures
Assignments
Student Expectation Survey
Anonymous Feedback
 

OnLine Documents

DON'T Panic (Scheme Reference).ps
Scheme Ref.html
Scheme Tutorial
CProlog Reference
SML Page
Introduction to SML
PVM Web Site

Assignments

Several computer programs (homework), 1 or 2 in each language covered.
 

Exams and Homework

Homework problems, involving the programming concepts discussed, and writing programs to demonstrate knowledge of the use of these concepts. A major project, as described above, to design part of a new language will also be part of the homework.
 

Grade to be based on 

Homework, and performance in class discussions. No final is contemplated.