CS 340: Programming Paradigms and Patterns

Announcements

  • The fourth machine problem has been released.

  • The third machine problem has been released.

  • The second machine problem has been released.

  • The first machine problem has been released. You can find the link below to accept the assigment, which will clone the associated source code repository and give you access to the writeup.

  • Here's the shared lecture session link for today

  • Use this link to join the CS Discord (and the class discussion channel)

  • Welcome to the Spring 2024 edition of CS 340!

Calendar

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 10 Syllabus and Course overview slides-intro.pdf Syllabus
Jan 12 Functional programming slides-fp.pdf "Why FP Matters"
Jan 17 Haskell Language Overview Haskell setup instructions
Lect01.lhs
LYH chapters 1 and 2 (skim)
Jan 19 - Jan 24 Types and Type Classes Lect02.lhs LYH chapter 3
Jan 26 Functions Lect03.lhs LYH chapter 4
Jan 31 - Feb 2 Lists Lect04.lhs LYH chapter 2 (List intro)
Feb 7 Testing and QuickCheck Lect05.lhs QuickCheck manual (skim)
Feb 9 - Feb 16 Recursion Lect06.lhs LYH chapter 5
Feb 21 - Feb 23 Higher Order Functions Lect07.lhs LYH chapter 6
Mar 6 - Mar 8 Defining Types and Type Classes Lect08.lhs LYH chapter 8
Mar 11 - Mar 15 Spring Break
Mar 20 Functors, Applicatives, and Monads Lect09.lhs
Video and Notes (PDF)
LYH chapter 11
Mar 22 Midterm Exam
Mar 27 - Mar 29 Some Monads Lect10.lhs
Video and Notes (PDF)
LYH chapter 12 and 13
Apr 3 I/O Monad Lect10.lhs LYH chapter 9
Apr 5 Monadic Parsing Lect11.hs Monadic Paring
Apr 10 - Apr 12 Monoids and Foldables
Apr 17 - Apr 19 Search Lect12.lhs
Lect12supp.hs
Apr 24 - Apr 26 Concurrency (optional)

Machine Problems

If you plan on submitting an assignment late, you must use this late day notice form to let us know by the assignment deadline.

Released Due Writeup / Resources Repo Invite Max Points
Feb 9 Feb 18 Basic Functions cs340ppp/mp1 47
Feb 19 Mar 3 Lists and the Game of Life cs340ppp/mp2 72
Mar 11 Mar 24 Data types and HOFs cs340ppp/mp3 71
Apr 17 Apr 28 Monadic Parsing cs340ppp/mp4 74

Resources

Administrivia

Reading

Development Tools

References

Past Exams