|Time and Place:||MWF 11:00-12:00, Maxwell Dworkin G135|
Ramsey, Maxwell Dworkin 231 |
(Office hours Monday 2:30–3:30 and Wednesday 2:00–3:00)
|Staff Assistant:||Hetchen Ehrenfeld, Maxwell Dworkin 133|
|Teaching Fellow:||Paul Govereau, Maxwell Dworkin 309
(Office hours Tuesday and Thursday 1:00–2:00)
|Section:||Mondays 8:00–9:00PM, Science Center 111|
CS 152 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 152 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, CLU, Scheme, and Prolog.
Case studies are reinforced by suitable programming exercises. CS 152 assumes previous experience programming in imperative languages like C, C++, or Java. Good programming skills are essential, and we assume some knowledge of C. You should plan to complete about a dozen programming assignments over the course of the term. The more interesting or amusing assignments include garbage collectors, Hindley-Milner type inference, and some game-playing programs.
CS 152 is suitable for graduate students, especially those whose primary research interests lie in related fields such as compilers, software systems, or artificial intelligence. Graduate students whose primary interests lie in programming languages may find that CS 152 overemphasizes programming practice and underemphasizes foundations.
Note: CS 152 does not cover implementation of conventional, imperative programming languages, which are covered in CS153 (Programming-Language Compilation).