The course expounds the basic motivations and philosophy underlying the applications of semantic techniques in programming language theory. It emphasizes the structures used in semantics and the techniques that have been developed for relating various approaches to the semantics of programming languages. The course not only provides students with hands-on-experience in different types of programming, it also exposes students to emerging language paradigms and the driving forces and design principles behind these paradigms.
Essentials of Programming Languages (2nd ed). Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes, MIT Press, ISBN 0-262-06217-8, 2001.
The goal of the course is expressed in this quote from Hal Abelson: “to change your view of your programming, and your view of yourself as a programmer. (To make) you see yourself as a designer of languages rather than only a user of languages, as a person who chooses the rules by which languages are put together, rather than only a follower of rules that other people have chosen.”
CS 440 or consent of instructor.