6 ECTS credits
150 u studietijd

Aanbieding 2 met studiegidsnummer 4013056FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Wolfgang De Meuter (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
150 contacturen Zelfstudie en externe werkvormen
Inhoud
PREREQUISITES
This course starts from scratch and merely requires that students are already able to program. However, basic knowledge about higher order languages and first-class functions (such as Scheme, Lisp, Python, Ruby, Scala, Clojure, Erlang or Prolog) will be a big plus. On top of this, a basic knowledge of programming language theory (grammars, regular expressions, automata and lambda calculus) is assumed.
 
CONTENTS
Introduction to Haskell and Functional Programming, Higher-order Functions
Algebraic Data Types, Numbers, Strings, Tuples, Lists.
Type Classes: Definition and Instantiation.
Equational Reasoning and Structural Induction, Fusion Laws.
Type Classes: Implementation and Variations.
Input and Output using the IO-Monad, random numbers.
Functors and Applicative Functors, Monoids.
Monads and Monad Transformers: definition, monad laws, implementation, taxonomy of monads, the IO monad
Parsers and Parser combinators: definition and usage
Concurrent Programming: the par-function, threads in the IO monad, STM
Hindley-Milner Typing: definition and inference.
Studiemateriaal
Digitaal cursusmateriaal (Vereist) : All transparencies and all the code will be provided to the students, Canvas
Praktisch cursusmateriaal (Aanbevolen) : Functional Programming, Many standard textbooks on functional programming are available. They will be referred to during the lectures.
Bijkomende info
All transparencies and all the code will be provided to the students through the learning platform. Many standard textbooks on functional programming are available. Large parts of the course have been built based on "Learn You a Haskell for Great Good" by Miran Lipovaca.
 
Leerresultaten

Algemene competenties

Knowledge and Understanding: This course is an advanced study of functional programming. Functional programming languages are programming languages that don't feature assignment statements (i.e. = or set!), nor sequencing (i.e. begin or {}) and standard I/O facilities since the latter are but assignments on global input and output state variables. Because of these constraints, functional programming languages have a number of scientific advantages w.r.t. imperative languages. On the one hand, these constraints engender a radically different way of programming. The goal of the course is to introduce students to programming techniques that are used by such pure languages in order to construct realistic software. On the other hand, it is our purpose to introduce students to the scientific advantages that are a consequence of the restrictions of such languages.
 
Application of Knowledge and Understanding: Students have to be able to apply the contents of the course in the conception of a software project in a functional programming language. This skill is tested by the fact that students have to implement a concrete project.
 
Making Judgements: Students have to be able to make a concrete judgement about the applicability of functional programming in a given situation. Once applicable, the role of (or the absence of) static typing in their choice of programming language has to be justified.
 
Learning Skills: We will acquaint the student with two functional programming languages that are sufficiently representative to provide the student with the necessary skills to classify other languages. This will also provide the student with enough programming experience in order to understand more advanced FP topics.

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 50% van het eindcijfer

Examen Schriftelijk bepaalt 50% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • Oral theorical examination met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: The theoretical part consists of an oral exam about the topics discussed.

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Written practical exam met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: The practical part consists of a written exam in which the Haskell programming skills of the students are tested.

Aanvullende info mbt evaluatie
The exam consists of a theoretical and a practical part. The theoretical part consists of an oral exam about the topics discussed. The practical part consists of a programming project during which the Haskell programming skills of the students are tested. Both parts are equally important for the final mark. Absence for one of the constituents implies absence for the entire course.
 
Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)