/cardano-dev-2023

Full-time 8-week course that will take you from zero to a productive Haskell and Smart Contract developer.

Primary LanguageHaskell

IOG Academy on YouTube

Welcome to the Cardano Developer Course

  • Instructor:
    • Lars Brünjes
  • TAs
    • Karina Lopez
    • Robertino Martinez

Course Description

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.

Getting the Software

To go through this course, you will need:

Haskell:

  • 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).

Marlowe

  • 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.

Plutus

  • 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.

How to get help

Lectures

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

Assignments

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.

Defects

If you find a defect in one of the sample programs or slides (typos included), please, open an issue on this GitHub repository.

Bibliography

Haskell

  1. IOG Academy. Haskell Course. YouTube.

Beginner-friendly Haskell course.

We have read most of these books and they provide good information for beginners.

  1. Lipovača M. Learn You A Haskell For Great Good!. San Francisco: No Starch Press; 2012.

Beginner Friendly book with lots of examples.

  1. 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.

  1. 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.

  1. 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.

  1. Penner C. Optics By Example: Functional Lenses In Haskell. leanpub.com; 2020.

The only book on optics.

  1. Haskell Org. More resources at Hakell's official website.

It contains dozens of resources from various sources.

Marlowe

  1. IOG. Marlowe official documentation.

Plutus

  1. IOG. PlutusTx official documentation.

  2. IOG. Plutus Core repository.