CS 422

CS 422 - Programming Language Design

Fall 2025

TitleRubricSectionCRNTypeHoursTimesDaysLocationInstructor
Programming Language DesignCS422T330132LCD31230 - 1345 T R  1214 Siebel Center for Comp Sci Grigore Rosu
Programming Language DesignCS422T440088LCD31230 - 1345 T R  1214 Siebel Center for Comp Sci Grigore Rosu

Official Description

Exploration of major language design paradigms using imperative and functional programming as unifying themes. Tools include both practical language processor construction and theoretical models. Course Information: 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 421.

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

Required, Elective, or Selected Elective

Selected Elective.

Last updated

3/15/2019by Grigore Rosu