Uw huidige browser heeft updates nodig. Zolang u niet update zullen bepaalde functionaliteiten op de website niet beschikbaar zijn.
Let op: het geselecteerde rooster heeft overlappende bijeenkomsten.
Volgens onze gegevens heb je nog geen vakken behaald.
Je planning is nog niet opgeslagen
Let op! Uw planning heeft vakken in dezelfde periode met overlappend timeslot
Functioneel programmeren
Cursusdoel
By the end of the course you will be able to
- solve problems using a ‘functional approach’. That is, define what needs to be computed using techniques and concepts such as
- recursion,
- pattern matching,
- composition,
- higher order functions,
- algebraic data types,
- monads,
- immutable and persistent data structures, and
- laziness.
- reason about the correctness and the types of functions.
- develop a small, real world game in the functional language Haskell
- - there is a practical assignment which counts for 50% of the grade,
- - there is a midterm which counts for 15% of the grade,
- - there is a final exam which counts for the remaining 35% of the exam
- (and there is a bonus assignment, and some mandatory lab-assignments).
Vakinhoudelijk
This course introduces functional programming through the programming language Haskell.
In contrast with the language C# – introduced in Imperatief/Game/Mobiel programmeren – which is based on statements, organized in methods and classes, functional programming is based entirely on expressions and functions. This shifts the focus from how a program operates to what is does.
Concrete topics treated in this course include higher-order functions, parametric and ad-hoc polymorphism (also known as generics and overloading in other programming languages), algebraic data types and pattern matching.
These ideas appear not only in Haskell, but in other modern languages such as Scala, Swift or Kotlin. An important part of the course is devoted to reasoning about programs, either by equations or by induction.
The language Haskell imposes a strong separation between pure computations and those with side-effects, such as input and output.
Monads are introduced to model the idea of sequential computation in a functional language. Similar abstractions such as functors are also part of the contents of this course.
- 2 × 2 hours lectures
- 1 × 2 hours practicals
- 1 × 2 hours group tutorials
Literature
- Slides from the lectures
- Mandatory reading: "Programming in Haskell" by Graham Hutton
- Additional material:
- Lecture Notes from 2015/2016
- "Learn You a Haskell for Great Good" by Miran Lipovača
- Haskell Wikibook
Werkvormen
Werkcollege
Toetsing
Eindresultaat
Verplicht | Weging 100% | ECTS 7,5
Ingangseisen en voorkennis
Ingangseisen
Er is geen informatie over verplichte ingangseisen bekend.
Voorkennis
Programming skills
Voertalen
- Engels
Cursusmomenten
Gerelateerde studies
- Gametechnologie vanaf 2015-2016
- Gametechnologie vanaf 2023-2024
- Informatica en Informatiekunde vanaf 2023-2024
- Informatica en Informatiekunde vanaf 2024-2025
- Informatica en wiskunde vanaf 2019-2020
- Informatica en wiskunde vanaf 2022-2023
- Informatica en wiskunde vanaf 2024-2025
- Informatica vanaf 2023-2024
- Informatica vanaf 2024-2025
- Informatica voor 2019-2020
- Informatica voor HBO-studenten
- Kunstmatige intelligentie (vanaf 2020-21)
- Minor Informatica
- Wiskunde en toepassingen vanaf 2019-2020
- Wiskunde en toepassingen vanaf 2022-2023
Tentamens
Er is geen tentamenrooster beschikbaar voor deze cursus
Verplicht materiaal
Materiaal | Omschrijving |
---|---|
BOEK | Hutton, Graham: Programming in Haskell. (30 euro bij Amazon.de, veel te duur bij Amazon.nl) |
Aanbevolen materiaal
Materiaal | Omschrijving |
---|---|
DICTAAT | Collegedictaat beschikbaar op de webpagina http://www.cs.uu.nl/docs/vakken/fp |
SOFTWARE | Haskell |
Coördinator
dr. M.I.L. Vákár | m.i.l.vakar@uu.nl |
Docenten
dr. M.I.L. Vákár | m.i.l.vakar@uu.nl |
dr. F Staals | F.Staals@uu.nl |
Inschrijving
Inschrijving
Van dinsdag 30 mei 2023 tot en met vrijdag 23 juni 2023
Na-inschrijving
Van maandag 21 augustus 2023 tot en met dinsdag 22 augustus 2023
Inschrijving niet geopend
Permanente link naar de cursuspagina
Laat in de Cursus-Catalogus zien