Code Monkey home page Code Monkey logo

course-plan's Introduction

course-plan

Haskell and Functional Programming course for complete beginners.

โš ๏ธ The course authors no longer provide reviews of the solutions. However, all the learning materials are free and publicly available. You can learn Haskell on your own or with the help of others.

Course learning materials comprise:

The course is entirely free!


Below you can find the plan for each individual lecture with the corresponding links to learning materials.

๐Ÿก Lecture 1: Fundamentals

  • What is Functional Programming?
  • FP concepts
  • Haskell features
  • Haskell toolchain: GHC, GHCi, ghcup, cabal, hls
  • How to install Haskell?
  • GHCi
    • Arithmetic expressions
    • Comparison operators
    • Boolean expressions
    • Calling functions
  • Types
    • :t command in GHCi
    • Types of booleans, numbers, and functions
  • Lists and operations with them
    • Prepending, concatenation
    • Standard list functions
    • Ranges
  • Laziness
  • String
  • Syntax constructions
    • Defining our own functions
    • packages, modules, imports
    • if-then-else
    • guards
    • let-in
    • where
  • Immutability
  • Recursion
  • Higher-Order Functions (HOF)
    • Functions as first-class values
    • Lambda functions
    • Partial application
    • map, filter, etc.

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-1

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 1

๐Ÿ— Lecture 2: Data types

  • Pattern-matching
    • Top level
    • case-of
    • List patterns
    • Recursion and pattern matching
    • Pattern-matching pitfalls
  • Totality
  • Tuples
  • Algebraic Data Types
    • Product types
    • Sum types
  • Data types in Haskell
    • data
    • Simple product types
    • Records
    • Enumerations
    • Simple sum types
    • Recursive data types
    • type
    • newtype
  • Polymorphism
    • Parametric polymorphism
    • Types of standard functions
    • Hoogle
    • Polymorphic data types
    • Standard polymorphic data types
  • Eta-reduction
  • Function composition: dot operator (.)

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-2

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 2

๐ŸŽฎ Lecture 3: Typeclasses

  • Parametric polymorphism vs Ad-hoc polymorphism
  • Typeclasses
    • class
    • instance
    • Default methods
    • {-# MINIMAL #-}
    • Small typeclasses vs Big typeclasses
  • Language Extensions
    • {-# LANGUAGE InstanceSigs #-}
  • Standard typeclasses
    • Eq
    • Haskell Equality Table
    • Ord
    • Num
  • deriving
    • Stock derivable typeclasses
    • {-# LANGUAGE GeneralizedNewtypeDeriving #-}
  • Algebraic typeclasses
    • Semigroup
    • Monoid
    • Laws
  • Kinds
  • Functor
  • Folds
    • foldr
    • foldl
    • foldl'
    • foldr vs foldl'
    • Foldable
  • Strict and Lazy evaluation
    • Lazy evaluation
    • Tail Call Optimization (TCO)
    • Equational reasoning
    • {-# LANGUAGE BangPatterns #-}

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-3

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 3

๐Ÿ”ˆ๐ŸŽค Lecture 4: Monads and IO

  • Monad example
    • andThen for Maybe, Either and list
  • Monad as programming pattern
  • Monad
    • The typeclass
    • Instances
    • Laws
    • Usage example
  • FAMily: Functor, Applicative, Monad
  • Purity
  • Why Purity + Laziness is a problem for side effects?
  • IO
    • Why does IO require a monad?
    • String vs IO String
    • getLine
    • putStrLn
    • Main and main
  • Then operator: >>
  • do-notation
  • Cabal
    • Packages
    • build-depends
  • Functional Core, Imperative Shell

๐ŸŽž Slides: https://slides.com/haskellbeginners2022/lecture-4

๐Ÿ“ฝ Video: Haskell Beginners 2022: Lecture 4

What's next?

After you've finished the course, you may be interested in the following resources to continue your FP and Haskell journey:

course-plan's People

Contributors

chshersh avatar okelleydevelopment avatar whs-dot-hk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

course-plan's Issues

Learn Haskell by participating in Hacktoberfest 2022!

Hacktoberfest is an annual event to encourage more people to participate in OSS. Usually, people contribute by improving other projects.

โœจ You can contribute by learning Haskell and developing new skills! โœจ

Below are the steps for participation:

  1. ๐Ÿ”“ Register on Hacktoberfest.
  2. โญ๏ธ Star course-plan and exercises repositories.
  3. ๐Ÿด Fork the exercises repository.
  4. ๐Ÿ Add the hacktoberfest topic to your fork.
  5. โ„น๏ธ Read information about the course.
  6. ๐Ÿ“œ Read instructions for solving exercises.
  7. ๐Ÿงฉ You can start by solving exercises to Lecture 1 and opening your first Pull Request to your fork!

That's all! You need to open four Pull Requests total to complete Hacktoberfest. Fortunately, the course contains exactly four lectures with the corresponding exercises so you can complete Hacktoberfest just by learning Haskell! ๐ŸŽ‰

Create logo

I think it would be nice to have a custom logo for this course ๐Ÿ™‚

If anyone has the time and desire to do this, I'm happy to accept their work! ๐Ÿ‘๐Ÿป

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.