YoVDO

Haskell: Lecture notes and assignments

Offered By: University of Pennsylvania via Independent

Tags

Haskell Courses Functional Programming Courses Polymorphism Courses Lazy Evaluation Courses Monads Courses Functors Courses Algebraic Data Types Courses Applicative Functors Courses

Course Description

Overview

Explore a comprehensive series of lecture notes and assignments on Haskell programming offered by the University of Pennsylvania. Dive into topics such as algebraic data types, recursion patterns, polymorphism, higher-order programming, type inference, lazy evaluation, folds, monoids, IO, functors, applicative functors, and monads. Complete weekly homework assignments to reinforce learning, with each task due on Mondays. Access supplementary materials including code files and text documents to support your understanding of complex concepts. Develop a strong foundation in functional programming through this structured, 12-week course that combines theoretical knowledge with practical application.

Syllabus

All homework assignments should emerge creatively from the Style guidelines. Homework is due each Monday by the start of class.

HW submission site / HW submission instructions

  • Week 1 (14 January): Introduction to Haskell ( html, lhs )

    • Homework 1: due Monday, 21 January.
  • Week 2 (21 January): Algebraic Data Types ( html, lhs )

    • Homework 2: due Monday, 28 January. [ error.log, sample.log, Log.hs ]
  • Week 3 (28 January): Recursion patterns, polymorphism, and the Prelude ( html, lhs )

    • Homework 3: due Monday, 4 February.
  • Week 4 (4 February): Higher-order programming and type inference ( html, lhs )

    • Homework 4: due Monday, 11 February.
  • Week 5 (11 February): More polymorphism and type classes ( html, lhs )

    • Homework 5: due Monday, 18 February. [ ExprT.hs, Parser.hs, StackVM.hs ]
  • Week 6 (18 February): Lazy evaluation ( html, lhs )

    • Homework 6: due Monday, 25 February.
  • Week 7 (25 February): Folds and monoids ( html, lhs )

    • Homework 7: due Monday, 11 March. [ Editor.hs, Buffer.hs, Sized.hs, StringBuffer.hs, StringBufEditor.hs, carol.txt ]
  • Week 8 (11 March): IO ( html, lhs )

    • Homework 8: due Monday, 18 March. [ Employee.hs, company.txt ]
  • Week 9 (18 March): Functors ( html, lhs )

    • Homework 9: due never (no HW this week).
  • Week 10 (25 March): Applicative functors (part 1) ( html, lhs )

    • Homework 10: due Monday, 1 April. [ AParser.hs ]
  • Week 11 (1 April): Applicative functors (part 2) ( html, lhs )

    • Homework 11: due Monday, 8 April. [ AParser.hs, SExpr.hs ]
  • Week 12 (8 April): Monads ( html, lhs )

    • Homework 12: due Monday, 15 April. [ Risk.hs ]

Tags

Related Courses

Professor Frisby Introduces Composable Functional JavaScript
egghead.io
Reactive Game Development for the Discerning Hipster
JSConf via YouTube
Stream Away with Scala
Scala Days Conferences via YouTube
Monoids, Monads, and Applicative Functors - Repeated Software Patterns
CppNow via YouTube
Applicative - The Forgotten C++ Functional Pattern
CppCon via YouTube