====== Lectures ====== ^ Date ^ Title ^ Slides ^ Other ^ |Feb 21 (23)| 1. Introduction | [[https://drive.google.com/file/d/1e1aw5Mf5qts0DxLJFDZUWDbGlwI0hdeM/view?usp=drive_link|Slides]] | [[https://drive.google.com/file/d/1I3uoTART5UmWsWLRR_bYuNrzolTl2cO5/view?usp=share_link|Log]]| /* |Feb 28 (Mar 2)| 2. Lists and trees | [[https://drive.google.com/file/d/1IXFuHHxQf7eXTuCNCcAYHsaCEivhg3GV/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1IDuVo_v3MZlsDBBr3Z8LddKUrf1aZCAI/view?usp=share_link|Log]] | |Mar 7 (9)| 3. Higher order functions | [[https://drive.google.com/file/d/1OzBJAsBwnQZr7RkGx0h3Jb4qy-Z3HavA/view?usp=sharing|Slides]]|[[https://drive.google.com/file/d/1IYS0znPmoypQXgc07lgQ8VB_N02i6x84/view?usp=share_link|Log]] | |Mar 14 (16)| 4. Pattern matching and immutability |[[https://drive.google.com/file/d/1ZY2AVvNPCot57qER7uDE7ltV9qJZJk0K/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1Knv08uCMwhSj80QnBsUcS7PSY5lcp6xS/view?usp=share_link|Log]] [[https://drive.google.com/file/d/1Ks-pKwE0obYrgfZcTdnnxDmGe4bRU2yV/view?usp=share_link|RA-Lists]]| |Mar 21 (23)| 5. Streams and macros| [[https://drive.google.com/file/d/1e4t3LqTY9d-u1ZwgwJ0TH9tXm6KXwF4C/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1UAresm3EyRWk7FrjqvZzXuppo5iwc0SW/view?usp=share_link|Log]]| |Mar 28 (30)| 6. Mutable data and interpreters| [[https://drive.google.com/file/d/1jilYzpQ799q1rnUu-IIQt_PvBu8Bg5Xq/view?usp=share_link|Slides]] |[[https://drive.google.com/file/d/1epQDWXJvukOP0ioXhzEe8DrHZzCPrY_F/view?usp=share_link|Log]] [[https://drive.google.com/file/d/1tOoLV3a309ooXBvtSfJwHAtlSYhGLHBK/view?usp=share_link|Brainf*ck]]| |Apr 4 (6)| 7. Lambda calculus| [[https://drive.google.com/file/d/1jwIDXhcFlJn_tCruWL4McuSMwvQz7CLI/view?usp=share_link|Slides]] | | |Apr 11 (13)| 8. Introduction to Haskell | [[https://drive.google.com/file/d/1k-QVfp_0udHb_lc1pqv-8Ek6tYuwqh_e/view?usp=share_link|Slides]] |[[https://drive.google.com/file/d/1k39biz-izxxfGYEhNm3aS92VVtT3Lal1/view?usp=share_link|Log]] [[https://drive.google.com/file/d/1k2-z3_jvRn3sXuMykcCXY7bd7mRSq02a/view?usp=share_link|jarnik.hs]] [[https://drive.google.com/file/d/1k4e0aqv6LmNXk3vKON5tkKP96_DPNapl/view?usp=share_link|hie.yaml]]| |Apr 18 (20)| 9. Haskell types | [[https://drive.google.com/file/d/1k5ZHweh1JAY08zLP0uT9kIK3sIhmEk87/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1kanHkc8uvf1LTUrdRo5c-E-s18h4vbHi/view?usp=share_link|Log]] | |Apr 25 (27)| 10. Type classes | [[https://drive.google.com/file/d/1lbXeKmmDN-sDpJvhLXUTrow-i0UuUxvQ/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1li16dAsucVga4aSc52IE8VkFW9bD6YH7/view?usp=share_link|Log]] [[https://drive.google.com/file/d/1liDF4v_4VWiWJ5lZabDXEwtDYdfAlqoG/view?usp=share_link|Json.hs]]| |May 2 (11)| 11. Monads and Haskell IO | [[https://drive.google.com/file/d/1ljQ0EvMrXKZO_1D1g4TIU1D8zNGuc41Y/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/1ltpDH4WXuw9d0UEWrZr3kEoIAJP23fo_/view?usp=share_link|Log]]| |May 16 (18)| 12. Monadic parsing | [[https://drive.google.com/file/d/10Q_PR9JCzXxyFCkmsCpgaAQSK4h3OH5r/view?usp=sharing|Slides]] | [[https://drive.google.com/file/d/10dN63t99pI_Xu905WgeulX5Xvq459t-j/view?usp=sharing|Log]] [[https://drive.google.com/file/d/10gFqoy9qo-SMVQIDWL6ydqpXEqMSxS5y/view?usp=sharing|Parser.hs]]| |May 23 (25)| 13. State monad |[[https://drive.google.com/file/d/1mT6ZXcImty3m8yuKpkKjaFudndOF4SXs/view?usp=share_link|Slides]] | [[https://drive.google.com/file/d/10sKy1mWNhTHHFOPC-gUgT3N-xPhhaiw1/view?usp=sharing|Log]] [[https://drive.google.com/file/d/10qS7Ruc03wi1Jeafxo6BhY_GfJXeBzIX/view?usp=sharing|State.hs]] [[https://drive.google.com/file/d/10zzr7mKQh7lzBDqGW0jR8WF_9FkWWmYr/view?usp=sharing|brainfuck.zip]] [[https://drive.google.com/file/d/11DT5VaoTGkqgCTGNK6fCty5x0xKcRxCf/view?usp=sharing|IOState.hs]] | */ /* [[https://drive.google.com/file/d/1tOoLV3a309ooXBvtSfJwHAtlSYhGLHBK/view?usp=sharing|brainfuck.rkt]] |May 10 (12)| 13. State monad | [[https://drive.google.com/file/d/10ixc02ea2kwZ848bjw3mZ7nwmTQCR7At/view?usp=sharing|Slides]] | [[https://drive.google.com/file/d/10sKy1mWNhTHHFOPC-gUgT3N-xPhhaiw1/view?usp=sharing|Log]] [[https://drive.google.com/file/d/10qS7Ruc03wi1Jeafxo6BhY_GfJXeBzIX/view?usp=sharing|State.hs]] [[https://drive.google.com/file/d/10zzr7mKQh7lzBDqGW0jR8WF_9FkWWmYr/view?usp=sharing|brainfuck.zip]] [[https://drive.google.com/file/d/11DT5VaoTGkqgCTGNK6fCty5x0xKcRxCf/view?usp=sharing|IOState.hs]]| |May 17 (19)| 14. Monoids and Foldables | [[https://drive.google.com/file/d/11Ixuin_GfML8sXGkm8q2B8lOIP7eSGqr/view?usp=sharing|Slides]]| [[https://drive.google.com/file/d/11JDdu4w-8FA5Kh4j_v2_s4hiFNpKDChG/view?usp=sharing|Log]] [[https://drive.google.com/file/d/11KEollJ5KAcIgXA4hf4fRb9bA850oxG5/view?usp=sharing|FUP-hw.csv]]| */ ====== Lecture notes ====== As we proceed through the lectures, I will try to write down lecture notes so that you have most of the course material in a single place. However, I am unsure if I will manage to be on time with them due to other obligations. The lecture notes are available at the following [[https://xhorcik.gitlab.io/fup-lecture-notes/|website]]. ====== Old recorded lectures ====== Old recorded lectures from 2021 can be found [[https://cw.fel.cvut.cz/b202/courses/fup/lectures/start|here]]. ====== Other resources ====== [1] Harold Abelson and Gerald Jay Sussman and Julie Sussman: Structure and Interpretation of Computer Programs, MIT Press, 1996. https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html [2] R. Kent Dybvig: The Scheme Programming Language, Fourth Edition, MIT Press, 2009. https://www.scheme.com/tspl4/ [3] Raul Rojas: A Tutorial Introduction to the Lambda Calculus. http://www.inf.fu-berlin.de/lehre/WS03/alpi/lambda.pdf [4] Greg Michaelson: An Introduction to Functional Programming Through Lambda Calculus, Dover edition, 2011. [5] Graham Hutton: Programming in Haskell, Cambridge University Press, 2016. Functors, Applicatives, and Monads In Pictures: https://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html Lexical scopes: https://docs.racket-lang.org/guide/eval.html Lazy evaluation: https://sites.ualberta.ca/~jhoover/325/CourseNotes/section/Scheme_3.htm Streams: https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html Side effects in scheme: https://courses.cs.washington.edu/courses/cse341/05au/lectures/scheme-side-effects.html "Objects" in scheme: http://sarabander.github.io/sicp/html/3_002e1.xhtml All sorts of materials on Haskell: https://haskell.org/documentation/ Creating Haskell types: http://learnyouahaskell.com/making-our-own-types-and-typeclasses Haskell pattern matching: https://www.haskell.org/tutorial/patterns.html Haskell modules: https://www.haskell.org/tutorial/modules.html Haskell IO: https://wiki.haskell.org/Introduction_to_IO Haskell IO: https://wiki.haskell.org/IO_inside Haskell Monads: https://www.schoolofhaskell.com/user/bartosz/basics-of-haskell/10_Error_Handling Haskell Functors: http://learnyouahaskell.com/functors-applicative-functors-and-monoids