Home

Awesome

Haskell ITMO course at CTD

Here you can find plan and presentations on the Haskell course authored by Dmitry Kovanikov and Arseniy Seroka with subsequent contributions by George Agapov, Ilya Peresadin, Roman Melnikov and Artem Yurchenko.

This course is always under development and always improving constantly because there's no limit for the best Haskell course.

You can always contact us via fp.ctd.itmo [at] serokell.io

Course plan

All slides: https://slides.com/fp-ctd

Templates for homework: https://github.com/ChShersh/fp-homework-templates

<a name="lecture-0">Lecture 0: Why FP and Haskell</a>

Introductory presentation: here

<a name="lecture-1">Lecture 1. Stack. How to build/run/test</a>

Presentation: https://slides.com/fp-ctd/lecture-1#/

<a name="lecture-2">Lecture 2: Basic Syntax</a>

Presentation: http://slides.com/fp-ctd/lecture-2#/

<a name="lecture-3">Lecture 3: Datas, Classes, Instances</a>

Presentation: http://slides.com/fp-ctd/lecture-3#/

<a name="lecture-4">Lecture 4: Basic typeclasses: Monoid. Functor. Applicative</a>

Presentation: http://slides.com/fp-ctd/lecture-4#/

<a name="lecture-5">Lecture 5: Monads</a>

Presentation: http://slides.com/fp-ctd/lecture-5-2019#/

<a name="lecture-5-continue">Slides: Parser combinators and Property-based-testing</a>

Presentation (part 1): https://slides.com/fp-ctd/lecture-5-part1#/

Presentation (part 2): https://slides.com/fp-ctd/lecture-5-part2#/

<a name="lecture-6">Lecture 6: RealWorld</a>

Presentation: http://slides.com/fp-ctd/lecture-6#/

<a name="lecture-7">Lecture 7: Monad Transformers</a>

Presentation: http://slides.com/fp-ctd/lecture-7#/

<a name="lecture-8">Lecture 8: Speeding up Haskell</a>

Presentation: http://slides.com/fp-ctd/lecture-10#/

<a name="lecture-9">Lecture 9: Parallel and Concurrent Haskell</a>

Presentation: https://slides.com/fp-ctd/lecture-09#/

<a name="lecture-10">Lecture 10: Template Haskell and Lens</a>

Presentation: https://slides.com/fp-ctd/lecture-10-17#/

<a name="lecture-11">Lecture 11: Brand new DSL world</a>

Presentation: https://slides.com/fp-ctd/lecture-11#/

<a name="lecture-12">Lecture 12: Some fun with kinds </a>

Presentation: https://slides.com/fp-ctd/lecture-12#/

<a name="lecture-13">Lecture 13: Comonads</a>

Presentation: http://slides.com/fp-ctd/lecture-13#/

<!--- ## <a name="lecture-16">Lecture 16: Idris</a> [↑](#course-plan) + [Idris tutorial](http://docs.idris-lang.org/en/latest/tutorial/) + [Idris course](http://www.idris-lang.org/dependently-typed-functional-programming-with-idris-course-videos-and-slides/) + Paradigms * Totality * Strict evalution * Theorem proving * DSL * Extensible effects + Syntax difference with _Haskell_ * : for type and :: for _cons_ * Function overloading * Named typeclasses * !-idiom * [| |]-idiom * Records + Dependent types * `Vect` data type * `drop` for `Vect` * `isEmpty : Vect n a -> Bool` * `isSingleton : Bool -> Type` * Open and closed doors * _Total_ version of `head` function * `_|_`-eliminator * _Dependent pair_ and _filter_ for vectors * [Type safe `printf` implementation](https://www.youtube.com/watch?v=fVBck2Zngjo) + Simple examples of `Eff` * Tagging tree with labels (and counting leaves) -->

Uncovered topics

Unfortunately there're some topics which are great but there is no time for them in this course :(