CMSC498Z - Advanced Functional Programming
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|
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.
Hours Per Week
Recommended Prior Experience
Projects, Exams, or other Assessments