COM SCI C237A
Prototyping Programming Languages
Description: Lecture, four hours; discussion, two hours; outside study, six hours. Enforced requisite: course 131. How different programming language paradigms provide dramatically different ways of thinking about computation and offer trade-offs on many dimensions, such as modularity, extensibility, expressiveness, and safety. Concrete exploration of three major programming paradigms--functional, object-oriented, and logic programming--by prototyping implementations of languages in each. Analysis of prototypes to shed light on design and structural properties of each language and paradigm and to allow easy comparison against one another. Hands-on experience implementing new abstractions, both as stand-alone languages and as libraries in existing languages. Concurrently scheduled with course C137A. Letter grading.