Time and Place: | TTh 1200–1315, LWSN B134 |
Questions, answers, announcements: | Piazza |
Home page: | http://www.cs.purdue.edu/~hosking/456-142/ |
Instructor: | Tony
Hosking, LWSN 3154L |
Office hours: | Tuesday/Thursday 3:30–4:30pm, and by appointment |
CS 45600 provides an introduction to the study of programming languages as an intellectual discipline. The elements of this discipline include specifications based on abstract syntax, lambda calculus, type systems, and dynamic semantics. You must be comfortable with recursion and with basic mathematical ideas and notations for sets, functions, etc.
CS 45600 uses the case-study method to give you experience with languages that go beyond the simple imperative paradigm. Case studies will cover languages from the functional, logic, and object-oriented families. Example languages may include Standard ML, Smalltalk, Scheme, and Prolog.
Case studies are reinforced by suitable programming exercises. CS 45600 assumes previous experience programming in imperative languages like C, C++, or Java. Good programming skills are essential, and we assume some knowledge of C. Plan to complete ten or twelve programming assignments over the course of the term. The more interesting or amusing assignments include Hindley-Milner type inference, arbitrary-precision arithmetic, and some game-playing programs.
Note: CS 45600 does not cover implementation of conventional, imperative programming languages, which are covered in CS 35200 (Compilers).