Lecture Notes

Date Required Reading and Exercises Optional Reading
Week 1
09-25-17 Introduction Introduction
09-27-17 Lists Lists
09-29-17 Abstract Data Types User-Defined Types
Week 2
10-02-17 Functions Functions
10-04-17 Type Classes Type Classes
10-06-17 Introduction to Haskell IO Input/Output
Week 3
10-09-17 Records, newtype, and List Comprehensions Records, newtype, List Comprehensions
10-11-17 Maybe Monad is Not So Scary and Exercises
10-13-17 Functors Types of Types, Functors
Week 4
10-16-17 Applicative Applicative
10-18-17 Monads Monads
10-20-17 Concrete Monads: IO Input/Output (continued)
The Animal Game (extended code example)
Week 5
10-23-17 Monoids
10-25-17 Concrete Monads: Writer, Reader
10-27-17 Midterm Exam
Week 6
10-30-17 Concrete Monads: State, I Stateful Functions
11-01-17 Concrete Monads: State, II Stateful Functions (continued)
Scalability
11-03-17 Intro to Functional Parsers Functional Parsing
Week 7
11-06-17 Practical Parsing Functional Parsing (continued)
11-08-17 Monad Transformers and Exercises
11-10-17 Monad Transformers (continued) and NState Example: Sudoku
Week 8
11-13-17 Foldable, Traversable
11-15-17 Seq, and All That
11-17-17 Propositional Logic: Preliminaries
Week 9
11-20-17 Propositional Logic: Tautology Checker
11-22-17 Propositional Logic: Quine Prover
11-24-17 No Class (Thanksgiving holiday)
Week 10
11-27-17 Sudoku Zippers
11-29-17 Mutable State
12-01-17 No Class (Reading period)
Final Exam Week
12-06-17 (Wed) — 1:30-3:30 — Section 02 (Kurtz)
12-08-17 (Fri) — 10:30-12:30 — Section 01 (Chugh)