CS 340: Programming Paradigms and Patterns


  • 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
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
Apr 19 - Apr 21 Concurrency (optional)
Apr 26 - Apr 28 Software Transactional Memory (optional)

Machine Problems

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




Development Tools


Past Exams