jgarte / course-plan

๐Ÿ“œ Haskell course info, plan, video lectures, slides

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:

About

๐Ÿ“œ Haskell course info, plan, video lectures, slides

License:Mozilla Public License 2.0


Languages

Language:Haskell 100.0%