You can find the supplementary search problems in the lecture repository as "Lect12supp.hs". The source file contains a description of the extendPath
(successor) and findPath
(search) functions that you are to implement to solve the "Path-finding problem". Some test cases and specs are included.
If you need some help, a sample solution can be found in the completed branch.
Here's the shared lecture session link for today
The first machine problem has been released. You can find the writeup in the "Machine Problems" section, below.
If you're a Windows user and are having trouble getting the Haskell toolchain set up on your computer, check out the Windows Haskell writeup, contributed by Dustin Thomas and My Dinh.
The lecture repository has been updated! You can find installation tools for the recommended Haskell toolchain (along with a video tutorial) at https://github.com/cs340ppp/lectures/blob/main/INSTALL.md
Welcome to the Spring 2023 edition of CS 340!
Please note that readings for a given lecture should ideally be reviewed before coming to class, and will likely need to be revisited afterwards. Most readings are from Learn You a Haskell (LYH) and Real World Haskell (RWH). All materials can be found online, and are linked below. Lecture notes can be found in the lecture repository.
The lecture calendar is tentative and may be updated.
Date | Topic | Notes | Reading(s) |
---|---|---|---|
Jan 11 | Syllabus and Course overview | slides-intro.pdf | Syllabus |
Jan 13 | Functional programming | slides-fp.pdf | "Why FP Matters" |
Jan 18 | Haskell Language Overview |
Haskell setup instructions Lect01.lhs |
LYH chapters 1 and 2 (skim) |
Jan 20 - Jan 25 | Types and Type Classes | Lect02.lhs | LYH chapter 3 |
Jan 27 | Functions | Lect03.lhs | LYH chapter 4 |
Feb 1 - Feb 3 | Lists | Lect04.lhs | LYH chapter 2 (List intro) |
Feb 8 | Testing and QuickCheck | Lect05.lhs | QuickCheck manual (skim) |
Feb 10 - Feb 17 | Recursion | Lect06.lhs | LYH chapter 5 |
Feb 24 - Mar 1 | Higher Order Functions | Lect07.lhs | LYH chapter 6 |
Mar 3 - Mar 8 | Defining Types and Type Classes | Lect08.lhs | LYH chapter 8 |
Mar 10 | Midterm Exam | ||
Mar 13 - Mar 17 | Spring Break | ||
Mar 22 - Mar 24 | Functors, Applicatives, and Monads |
Lect09.lhs Video and Notes (PDF) |
LYH chapter 11 |
Mar 29 - Mar 31 | Some Monads |
Lect10.lhs Video and Notes (PDF) |
LYH chapter 12 and 13 |
Apr 5 | I/O Monad | Lect10.lhs | LYH chapter 9 |
Apr 7 | Monadic Parsing | Lect11.hs | Monadic Paring |
Apr 12 - Apr 14 | Search |
Lect12.lhs Lect12supp.hs |
|
Apr 19 - Apr 21 | Concurrency (optional) | ||
Apr 26 - Apr 28 | Software Transactional Memory (optional) |
Released | Due | Writeup / Resources | Repo Invite | Max Points |
---|---|---|---|---|
Jan 30 | Feb 12 | Basic Functions | cs340ppp/mp1 | 47 |
Feb 15 | Feb 26 | Lists, Lists, Lists | cs340ppp/mp2 | 72 |
Mar 28 | Apr 9 | Data types and HOFs | cs340ppp/mp3 | 71 |
Apr 14 | Apr 23 | Monadic Parsing | cs340ppp/mp4 | 74 |