Lecture Notes

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