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)