CPS206
Programming Languages
|
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.