CS 457/557: Functional Programming (Winter, 2024)
Are you ready to embark on a magical journey that will forever transform your view of programming?
(Image source: https://happygamer.com/tashas-cauldron-of-everything-dampds-newest-rules-expansion-adds-a-slew-of-magic-items-pt-16-98276/)
Basic Information
Instructor: Yao Li
Office: TBA
Office Hours: TBA
Prerequisite: CS 302: Programming Methodologies and Software Implementation
Syllabus: TBA
Course Description
If you are paying attention to the recent evolution of today’s mainstream programming languages, you will find an emergence of features adapted from functional programming languages. Why is this happening? What is special about functional programming? Is there something that one can learn from functional programming paradigm that can make you a better programmer?
In this course, you will learn the key ideas behind functional programming that make it powerful, via a programming language called Haskell. I will show you how functional languages can help you write readable, modular, and efficient code.
No prior knowledge of Haskell or functional programming is required to take this class.
Major Topics
- Abstraction, abstraction, and abstraction
- Algebraic data types and recursion
- Polymorphism
- Higher-order functions
- Universal property
- Equational reasoning
- Monads and applicative functors
- Lazy evaluation
- Type checking
- Property-based testing
Textbook
Programming in Haskell by Graham Hutton (Recommended)