Lecture: 3 hours
Discussion: 1 hour
Prerequisite: Courses ECS 140A, ECS 142
Grading: Letter; problem sets (10%), project (30%), midterm (20%), final (40%)
Advanced topics in programming languages, including formal syntax and semantics, the relation between formal semantics and verification, and an introduction to the lambda calculus. Additional topics will include language design principles, alternative programming language, in-depth semantic theory and models of language implementation.
Expanded Course Description:
Lectures provide an introduction to the theoretical side of the study of computer programming languages, including language definition methods and the lambda calculus. The usefulness of advanced language features in appropriate programming applications is also discussed, with examples. The project gives students an opportunity to experiment with defining and prototyping a programming language.
The lectures topics include the following, not necessarily listed in chronological order:
B. Meyer, Introduction to the Theory of Programming Languages, Prentice Hall, 1991.
J. Ullman, Elements of ML Programming, Prentice Hall, 1994.
The students will apply the concepts of the class to a real programming language, for which they will create the following: informal requirements, formal syntax, formal semantics, an interpreter, and a verification system for a subset of the language which will be used to verify a few sample programs. The students will demonstrate that this rigorous approach to language design and implementation produces a rugged and easily modifiable system, an important concept in making language design and implementation an engineering discipline.
Engineering Design Statement:
The project involves the design, implementation, and testing of a programming language. The facilities used for these programming projects resemble those that would be found in industry to the extent possible, given the academic constraints. The project assignment defines performance specifications and constraints, and outlines a general approach to the problem. However, design and implementation details are left to the students. Lectures discuss general concepts of programming languages and design choices available to programmers, in terms of algorithmic design, what language features can be employed to solve a particular problem, and what languages are most appropriate for particular application domains. Projects are graded based on the design and performance, including documentation. Examination questions are based on design methods discussed in lecture and from the project.
ABET Category Content:
Engineering Science: 2 units
Engineering Design: 1 unit
Instructor: K. Levitt, R. Pandey
Prepared by: K. Levitt (Feb. 1977)
THIS COURSE DOES NOT DUPLICATE ANY EXISTING COURSES