- Instructor:
- Lars Brünjes
- TAs
- Karina Lopez
- Robertino Martinez
This is a full-time 8-week course that will take you from zero to a productive Haskell and Smart Contract developer. In this course, we'll learn Haskell (an advanced, purely functional programming language), Marlowe (an ecosystem of tools and languages to enable the development of financial and transactional smart contracts), and Plutus (the smart contract platform of the Cardano blockchain).
Here's a high-level overview of each week's contents:
- Week 1 (Haskell - 07/08): Introduction to Haskell's syntax, core principles, and IO.
- Week 2 (Haskell - 14/08): Testing, common abstractions, tools, and testing.
- Week 3 (Haskell - 21/08): More abstractions, writing non-trivial programs, and data structures.
- Week 4 (Haskell - 28/08): Combining effects, concurrency and parallelism, and Networking.
- Week 5 (Marlowe - 04/09): Write smart contracts with Marlowe.
- Week 6 (Plutus - 11/09): Cardano Blockchain, EUTxO, Plutus tooling and simple Plutus contracts.
- Catchup week (18/09): Rest, catch up, and prepare for the final two weeks.
- Week 7 (Plutus - 18/09 or 25/09): Non-trivial Plutus smart contracts and complete Dapps.
- Week 8 (Plutus - 25/09 or 02/10): Final project (chosen by the students) or More Dapps.
To go through this course, you will need:
ghc
(the Haskell compiler) version 9.2.5.cabal-install
and Cabal library (a build tool for Haskell) version 3.6.2.0.- Haskell's Language Server
- A suitable text editor or IDE (e.g., VSCode, (Neo)Vim, Emacs) with proper configuration.
If you want to start working on your own code, we recommend using this template which comes with a development environment ready to go.
If you want to run the examples in this repo, choose the one you prefer:
- Remote development environment: Install the GitPod extension, and click the new "Gitpod" button at the top of the repo.
- Local development environment inside Docker: Make sure you have the latest version of Docker Desktop and VSCode. Open the
examples-haskell
folder in VSCode (not the root of the repo). You'll get a notification about a Dev Container config file. Click on "Reopen in Container". - Local development environment directly on your computer using GHCup: Follow these instructions (all platforms).
- A local Docker instance or online environment provided by the instructors.
Instructions on how to install the necessary software will be available here when needed.
- A local Docker instance or online environment provided by the instructors.
Instructions on how to install the necessary software will be available here when needed.
ID | Lecture and slides | Assignments | Projects |
---|---|---|---|
Week 01 | |||
Lecture 000 | Welcome | ||
Lecture 010 | Introduction to Cryptocurrencies | ||
Lecture 020 | An Overview of Haskell | A2 | |
Lecture 030 | Datatypes & Functions | A3 | |
Lecture 040 | Polymorphism & Type Classes | -- | |
Lecture 050 | Higher-Order Functions | A5 | |
Packaging & Tools | -- | ||
Lecture 060 | IO | A6 / T1 | |
Week 02 | W1 | ||
Lecture 060 | Testing | ||
Lecture 070 | Abstraction Patterns | ||
Lecture 080 | Concurrency | ||
Lecture 090 | Network Servers | ||
Lecture 100 | Parser Combinators | ||
Week 03 | Next week's outline depends on students' performance | W2 |
Daily assignments are due the next day.
Weekly homework is due Mondays before the lecture, one week after they have been handed out.
All submissions are via GitHub Classroom.
If you find a defect in one of the sample programs or slides (typos included), please, open an issue on this GitHub repository.
- IOG Academy. Haskell Course. YouTube.
Beginner-friendly Haskell course.
We have read most of these 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 Question and Answer format. Like the Little Schemer.
- Penner C. Optics By Example: Functional Lenses In Haskell. leanpub.com; 2020.
The only book on optics.
- Haskell Org. More resources at Hakell's official website.
It contains dozens of resources from various sources.
-
IOG. PlutusTx official documentation.
-
IOG. Plutus Core repository.