To provide a solid foundation for studying advanced topics in Programming Language Specification and Design.
This course introduces concepts related to the specification and design of high-level programming languages. It discusses different programming paradigms, algebraic specification and implementation of data types, and develops interpreters for specifying operationally the various programming language features/constructs. It also introduces attribute grammar formalism and axiomatic semantics briefly. The programming assignments will be coded in Scheme using Racket IDE.
The course load includes homeworks and programming assignments worth 30 points, a midterm exam worth 30 points, and a final exam worth 40 points.
The letter grades will be assigned using the following scale: A[90-100], B[80-90), C[70-80), D[60-70), and F[0-60). However, I reserve the right to adjust the scale somewhat to utilize the gaps in the distribution.
|Topics with links to Lecture Notes||Addl. Readings (EOPL-2nd ed)|
|Class 1||Evolution of Programming Languages||Turing Awards|
|Class 2||Scheme Metalanguage||Why specify? Chap 1.1, 1.2|
|Class 3||Abstract Data Types: Algebraic Specs||Chap 2|
|Class 5||Programming Paradigms||
|Class 6||Abstract Syntax and its Representation||Chap 2|
|Class 7||Interpreter for a Simple Expression Language||Chap 3|
|Class 8||User-Defined Functions; Scoping||Chap 1.3, 3|
|Class 9||Midterm Exam (April 25)|
|Class 10||Implementing Recursion||Chap 3|
|Class 11||Closures and Streams||
|Class 12||Imperative Programming : Assignment||Chap 3|
|Class 14||Interpreter for an Object-Oriented Language||Chap 5|
|Class 16||Introduction to Attribute Grammars||
|Class 18||Introduction to Axiomatic Semantics|
|Final Exam (June 04, 5:45pm-7:45pm)|