CPS106
Programming Languages
R. A. Wagner
D336 LSRC
660-6536
raw@cs.duke.edu
 
Prerequisites
CPS 104; ability to program in one computer language, and knowledge at the level of CPS 104 of the architecture of one computer.
 
Synopsis of course content
Principles of the design of programming languages; introduction to 4-7 different programming languages, and practice in using each; comparison of the strengths and weakness of these languages, and extraction of basic principles which guide the programmer in the choice of languages. Explanation of several different language philosophies, in enough detail so that the programmer can use part of the philosophy of langauge "A" when programming in language "B".

Current list of languages: LISP (Scheme dialect), Python, Prolog, SML.
 
Textbooks

Programming Languages, Pratt, Terrence W.; Zelkowitz, Marvin V.
Programming in Prolog, Fourth Edition, Clocksin, W.F. and Mellish, C.S.
Elements of ML Programming 97 , Ullman, Jeffrey D
OnLine Documents
Introductory Lecture
Look for lectures here
Scheme Reference (Function names that end with "!" are NOT part of Pure Scheme)
Scheme Language Report
Scheme Tutorial (Covers much more than Pure Scheme).
CProlog Reference
Introduction to Prolog
On-line tutorial for SML
SML Library Reference
SML Page
SML User's Guide
Python Documentation

Assignments
Several computer programs (homework), 1 or 2 in each language covered.
 
Exams and Homework
Several computer programs (homework), 1 or 2 in each language covered. Lateness of 3% per calendar day late is charged on programs, and they are not accepted more than 7 days late.
 
Grade to be based on 
Some programs are considered practice, and have 1/2 weight, a fact made clear when the assignment is given. Up to 2 versions of any one program can be turned in; each will be graded separately (including lateness charge), and the highest grade any version earns will be the grade for that program. The grade may depend on the student's performance in class as well.