Object-Oriented and Functional Programming

2024-2025

General Information

Course Code XB_0019
Credits 6 EC
Period P1
Course Level 200
Language of Tuition English
Faculty Faculty of Science
Course Coordinator dr. A.J. van der Ploeg
Examiner dr. A.J. van der Ploeg
Teaching Staff dr. A.J. van der Ploeg
Part of programme(s)

Practical Information

You need to register for this course yourself. The (de)registration deadlines can be found on VU.nl

Teaching Methods Seminar, Lecture

Course Objective

The goal of this course is to obtain familiarity and experience with advanced programming language concepts, such as inheritance and pattern matching, as well as improving general programming skills.

After taking this course, you will be able to:

  • Understand & apply concepts from object-oriented programming such as subtyping and inheritance. (Knowledge and understanding) (Applying knowledge and understanding)
  • Understand & apply concepts from functional programming such as pattern matching and higher-order functions. (Knowledge and understanding) (Applying knowledge and understanding)
  • Design and implement a moderately large program from scratch. (Applying knowledge and understanding) (Making judgements)
  • Produce clear, readable code. (Applying knowledge and understanding) (Making judgements) (Lifelong learning skills)

Course Content

The lectures cover various programming concepts from Object-oriented and Functional programming and how they occur in various programming languages. These topics include inheritance, subtyping, parametric polymorphism, side effects, higher-order functions, and pattern matching. The lectures also cover how to produce clear, readable code.

We will use the programming language Scala, as it supports a wide array of programming techniques.

There are several individual programming exercises that offer practice with writing programs with the concepts discussed in the lectures. These give the students experience with designing and implementing moderately large programs from scratch, train the students in producing clear, readable code, and provide an opportunity to use the advanced concepts from the lectures.

There are also several multiple-choice exercises that offer practice with reading programs that involve the concepts discussed in the lectures. These typically present a small program, with accompanying multiple-choice questions such as what is the output of this program, what is the type of certain function, what type of error is present, etc? These programs help with understanding the details of how the program concepts work. Such questions will be presented on canvas and in the lectures. The exam is a digital multiple-choice proctored exam taken at the VU which mainly presents these types of questions.

Additional Information Teaching Methods

Lectures: 4 hours per week (in total 28 hours).
Practical sessions: 4 hours per week (in total 28 hours).

Method of Assessment

Written exam (40% of grade) and programming exercises (60% of grade).

Both grades have to be at least 5.5. There is no resit opportunity for the programming exercises.

Entry Requirements

Computer Programming (XB_40011) or Systems Programming Project (XB_0123) (formerly known as Computer Programming Project (X_400556)).

Literature

Materials will be provided through Canvas.

Additional Information Target Audience

Bachelor Computer Science (year 2)