Lecture Notes

Date L# Required Reading and Exercises Optional Reading
Week 1
09-27-21 1 Introduction Introduction
Peano Arithmetic (extended code example)
09-29-21 2 Lists Lists
10-01-21 3 Algebraic Data Types User-Defined Types
Week 2
10-04-21 4 Functions Functions
10-06-21 5 Type Classes Type Classes, Types of Types
10-08-21 6 Introduction to Haskell IO Input/Output
Week 3
10-11-21 7 Records, newtype, and List Comprehensions Records, newtype, List Comprehensions
10-13-21 8 Maybe Monad is Not So Scary and Exercises
10-15-21 9 Functors Functors
Week 4
10-18-21 10 Applicative Applicative
10-20-21 11 Monads Monads
10-22-21 12 Concrete Monads: IO Input/Output (continued)
The Animal Game (extended code example)
Week 5
10-25-21 13 Testing
10-27-21 Midterm Exam
10-29-21 14 Monoids
Week 6
11-01-21 15 Concrete Monads: Writer, Reader Writer and Reader
11-03-21 16 Concrete Monads: State, I Stateful Functions
11-05-21 17 Concrete Monads: State, II Stateful Functions (continued)
Scalability
Week 7
11-08-21 18 Intro to Functional Parsers Functional Parsing
11-10-21 19 Practical Parsing Functional Parsing (continued)
11-12-21 20 Foldable, Traversable Foldable, Traversable
Week 8
11-15-21 21 Propositional Logic: Preliminaries Propositional Logic: Parsing
11-17-21 22 Propositional Logic: Tautology Checker
11-19-21 23 Propositional Logic: Quine Prover
Study Week
11-22-21 Term not in session
11-24-21 Term not in session
11-26-21 Term not in session
Week 9
11-29-21 24 Seq, and All That
12-01-21 25 Monad Transformers and Exercises
12-03-21 26 Monad Transformers (continued) and NState Example: Sudoku
Final Exams
12-07-21 (Tue) — 5:30-7:30pm — Section 2 (Chugh)
12-10-21 (Fri) — 10am-12pm — Section 1 (Kurtz)