This course is an introduction to formal semantics and models of
programming languages, as well as to concepts, constructs, and design of
programming languages. We will discuss the fundamental theory behind programming
languages and the fundamental language paradigms and constructs that build on
this theory. Covered topics include:
- operational and denotational semantics
- Hoare logic and axiomatic semantics
- type systems, type inference, and static semantics
- lambda calculus
- program analysis and abstract semantics
- parameter passing, higher-order functions, scope
- exceptions and continuations
- objects and modules
- logic and concurrent programming
-
MWF 10:10am - 11:00 am, Olin Hall 216
- Radu: Wed. 11:00 am - 12:00 noon
- Steve: Mon. 1:00 pm - 2:00 pm
- CS312 or permission of the instructor required.
- In-class midterm: October 20
Final exam: December 15
- Grading: Midterm 20%, Final 25%, Homeworks 50%, Participation 5%
- Homeworks: ~ 9 assignments. Some will contain a programming component in
SML. Written assignments will be submitted in class; programs will be
electronically submitted using CMS.
- Optional textbook: "Programming Languages - Concepts and
Constructs", Ravi Sethi, Addison-Wesley 1996. Focuses mainly on
constructs and paradigms, and less on semantics.
- Other useful texts:
- "Concepts in Programming Languages", by John MItchell, Cambridge
University Press, 2002.
- "The Formal Semantics of Programming Languages - An
Introduction", by Glynn Winskel, MIT Press 1993. Focuses on axiomatic,
denotational, and axiomatic semantics.
- "Programming Languages: Theory and Practice", lecture notes from
Robert Harper
at CMU