CS 340: Programming Paradigms and Patterns


  • The fifth assignment, which takes the place of the final exam, has been released. It is due on 5/14/2021. Please refresh the page if you viewed it previously so as to be sure you're reading the latest version!

  • The fourth assignment has been released. It is due on 5/2/2021.

  • The third assignment has been released. It is due on 4/11/2021.

  • The midterm exam has been released. It is due on 3/13/2021 at 12PM Central Time.

  • The second assignment has been released. It is due on 3/7/2021.

  • The first assignment has been released. It is due on 2/21/2021.

  • The Zoom meeting ID for our online lectures is 834 4004 4386 -- you can join using this link.

  • We will be using Discord to run office hours, and it will also serve as our peer support and Q/A forum. If you aren't already a member, please join at https://discord.gg/CcvakvV

  • Lecture recordings can be found in the class Panopto folder


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 20 Syllabus and Course overview slides-intro.pdf Syllabus
Jan 22 Functional programming slides-fp.pdf "Why FP Matters"
Jan 27 Haskell Language Overview Lect01.lhs
Getting started Video
LYH chapters 1 and 2 (skim)
Jan 29 - Feb 3 Types and Type Classes Lect02.lhs LYH chapter 3
Feb 5 Functions Lect03Complete.lhs LYH chapter 4
Feb 10 - Feb 12 Lists Lect04Complete.lhs LYH chapter 2 (List intro)
Feb 17 Testing and QuickCheck Lect05.lhs QuickCheck manual (skim)
Feb 19 - Feb 26 Recursion Lect06Complete.lhs LYH chapter 5
Mar 3 - Mar 5 Higher Order Functions Lect07Complete.lhs LYH chapter 6
Mar 10 COVID-19 study day (no class)
Mar 12 Midterm Exam
Mar 17 - Mar 19 Defining Types and Type Classes Lect08Complete.lhs LYH chapter 8
Mar 24 - Mar 26 Functors, Applicatives, and Monads Lect09Complete.lhs
Video and Notes (PDF)
LYH chapter 11
Mar 31 - Apr 2 Some Monads Lect10Complete.lhs
Video and Notes (PDF)
LYH chapter 12 and 13
Apr 7 I/O Monad Lect10Complete.lhs LYH chapter 9
Apr 9 - Apr 14 Search Lect11Complete.lhs
Apr 30 COVID-19 study day (no class)

Machine Problems

Released Due Writeup / Resources Repo Invite Max Points
Feb 9 Feb 21 Basic Functions cs340ppp/mp1 47
Feb 23 Mar 7 Lists, Lists, Lists cs340ppp/mp2 72
Mar 12 Mar 13 (Noon) Midterm Exam, Sample solutions cs340ppp/midterm
Mar 29 Apr 11 Data types and HOFs cs340ppp/mp3 65
Apr 23 May 2 Monadic Parsing cs340ppp/mp4 51
May 7 May 14 Search cs340ppp/mp5




Development Tools


Past Exams