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