====== Lectures ====== ^ Date ^ Title ^ Content ^ Czech Lecture ^ English Lecture ^ |Feb 16 (18)| 1. Introduction | [[https://drive.google.com/file/d/1wdE1gUz5pxwctrWGPJzscwQrFlpGljCD/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1yF7ffnApffGU8nksoKiib_C8b7qun6XR/view?usp=sharing|Log]] | [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_tyjoxAT8p4|Link]] [[https://drive.google.com/file/d/1qtEyeiwPUS1oYidWYsfFc9-2-oy1cDXi/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_olvvy19JvZ|Link]] [[https://drive.google.com/file/d/1ko8-7HQoTJjBVQ5aZ0DxhKqYFeqBYmXw/view?usp=sharing|Video]]| |Feb 23 (25)| 2. Lists and trees | [[https://drive.google.com/file/d/1qyCZOoJ_ReFRaycRB3s3FjpDdqmzvoe1/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1ONk5_6w4motgISStlXK3FM6-NX-68WVW/view?usp=sharing|Log]] | [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_dq77wstM1q|Link]] [[https://drive.google.com/file/d/1lIPQP3ULKCM583MOrCviRYpwaLmFS79X/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_6Y6ExbIexI|Link]] [[https://drive.google.com/file/d/1YOSsYNl3j0H94fDhcTDu6sDdAVsAS-bG/view?usp=sharing|Video]]| |Mar 2 (4)| 3. Higher order functions | [[https://drive.google.com/file/d/1eNr3c101181O5fI8xG-qvqGT5bH81G23/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1qvY9G7-Pws5tnHC4De2lnXAWWpXykwy-/view?usp=sharing|Log]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_8TtcLJMlRd|Link]] [[https://drive.google.com/file/d/1rESXbIPhwI1jEDVKK1s24HCr3NDRXtQR/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_FJfdTc0Oxl|Link]] [[https://drive.google.com/file/d/1lc5kdPxZRgqLayZZ63nuVFU2_TPE4M0a/view?usp=sharing|Video]]| |Mar 9 (11)| 4. Closures and lazy evaluation | [[ https://drive.google.com/file/d/1tuQrzlNgYdB6hPtIY1dqQq8DKDpQYEE2/view?usp=sharing | Slides ]] [[https://drive.google.com/file/d/1aop5jm6QWmkMJu9haPLGVQYimw9J-2_D/view?usp=sharing|Log]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_Tw3Atg9N60|Link]] [[https://drive.google.com/file/d/1PyGQB4Ijpm7wbB2pwOssMxqIkwAB22sY/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_AcvnnhV77V|Link]] [[https://drive.google.com/file/d/1hA-9TVdC_xlaBXPCmfYg0eCtvhG5eOU7/view?usp=sharing|Video]]| |Mar 16 (18)| 5. Streams and queues| [[https://drive.google.com/file/d/1ilRMEaPeGop1Mkhgk0SflAPRZtdcuyel/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1B7R81R4QN9g0VkNAdlbyIpLoF9bjWwJF/view?usp=sharing|Log]]| [[https://cw.felk.cvut.cz/brute/teacher/bbb/cw_az6FpjJHsX|Link]] [[https://drive.google.com/file/d/1VjwalKIS4vM6AIZR0zr6WXT0Ap3dis69/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_RgQomES2UN|Link]] [[https://drive.google.com/file/d/1PxSgq2A_jRCEvIn5mRibNdgrkbtPLGuO/view?usp=sharing|Video]]| |Mar 23 (25)| 6. Mutable data | [[https://drive.google.com/file/d/11F_cGthFrR_yA0gV5wMDKMYQliUjpJX6/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1qGoiK_IDnv6hgCAYXiPOVJCPTsuFOqRC/view?usp=sharing|Log]] [[https://drive.google.com/file/d/1Oo_50ft3NfLbd9G421ZXwrvrDJmOsBGz/view?usp=sharing|Brainf*ck]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_TVeGfjgIdl|Link]] [[https://drive.google.com/file/d/1rHERlnP1pnFmc2KtSJLwJhhYcurwznVg/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_nWceG3jiHZ|Link]] [[https://drive.google.com/file/d/1WmzGnid7_B10HU6K4XtKAap2A4JLphVJ/view?usp=sharing|Video]]| |Mar 30 (Apr 1)| 7. Lambda calculus| [[https://drive.google.com/file/d/174_KF-O2PKQ3Bs49JTGhG7PHFfLcuS3q/view?usp=sharing|Slides]] | [[https://cw.felk.cvut.cz/brute/bbb/course/cw_Fo0IEahHJq|Link]] (Sorry, I forgot to record)| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_1O6R9ROkch|Link]] [[https://drive.google.com/file/d/1_09yiUOEJAZ85Cm0t_seCE74dKbTZUU4/view?usp=sharing|Video]] | |Apr 6 (8)| 8. Introduction to Haskell | [[https://drive.google.com/file/d/1iHHALe-0O5Gg9g8tg_yVqkMUO2qkjok-/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1bw7IZLyzaMfj6gOmXd4P9XoPua6i6rm2/view?usp=sharing|Log]] | [[https://cw.felk.cvut.cz/brute/bbb/course/cw_fdWtuKNtVc|Link]] [[https://drive.google.com/file/d/1r3nMdjCzqus5ocu-QiUa8vu7uCbf_gFN/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_PhRAfbuTK5|Link]] [[https://drive.google.com/file/d/1McPNVYq0eJ3pACO-1_xjpFcpvcVjMl9y/view?usp=sharing|Video]]| |Apr 13 (15)| 9. Haskell types | [[https://drive.google.com/file/d/1_Wpq0cu3glZgydW_pJYIUcbWN_lwRPSh/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1s_qp-PhdPwfFtr66w66iExE9Ie6fUAHf/view?usp=sharing|Log]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_fY2CfFLRYs|Link]] [[https://drive.google.com/file/d/10MlY0GGlNcFG9-42piIo_ZAE1MBvWZHS/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_zhmrPUQvh1|Link]] [[https://drive.google.com/file/d/1Oz6zaRnOS_e2s_dKHphXC0B1Tk9ARwVb/view?usp=sharing|Video]]| |Apr 28 (7)| 10. Type Classes | [[https://drive.google.com/file/d/1Dml2RmVWXsrh9DP6mkxYAEWUs8-_zOIV/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/13l58yhGAgO7E4_6jRJZ6dkoBm9Qh_ETG/view?usp=sharing|Log]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_PkWkzqe8ib|Link]] [[https://drive.google.com/file/d/1DnKNjwB143BGvsgOymDgviMHgnmIGU5i/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_6JOAb02KjJ|Link]] [[https://drive.google.com/file/d/1c1DnblVavuD_e6CVHwjXJzUkVPyTu91a/view?usp=sharing|Video]]| |Apr 27 (29)| 11. Haskell IO | [[https://drive.google.com/file/d/1FHGLZe-mDhC7-2nOKpGsejslH-HBmAzv/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/19-rPoe3K6nsiPpXhQjTcWEjv1zUibKwG/view?usp=sharing|Log]]| [[https://drive.google.com/file/d/1u99Rj-sg0BZCXC6mf2TpdPqg_L8Rf3Ld/view?usp=sharing|Video]] | [[https://cw.felk.cvut.cz/brute/bbb/course/cw_6Ggsn2RqiI|Link]] [[https://drive.google.com/file/d/1EQRivrHP6ztUE8YKuNfAWZ22vky_zjRQ/view?usp=sharing|Video]]| |May 4 (6)| 12. Monadic parsing | [[https://drive.google.com/file/d/1TGo7n8cAPmG7lemVaoEHcmSzQ2Us9rLy/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1QxfI0aUqpgAi5-wB86n8DvVGQ9ttgSVg/view?usp=sharing|Log]] | [[https://cw.felk.cvut.cz/brute/bbb/course/cw_ZVZNja9MHH|Link]] [[https://drive.google.com/file/d/11qiRqPGzdliK1F4oXML0uG0JU8NKOwqo/view?usp=sharing|Video]]| [[https://cw.felk.cvut.cz/brute/bbb/course/cw_niK4qN2BQ5|Link]] [[https://drive.google.com/file/d/1JZg1X-Bamm-6cFw7gILU1Z_EuiEemRwR/view?usp=sharing|Video]]| |May 11 (13)| 13. State monad |[[https://drive.google.com/file/d/1_H8Tsnj7ru-pjfb7sbSowEuzWxB26QHq/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1WQi9HwjYk0rIIpQgia0_9UWaB0OY3NOn/view?usp=sharing|Log]]|[[https://cw.felk.cvut.cz/brute/bbb/course/cw_v2UFGgKqPG|Link]] [[https://drive.google.com/file/d/1z1-LsMUBoaAp6XkRJNIlkjt2LCwi2n1w/view?usp=sharing|Video]]|[[https://cw.felk.cvut.cz/brute/bbb/course/cw_DEVlSIWpD8|Link]] [[https://drive.google.com/file/d/1udXVOV_NrVPohWK8yfwywOUceldY3m5A/view?usp=sharing|Video]]| |May 18 (20)| 14. Monoids and Foldables |[[https://drive.google.com/file/d/1p4F3DlQaRe8S3zDDMkh06wKqYTY51h9f/view?usp=sharing|Slides]] [[https://drive.google.com/file/d/1keCCZ0L6BRHL9No0CAuUDV8mheK2XqVq/view?usp=sharing|Log]]|[[https://cw.felk.cvut.cz/brute/bbb/course/cw_PUV5sH9KXz|Link]] [[https://drive.google.com/file/d/1BhfYb_DbTjRbYYjCiMLmXBvOzhh98uDK/view?usp=sharing|Video]] |[[https://cw.felk.cvut.cz/brute/bbb/course/cw_wBCv3MDZ0D|Link]] | /* |May 26 (28)| 13. FP in the Real World | {{ :courses:fup:lectures:lecture13_2020.pdf |Slides}} {{ :courses:fup:lectures:adamszlachta-haskell-scala_subset_2020.pdf | Scala}} {{ :courses:fup:lectures:johnhughes-map-reduce_subset.pdf |MapReduce}} [[https://drive.google.com/file/d/1CQSqSyP2LnpNeVKoB8W-v-cJCBURDBbq/view?usp=sharing | Czech lecture ]] [[https://drive.google.com/file/d/1MlvQOa8rPnFJ5002j1uJzZhTqgf_j4mH/view?usp=sharing | English lecture ]]| {{ :courses:fup:lectures:fpp.pdf |}} {{ :courses:fup:lectures:fppatavast.pdf |}} [[https://github.com/sideeffffect/haskell-json-service|Demo]] | */ ====== Other resources ====== [1] R. Kent Dybvig: The Scheme Programming Language, Fourth Edition, MIT Press, 2009. https://www.scheme.com/tspl4/ [2] Greg Michaelson: An Introduction to Functional Programming Through Lambda Calculus, Dover edition, 2011. [3] 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 [4] Graham Hutton: Programming in Haskell, Cambridge University Press, 2016. [5] David Liu: Principles of Programming Languages, lecture notes, [[https://www.cs.toronto.edu/~david/csc324/csc324_notes.pdf|https://www.cs.toronto.edu/~david/csc324/csc324_notes.pdf]] [6] Raul Rojas: A Tutorial Introduction to the Lambda Calculus. http://www.inf.fu-berlin.de/lehre/WS03/alpi/lambda.pdf 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