Haskell is a high-level, purely functional programming language with a strong static type system and elegant mathematical underpinnings. It is being increasingly used in industry by organizations such as Facebook, AT&T, and NASA, along with several financial firms. This course explores the joys of functional programming, using Haskell as a vehicle. In the first part of the course, you will learn to use Haskell to easily and conveniently write practical programs. The last couple of weeks will consist of several special topics that explore advanced features of Haskell.
This is a duplicated of http://www.seas.upenn.edu/~cis194/ with some small modifications.
This course is self-led and should follow this plan for new topics and homeworks.
Each homework is due (turned in via email to advisor) by the start of the following week unless otherwise noted.
So homework 1 is due by the start of week 2. Each session starts on Monday, so homework 1 is due by the Sunday at 11:59pm
The class is pass/fail. A pass will be awarded if greater than 60% of the homework assignments are completed on time and the final project is completed on time. A fail will be assigned if the final project is not completed or 60% or less of the homework assignments are completed.
No late work is accepted. However, assignments and projects may be turned in early.
Free online at learnyouahaskell.com. Available for purchase in print at the website as well.
Free online at book.realworldhaskell.org. Available for purchase in print at the website as well.
Weeks start on Monday. Items due during a specific week are due on the Monday that the week starts on.
Week | Lecture(s) | Homework assigned | Projects assigned | Items due |
---|---|---|---|---|
1 | Introduction to Haskell | Homework 1 | None | None |
2 | Polymorphism and Functional Programming | Homework 2 | None | Homework 1 |
3 | Algebraic Data Types | Homework 3 | None | Homework 2 |
4 | Typeclasses | Homework 4 | None | Homework 3 |
5 | I/O | Homework 5 | None | Homework 4 |
6 | Lazy Evaluation | Homework 6 | None | Homework 5 |
7 | Monads | Homework 7 | None | Homework 6 |
8 | Monads II | None | None | Keep working on Homework 7 |
9 | Testing | None | Write proposal for Final project | Homework 7 |
10 | Type Wizardy | Homework 8 | None | None |
11 | GADTs in Action | None | Work on final project | Homework 8 |
12 | Unsafe Haskell | None | Work on final project | None |
13 | Making Haskell Projects | None | Work on final project | None |