Semantiek van Functioneel Programmeren

6 EC

Semester 2, periode 4

5062SEFP6Y

Eigenaar Bachelor Informatica
Coördinator dr. Malvin Gattinger
Onderdeel van Minor Logic and Computation, jaar 1Bachelor Informatica, jaar 3Dubbele bachelor Wiskunde en Informatica, jaar 3

Studiewijzer 2021/2022

Globale inhoud

In this course you will learn Functional Programming from a theoretical perspective.

  • Basics of the lambda calculus
  • Functional programming in Haskell
  • Abstraction, Algebraic Data Types, Type Classes
  • Basics of Category Theory: Functors, Applicatives, Monads
  • Immutability and data structures in functional languages
  • Functional style in imperative languages
  • Functional Specification and Testing

Studiemateriaal

Literatuur

Software

  • Glasgow Haskell Compiler - use haskell.org/ghcup to install

  • Visual Studio Code - or your favorite editor with good Haskell tools

Leerdoelen

  • Students will be able to explain the differences between imperative and functional programming.
  • Students will be able to explain and apply the rules of the lambda calculus,
  • Students will be able to write Haskell programs using algebraic data types, recursion and monads.
  • Students will be able to prove statements about terms and programs by structural induction.
  • Students will be able to find counterexamples to conjectures using functional programs and specification.

Onderwijsvormen

  • Hoorcollege
  • Werkcollege
  • Laptopcollege
  • Zelfstudie

New material will be presented in the lectures. You will then work on related exercises during the werkcollege and laptopcollege. The werkcollege will focus on theory and exercises will mostly be pen-and-paper. The laptopcollege is mostly for programming exercises in Haskell.

Verdeling leeractiviteiten

Activiteit

Uren

Hoorcollege

16

Laptopcollege

16

Tentamen

3

Werkcollege

16

Zelfstudie

117

Totaal

168

(6 EC x 28 uur)

Academische vaardigheden

nvt

Aanwezigheid

Aanwezigheidseisen opleiding (OER-B):

  • Voor practica en werkgroepbijeenkomsten met opdrachten geldt in principe een aanwezigheidsplicht. Wanneer studenten niet voldoen aan deze aanwezigheidsplicht kan dit als gevolg hebben dat het onderdeel niet met een voldoende kan worden afgerond.

Aanvullende eisen voor dit vak:

You're expected to be present during werkcollege and laptopcollege. If you are absent more than 3 times you may not attend the resit exam. If you cannot attend due to health reasons, please contact your TA before the session.

Toetsing

Onderdeel en weging Details

Eindcijfer

40%

Tentamen

Moet ≥ 5 zijn

60%

Homework average

Moet ≥ 5 zijn

1 (12%)

Homework 1

1 (12%)

Homework 2

1 (12%)

Homework 3

1 (12%)

Homework 4

1 (12%)

Homework 4

1 (12%)

Homework 5

1 (12%)

Homework 6

1 (12%)

Homework 7

The homework counts 60% and the exam counts 40% towards the course grade.

Homework:

  • There will be 7 homeworks.
  • Deadlines for homework are strict.

Exam and resit:

  • The exam covers the whole course.
  • The exam will be with pen and paper (not digital), and a combination of multiple-choice and open questions.
  • The resit grade replaces the exam grade. It does not replace the homework grade.

Inzage toetsing

See Canvas.

Opdrachten

There will be seven homeworks (one per week), consisting of both theoretical and practical exercises. Homeworks must be done and submitted individually. Discussing the assignments with other students is allowed and encouraged. Your homework will be graded within a few days and you will receive feedback including comments via Canvas. For each homework you will receive a grade between 1 and 10. The average of all homeworks is your homework grade.

Fraude en plagiaat

Over het algemeen geldt dat elke uitwerking die je inlevert ter verkrijging van een beoordeling voor een vak je eigen werk moet zijn, tenzij samenwerken expliciet door de docent is toegestaan. Het inzien of kopiëren van andermans werk (zelfs als je dat hebt gevonden bij de printer, in een openstaande directory of op een onbeheerde computer) of materiaal overnemen uit een boek, tijdschrift, website, code repository of een andere bron - ook al is het gedeeltelijk - en inleveren alsof het je eigen werk is, is plagiaat.

We juichen toe dat je het cursusmateriaal en de opdrachten met medestudenten bespreekt om het beter te begrijpen. Je mag bronnen op het web raadplegen om meer te weten te komen over het onderwerp en om technische problemen op te lossen, maar niet voor regelrechte antwoorden op opgaven. Als in een uitwerking gebruik is gemaakt van externe bronnen zonder dat een bronvermelding is vermeld (bijvoorbeeld in de rapportage of in commentaar in de code), dan kan dat worden beschouwd als plagiaat.

Deze regels zijn er om alle studenten een eerlijke en optimale leeromgeving aan te kunnen bieden. De verleiding kan groot zijn om te plagiëren als de deadline voor een opdracht nadert, maar doe het niet. Elke vorm van plagiaat wordt bestraft. Als een student ernstige fraude heeft gepleegd, kan dat leiden tot het uitschrijven uit de Universiteit. Zie voor meer informatie over het fraude- en plagiaatreglement van de Universiteit van Amsterdam: www.student.uva.nl

Weekplanning

Please refer to Canvas for the weekly topics and for homework deadlines.

Rooster

Het rooster van dit vak is in te zien op DataNose.

Honoursinformatie

nvt.

Aanvullende informatie

This course will be  taught in English.

Verwerking vakevaluaties

This is the first time we are offering this course and we look forward to hearing your feedback!

Contactinformatie

Coördinator

  • dr. Malvin Gattinger

Please refer to Canvas for how to contact the (two) lecturers and the (three) teaching assistants.