Giter Club home page Giter Club logo

haskell-2020's Introduction

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.

haskell-2020's People

Contributors

brunjlar avatar elviejo79 avatar kosmikus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.