iohkedu/haskell-2020

Videos and exercises for the Haskell and Cryptocurrencies class.

Haskell

149

206 commits

updated Feb 8, 2024

See the code

README

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 slidesEdited Video with CaptionsOriginal Video
Lecture 010Welcomeyoutubevideo
Introduction to Cryptocurrencies
An Overview of Haskell
Lecture 020Datatypes & Functionsyoutubevideo
Lecture 030Polymorphism & Type Classesyoutubevideo
Lecture 040Higher-Order Functionsyoutubevideo
Packaging & Tools
Lecture 050IOyoutubevideo
Lecture 060Testingvideo
Lecture 070Abstraction Patternsyoutubevideo
Lecture 080Concurrencyvideo
Lecture 090Network Serversvideo
Lecture 100Parser Combinatorsvideo
Lecture 110More on Parsingvideo
Lecture 120Data Structuresvideo
Lecture 130More on Data Structuresvideo
Lecture 140Opticsvideo
Lecture 150More Opticsvideo
Lecture 160More on Monadsyoutubevideo
Lecture 170Free Monadsvideo
Lecture 180Streamingvideo
Lecture 190Embedded Domain-Specific Languagesvideo
Lecture 200Marlowe Ivideo
Lecture 210Marlowe IIvideo
Lecture 220Marlowe IIIvideo
Lecture 230Marlowe: Static Analysis & Simulatorvideo
Lecture 240Marlowe: Commoditiesvideo
Lecture 250Plutus Ivideo
Lecture 260Plutus IIvideo
Lecture 270Plutus: State Machinesvideo
Lecture 280Template Haskellvideo
Lecture 290Liquid Haskell & Propositions as Typesvideo
Lecture 300Servant & Persistentvideo

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.

Contributors

brunjlar

103 commits

elviejo79

93 commits

kosmikus

10 commits

iohkedu/haskell-2020

Videos and exercises for the Haskell and Cryptocurrencies class.

Haskell

149

206 commits

updated Feb 8, 2024

See the code

README

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 slidesEdited Video with CaptionsOriginal Video
Lecture 010Welcomeyoutubevideo
Introduction to Cryptocurrencies
An Overview of Haskell
Lecture 020Datatypes & Functionsyoutubevideo
Lecture 030Polymorphism & Type Classesyoutubevideo
Lecture 040Higher-Order Functionsyoutubevideo
Packaging & Tools
Lecture 050IOyoutubevideo
Lecture 060Testingvideo
Lecture 070Abstraction Patternsyoutubevideo
Lecture 080Concurrencyvideo
Lecture 090Network Serversvideo
Lecture 100Parser Combinatorsvideo
Lecture 110More on Parsingvideo
Lecture 120Data Structuresvideo
Lecture 130More on Data Structuresvideo
Lecture 140Opticsvideo
Lecture 150More Opticsvideo
Lecture 160More on Monadsyoutubevideo
Lecture 170Free Monadsvideo
Lecture 180Streamingvideo
Lecture 190Embedded Domain-Specific Languagesvideo
Lecture 200Marlowe Ivideo
Lecture 210Marlowe IIvideo
Lecture 220Marlowe IIIvideo
Lecture 230Marlowe: Static Analysis & Simulatorvideo
Lecture 240Marlowe: Commoditiesvideo
Lecture 250Plutus Ivideo
Lecture 260Plutus IIvideo
Lecture 270Plutus: State Machinesvideo
Lecture 280Template Haskellvideo
Lecture 290Liquid Haskell & Propositions as Typesvideo
Lecture 300Servant & Persistentvideo

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.

Contributors

brunjlar

103 commits

elviejo79

93 commits

kosmikus

10 commits

Languages

Haskell

100.0%