- Lectures: TODO: Insert lecture days
- Instructors:
- TA
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. We will explore 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. Evaluation will be based on class participation, weekly programming assignments, and an open-ended final project.
You will need ghc
(the Haskell compiler; at least version 8.6.5, preferably
version 8.10.1), cabal
(a build tool for Haskell; at least version 2.4.1,
preferably version 3.2), and a suitable development editor to edit source files
with (e.g. Visual Studio Code, or (neo)vim).
Instructions on how to install the necessary software are available here, separated by platform (Linux, MacOS, Windows).
These instructions also include information on how to set up more advanced IDE-like
editor support for Visual Studio Code, in the form of ghcide
. While this will be
helpful in the long run, it is not mandatory, and if you experience problems setting
this up, don't worry for now.
- Discord TODO: Insert link to the discord chat for the class
- Forum TODO: Insert link to the forum for the class
- Haskell tag stackoverflow.com
- How do I install Haskell on Windows? video
If you find a defect in one of the sample programs. Or maybe a typo in one of the slides we will really appreciate it if you could post it as an issue on GitHub Itself. Report defecs in: [issues](TODO Insert link to issues for this class)
Lecture and slides | Edited Video with Captions | Original Video | |
---|---|---|---|
Lecture 010 | Welcome | youtube | video |
Introduction to Cryptocurrencies | |||
An Overview of Haskell | |||
Lecture 020 | Datatypes & Functions | youtube | video |
Lecture 030 | Polymorphism & Type Classes | youtube | video |
Lecture 040 | Higher-Order Functions | youtube | video |
Packaging & Tools | |||
Lecture 050 | IO | youtube | video |
Lecture 060 | Testing | video | |
Lecture 070 | Abstraction Patterns | youtube | video |
Lecture 080 | Concurrency | video | |
Lecture 090 | Network Servers | video | |
Lecture 100 | Parser Combinators | video | |
Lecture 110 | More on Parsing | video | |
Lecture 120 | Data Structures | video | |
Lecture 130 | More on Data Structures | video | |
Lecture 140 | Optics | video | |
Lecture 150 | More Optics | video | |
Lecture 160 | More on Monads | youtube | video |
Lecture 170 | Free Monads | video | |
Lecture 180 | Streaming | video | |
Lecture 190 | Embedded Domain-Specific Languages | video | |
Lecture 200 | Marlowe I | video | |
Lecture 210 | Marlowe II | video | |
Lecture 220 | Marlowe III | video | |
Lecture 230 | Marlowe: Static Analysis & Simulator | video | |
Lecture 240 | Marlowe: Commodities | video | |
Lecture 250 | Plutus I | video | |
Lecture 260 | Plutus II | video | |
Lecture 270 | Plutus: State Machines | video | |
Lecture 280 | Template Haskell | video | |
Lecture 290 | Liquid Haskell & Propositions as Types | video | |
Lecture 300 | Servant & Persistent | video |
Homework are due on Fridays before the lecture, one week after they have been handed out. All homework submission is via GitHub classroom. If you have questions, check this video:
We have read most of this books and they provide good information for beginners.
- Lipovača M. Learn You A Haskell For Great Good!. San Francisco: No Starch Press; 2012.
Beginner Friendly book with lots of examples.
- O'Sullivan B, Stewart D, Goerzen J. Real World Haskell. Farnham: O'Reilly; 2009.
A lot of real world techniques, just a little bit outdated at this point.
- Bird R. Algorithm Design With Haskell. Cambridge University Press; 2020.
Learn how far you can get with immutable data, to implement almost all standard algorithms.
- Thibaut C. Texas Hold'em: The Little Haskeller.leanpub.com; 2019.
A long article, written in the Quesntion and Answer format. Like the Little Schemer.
- Penner C. Optics By Example: Functional Lenses In Haskell. leanpub.com; 2020.
The only book on optics.