CMSC498Z - Advanced Functional Programming
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