CMSC498Z - Advanced Functional Programming

From CS 400 Level Course Wiki

Course Information
The goal of this class is to expose students to advanced programming language ideas, including theory of programming languages, type systems, high-level programming abstractions, and program analyses. We will develop these ideas in three parts.

1. First, we start with a brief introduction to lambda calculus a compact but highly expressive programming language. Due to its simplicity lambda-calculus has been used to encode prototype type systems and program analysis.

2. Second, we spend most of the class studying Haskell, a general purpose, functional programming language. Haskell directly implements the ideas of lambda-calculus and provides a high-level programing language that uses various novel programming techniques, like strong-typing, absence of side-effect, laziness, and monadic programming.

3. Third, we present basic concepts of formal verification via Liquid Haskell, a refinement type checker for Haskell programs that extends Haskell's types with logical predicates to allow for expressive user specifications.

Instructor Section Day & Time Location
Niki Vazou 0101 TuTh 9:30am - 10:45am CSI 2120

Course Prerequisite(s)
Prerequisite: Minimum grade of C- in CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.

Class Webpage

Hours Per Week

Languages Used


Recommended Prior Experience


Projects, Exams, or other Assessments

Misc Info