CS 4450 Principles of Programming Languages

Syllabus

Overview:
                  Students taking this course can expect to acquire the following:
•    functional programming techniques;
•    an understanding of the major classes of high-level programming languages, language features, and programming styles, with an emphasis on applying concepts from programming language theory;
•    formal methods of specifying the syntax and semantics of programming languages;
•    and the knowledge needed to write parsers and interpreters for the major classes of programming languages.

Textbook:
•    Essentials of Programming Languages, 2nd Edition; by Friedman, Wand, and Haynes. Published by MIT Press. ISBN: 0-262-06217-8.
•    ML for the Working Programmer, 2nd Edition; by Lawrence Paulson. Cambridge University Press. ISBN: 052156543X.
•    The Little Schemer, 4th Edition; Daniel P. Friedman and Matthias Felleisen. MIT Press. ISBN: 0262560992
        
Prerequisites:  CECS 126 and MATH 226

Topics:
1.    Introduction to functional programming: strongly typed programming languages, recursion, folds and map, recursive data structures, proof by induction. (4 weeks)
2.    Environment-passing interpreters for the lambda calculus. (4 weeks)
3.    Modeling procedures as functions and closures (1 week)
4.    Binding forms: “letrec”, dynamic binding, static binding (2 weeks)
5.    Imperative features: reference types, assignment and sequencing (2 weeks)
6.    Evaluation strategies: eager vs. lazy languages; infinite data structures such as streams  (2 weeks)

Prepared by:    Bill Harrison

Date:    September 23rd, 2004

An introduction to the structure,
design and implementation of programming
languages. Topics include syntax, semantics,
data types, control structures, parameter pass-
ing, run-time structures, and functional and
logic programming. Prerequisite: CS 2050.