Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/haskell-beginners-2022/course-plan
📜 Haskell course info, plan, video lectures, slides
https://github.com/haskell-beginners-2022/course-plan
beginner-friendly course functional-programming hacktoberfest hacktoberfest2022 haskell learning mentorship
Last synced: 18 days ago
JSON representation
📜 Haskell course info, plan, video lectures, slides
- Host: GitHub
- URL: https://github.com/haskell-beginners-2022/course-plan
- Owner: haskell-beginners-2022
- License: mpl-2.0
- Created: 2021-12-19T16:24:32.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-09T14:01:05.000Z (over 1 year ago)
- Last Synced: 2024-02-17T10:38:19.609Z (9 months ago)
- Topics: beginner-friendly, course, functional-programming, hacktoberfest, hacktoberfest2022, haskell, learning, mentorship
- Language: Haskell
- Homepage:
- Size: 119 KB
- Stars: 1,180
- Watchers: 22
- Forks: 49
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - haskell-beginners-2022/course-plan - friendly,course,functional-programming,hacktoberfest,hacktoberfest2022,haskell,learning,mentorship pushed_at:2023-07 star:1.3k fork:0.1k 📜 Haskell course info, plan, video lectures, slides (Haskell)
README
# course-plan
Haskell and Functional Programming course for complete beginners.
> :warning: 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:
* [🎥 Four 1-hour lectures on YouTube][video]
* [🖼 Slides][slides]
* [🧩 Practical exercises and Haskell installation instructions][exercises][video]: https://www.youtube.com/watch?v=6MsQcUprO9o&list=PLOJjn67NeYg9cWA4hyIWcxfaeX64pwo1c&ab_channel=chshersh
[slides]: https://slides.com/haskellbeginners2022
[exercises]: https://github.com/haskell-beginners-2022/exercisesThe 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](https://www.youtube.com/watch?v=6MsQcUprO9o)
## 🏗 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](https://www.youtube.com/watch?v=rf-lie7U04Q)
## 🎮 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](https://www.youtube.com/watch?v=Vs-vvlYLtRI)
## 🔈🎤 Lecture 4: Monads and IO
* Monad example
* `andThen` for `Maybe`, `Either` and list
* Monad as programming pattern
* `Monad`
* The typeclass
* Instances
* Laws
* Usage example
* **FAM**ily: `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](https://www.youtube.com/watch?v=12D4Y2Hdnhg)
## What's next?
After you've finished the course, you may be interested in the
following resources to continue your FP and Haskell journey:* [Learn Haskell by building a blog generator](https://lhbg-book.link/):
A project-based course that teaches pragmatic Haskell by building a
blog generator from scratch.
* [Haskell in Depth](https://www.manning.com/books/haskell-in-depth):
A book about intermediate Haskell topics such as Monad Transformers,
metaprogramming, testing, logging, and performance analysis.
* [Functional Design and Architecture ](https://www.manning.com/books/functional-design-and-architecture):
Design patterns and architectures for building production quality
applications using functional programming, with examples in Haskell
and other FP languages.
* [Haskell Study Plan](https://github.com/soupi/haskell-study-plan):
More links on different topics and examples of real-world Haskell
projects.
* [Awesome List of Haskell mentors](https://github.com/willbasky/Awesome-list-of-Haskell-mentors):
A list of Haskell projects and mentors willing to help you master Haskell.