iohkedu / haskell-2020

Videos and exercises for the Haskell and Cryptocurrencies class.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Haskell and Cryptocurrencies

Haskell Logo

Course Description

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.

Getting the Software

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.

How to get help

  • 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

Defects

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)

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

Assignments

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:

Bibliography

We have read most of this 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 Quesntion 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.

About

Videos and exercises for the Haskell and Cryptocurrencies class.


Languages

Language:Haskell 100.0%