Course Websites
CS 422 - Programming Language Design
Last offered Fall 2023
Official Description
Related Faculty
Course Director
Learning Goals
Learn and apply a novel programming language design framework to define a series of languages covering all major paradigms (1), (2)
Design SIMPLE, a C-like imperative programming language with recursive functions, multi-dimensional, arrays, dynamic threads. (1), (2), (6)
Design KOOL, a Java-like object-oriented programming language with dynamic method dispatch, subtype polymorphism, exceptions, threads. (1), (2), (6)
Design FUN, an ML-like functional programming language with higher-order functions, lists, let and letrec binders, parametric polymorphism, callcc. Learn and apply substitution. (1), (2), (6)
Design a parametric polymorphic type system for FUN, which extends the classic Damas-Milner-Clement type system. (1), (2)
Design LOGIK, a Prolog-like logic programming language. Learn and apply unification. (1), (2), (6)
Topic List
Basic PL semantic approaches
K PL Design Framework
Imperative Programming
Object-Oriented Programming
Functional Programming
Logic Programming
Concurrency Concepts in Languages
Exceptions
Types and Polymorphism
Unification
Assessment and Revisions
Revisions in last 6 years | Approximately when revision was done | Reason for revision | Data or documentation available? | Documentation provided? |
Provided Maude library for K technique, used to define languages | fall 2007 | Too much low-level and PL-irrelevant work for students to use plain Maude | informal discussions and comments in library | commented library |
Switched to K-Maude tool (Maude extension); time saved used to cover new topic: Damas-Milner-Clement type inferencer) | fall 2010 | Students spent too much time learning how to use Maude, instead of on defining languages. | Examples of languages defined in K-Maude | commented examples |
Switched to the K tool for defining languages. Students see no Maude anymore. K is designed specifically for defining programming languages, and is used in several places to teach languages and in research on PL. | fall 2011 | K is specifically designed as a framework for programming language design. Little to no time is spent on learning the framework. Gave me more time to discuss PL topics in more depth. | Lots of examples come with the K tool distribution. | Yes, plenty of examples of documented K language definitions. |
Included logic programming as studied topic, and LOGIK as logic programming language defined in class. | fall 2012 |
Required, Elective, or Selected Elective
Selected Elective.
Title | Section | CRN | Type | Hours | Times | Days | Location | Instructor |
---|---|---|---|---|---|---|---|---|
Programming Language Design | T3 | 30132 | LCD | 3 | 1230 - 1345 | T R | 1214 Siebel Center for Comp Sci | Grigore Rosu |
Programming Language Design | T4 | 40088 | LCD | 3 | 1230 - 1345 | T R | 1214 Siebel Center for Comp Sci | Grigore Rosu |