SluitenHelpPrint
Switch to English
Cursus: INFOFP
INFOFP
Functioneel programmeren
Cursus informatieRooster
CursuscodeINFOFP
Studiepunten (ECTS)7,5
Categorie / Niveau2 (Bachelor Verdiepend)
CursustypeCursorisch onderwijs
VoertaalEngels
Aangeboden doorFaculteit Betawetenschappen; Undergraduate School Bètawetenschappen;
Contactpersoondr. F Staals
E-mailF.Staals@uu.nl
Docenten
Contactpersoon van de cursus
dr. F Staals
Overige cursussen docent
Docent
dr. F Staals
Overige cursussen docent
Docent
dr. M.I.L. Vákár
Overige cursussen docent
Contactpersoon van de cursus
dr. M.I.L. Vákár
Overige cursussen docent
Blok
1  (06-09-2021 t/m 12-11-2021)
Aanvangsblok
1
TimeslotB: B (DI-ochtend, DO-middag, DO-namiddag)
Onderwijsvorm
Voltijd
Cursusinschrijving geopendvanaf 31-05-2021 t/m 27-06-2021
AanmeldingsprocedureOsiris
Inschrijven via OSIRISJa
Inschrijven voor bijvakkersJa
VoorinschrijvingNee
Na-inschrijvingJa
Na-inschrijving geopendvanaf 23-08-2021 t/m 24-08-2021
WachtlijstJa
Plaatsingsprocedureadministratie onderwijsinstituut
Cursusdoelen

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.
Inhoud

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.

Course form
  • 2 × 2 hours lectures
  • 1 × 2 hours practicals
  • 1 × 2 hours group tutorials
Attendance is not strictly mandatory (albeit recommended).

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
Competenties
-
Ingangseisen
-
Verplicht materiaal
Boek
Hutton, Graham: Programming in Haskell. (30 euro bij Amazon.de, veel te duur bij Amazon.nl)
Kosten materiaal:30,00
Aanbevolen materiaal
Dictaat
Collegedictaat beschikbaar op de webpagina http://www.cs.uu.nl/docs/vakken/fp
Software
Haskell (beschikbaar in MyWorkPlace)
Werkvormen
Hoorcollege

Werkcollege

Toetsen
Eindresultaat
Weging100
Minimum cijfer-

SluitenHelpPrint
Switch to English