Functional Programming

6 EC

Semester 2, period 5

5314FUPR6Y

Owner Master Logic
Coordinator dr. Malvin Gattinger
Part of Master Logic,

Course manual 2022/2023

Course content

This course starts with a fast introduction to Haskell and then focuses on how it can be used as a research tool. We will focus on implementations of explicit and symbolic model checking for modal logics. The course finishes with a group project for which a list of topics will be provided, but in consultation with the lecturer students may also choose their own topic from the whole Master of Logic spectrum.

Study materials

Literature

Software

Objectives

  • Students will understand the basics of Haskell: types, functions, lists and recursion.
  • Students will understand and be able to use typeclasses and abstractions such as applicatives and monads to write concise and well-structured Haskell programs.
  • Students will be able to implement model checking and other logic algorithms.
  • Students will be able to use formal specification and property-based testing to test programs and to refute conjectures.
  • Students will be able to use functional programming to investigate a research question.
  • Students will be able to explain and document their own programs.

Teaching methods

  • Lecture
  • Laptop seminar
  • Presentation/symposium
  • Working independently on e.g. a project or thesis
  • Self-study

New topics and material will be presented in the lectures, followed by homework assignments to deepen and apply your knowledge. The laptop seminars are meant to work on the homeworks together and during the second part of the course also on your group projects.

It is crucial that you spend both time programming on your own and discussing code with others.

Learning activities

Activity

Hours

 

Hoorcollege

22

 

Laptopcollege

20

 
Deeltoets

2

 

Presentatie

4

 

Self study

120

 

Total

168

(6 EC x 28 uur)

Attendance

This programme does not have requirements concerning attendance (TER-B).

Additional requirements for this course:

There is no formal requirement, but attendance of all parts is strongly recommended.

Assessment

Item and weight Details

Final grade

40%

Homeworks

1 (20%)

FP Homework 1

1 (20%)

FP Homework 2

1 (20%)

FP Homework 3

1 (20%)

FP Homework 4

1 (20%)

FP Homework 5

30%

Midterm exam

30%

Group project

0%

Topic

0%

Beta version

40%

Presentation

60%

Report and code

The course grade is the weighted average of the average homework grade, the midterm exam grade and the group project grade. There are no cut-offs or other requirements for passing the course.

The midterm exam is closed-book with pen and paper.

Late or missing submissions will receive 0 points.

Inspection of assessed work

See Canvas.

Assignments

Homework must be submitted individually. Discussing homework with others is always allowed and recommended, but you must never share text or code with others.

Homework will be graded using automated testing, but you will also receive individual written feedback.

The final course projects will be done in groups of 3 or 4 students. You will have to submit a "beta" version for which you will receive feedback during the project.

Fraud and plagiarism

The 'Regulations governing fraud and plagiarism for UvA students' applies to this course. This will be monitored carefully. Upon suspicion of fraud or plagiarism the Examinations Board of the programme will be informed. For the 'Regulations governing fraud and plagiarism for UvA students' see: www.student.uva.nl

Course structure

See Canvas.

Timetable

The schedule for this course is published on DataNose.

Honours information

Not applicable.

Contact information

Coordinator

  • dr. Malvin Gattinger

There will be an online chat platform during the course to communicate with the coordinator and other students.