CS 45600—Programming Languages
Purdue University
Spring 2014

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

Synopsis

CS 45600 is a survey course in programming languages. To succeed in this field, you will combine code and math. The goal of the course is to give you intellectual tools that will help you use, evaluate, choose, and design programming languages. You will learn to ask questions about language safety and classification of errors, type systems, formal semantics, and abstraction mechanisms for both functions and data.

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).

For more information