bozo_i
at inf.elte.hu
bocquet
at inf.elte.hu
isti115
at inf.elte.hu
IPM-18feszFUNLEG
Some previous experience in functional programming is recommended, but not assumed. For the ones who have not learned FP before, it might be useful to attend the lab sessions for the “Functional Programming” (IP-12FFUNPEG
) BSc course in parallel, but it is not required.
If you are having difficulty with the course material, you are encouraged to contact your instructor as soon as possible. You can get help in various ways:
All students are encouraged to ask questions and make suggestions during class time. It is your responsibility to keep up with the course material. Ask for help before it is too late!
Please note that the instructors’ contact information is available at the top of this page.
After completing this course, you should
The course exposes students to pure functional programming. It develops basic skills required to define pure functions and data types.
In accordance to the attendance regulations, you cannot pass the course if you miss the practice sessions more than 3 times.
During each practice (except the first one), there is a small assignment in TMS. The result can be 0, 1 or 2. There will be three additional larger homework assignments, for 4 points each. These results are added up and at the end of the semester the sum has to be at least 12.
You need to meet the tutorial requirements in order to be allowed to take the final exam.
We are expecting that the final examination will be an oral exam, online in Teams. This may change depending on the evolution of the COVID-19 pandemic and academic regulations during the semester.
The examinee may be required to show a personal identification card with photograph. After the exam tasks are given, the examinee is provided with 25 minutes of preparation time. The tasks consist of two Haskell programming exercises. Then, the examinee must present their solutions. The examiners may ask additional questions about any topic from the course curriculum.
During examination, you may only use the documentation, API search, GHCi and an excerpt of common functions, if not specified otherwise. Internet access is not available. Violation of rules results in immediate failure of the exam.
Types in Haskell: basic types, list types, tuple types, function types, polymorphic and overloaded functions, currying, partial application.
Function definitions: conditional expressions, guarded equations, pattern matching (tuple patterns, list patterns), lambda expressions, operation sections.
List comprehensions: multiple generators, dependant generators, guards.
Recursion: recursive functions over lists, recursive functions with multiple arguments.
Higher-order functions: defining higher-order functions, passing functions to higher-order functions.
Defining new types: type synonyms, defining algebraic data types, defining functions over new data types, using parametric data types (Maybe
and Either
).
Declaring type classes: declaring new type classes, making a type an instance of a type class.
Materials:
There is no official textbook for the course. However, for additional learning, or for clarifying important concepts, we recommend:
You can find additional helpful resources here: