SubjectsSubjects(version: 978)
Course, academic year 2025/2026
   Login via CAS
Programming in Haskell - NPRG068
Title: Programování v Haskellu
Guaranteed by: Department of Software Engineering (32-KSI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2025
Semester: summer
E-Credits: 3
Hours per week, examination: summer s.:2/0, Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech
Teaching methods: full-time
Additional information: https://teaching.mff.cuni.cz/nprg068-web/
Guarantor: RNDr. Miroslav Kratochvíl, Ph.D.
Teacher(s): RNDr. Miroslav Kratochvíl, Ph.D.
Class: Informatika Bc.
Classification: Informatics > Informatics, Software Applications, Computer Graphics and Geometry, Database Systems, Didactics of Informatics, Discrete Mathematics, External Subjects, General Subjects, Computer and Formal Linguistics, Optimalization, Programming, Software Engineering, Theoretical Computer Science
Annotation -
Programming in Haskell aimed at practical problem solving -- run-time system, standard library, useful tools.
Last update: Kopecký Michal, RNDr., Ph.D. (04.06.2018)
Aim of the course -

The main goal is to teach efficient creation of useful and practical software in Haskell. The course covers several most popular libraries and some efficient solutions to complicated problems that exploit functional programming.

Last update: Kratochvíl Miroslav, RNDr., Ph.D. (06.01.2026)
Course completion requirements -

During the semester, students will solve 3 homework assignments; the aim of the homeworks is to implement a simple task as a self-contained program. The expected coding effort on each program is less than 500 lines of code; the expected time available for working on each assignment (between the task announcement and submission deadline) is 3 to 4 weeks.

The exam takes a form of short discussion of the submitted assignment solutions. At the exam, the students solely prove their own knowledge of the concepts used in their own submitted solutions, and amend their solutions in case of issues. Because of the form and goals of the exam, use of own materials or electronics is forbidden. All possible topics discussed in the exam are fully covered by the lecture materials (slides) shared on the course website.

Necessary conditions for successfully finishing the course:

1. Students must submit all homework solutions before the deadline. The quality of their solution (extent of the features implemented) must satisfy at least the minimal extent specification. The specifications of minimal and recommended extent of the homework solutions are provided together with the homework assignments.

2. Students must prove the knowledge and understanding of their submitted solutions at the exam; in case of insufficient solution quality (or extent of the features implemented) the students must prove their understanding of methods that would complete the task to the recommended solution extent.

After satisfying the necessary conditions, the student's grade is derived from the quality and extent of the homework solutions as verified or amended at the exam. Principially, submitting all homework solutions on time at the recommended extent (and proving the knowledge at the exam) guarantees the best grade.

Last update: Kratochvíl Miroslav, RNDr., Ph.D. (15.01.2026)
Literature -

1. Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell - Code You Can Believe In. O'Reilly, November 2008, ISBN-10: 0596514980, ISBN-13: 978-0596514983. http://book.realworldhaskell.org/read/

2. Learn You A Haskell For Great Good (community version). https://learnyouahaskell.github.io/

Last update: Kratochvíl Miroslav, RNDr., Ph.D. (06.01.2026)
Syllabus -
  • Haskell type system, typeclasses, Hindley-Milner system, System Fc
  • Monads, State, Monad transformers
  • Haskell programs from inside in GHC: Core, STG, thunks, WHNF, seq, compilation, modularization
  • Cabal
  • Standard IO library
  • Standard typeclasses
  • Standard containers, Text and ByteString
  • Connection to UNIX, optparse
  • Parsing combinators, parsec
  • Pretty printing
  • Parallelism, STM, parallel frameworks
  • Server applications -- Scotty, Yesod, Servant
  • Lens library, Prism, Iso, Traversal
  • Overview of several lazy data structures: Finger construction, lazy queues, ...
  • Simple graphical output: Gloss, JuicyPixels
  • Testing: HSpec, Quickcheck, Criterion

Last update: Kratochvíl Miroslav, RNDr., Ph.D. (07.09.2020)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html