Students
Tuition Fee
Start Date
Medium of studying
Duration
Details
Program Details
Degree
Masters
Major
Computer Programming | Software Development | Software Engineering
Area of study
Information and Communication Technologies
Course Language
English
About Program

Program Overview


Program Overview

The University of Copenhagen offers a Master's program in Computer Science, with a course titled "Advanced Programming (AP)".


Course Description

The purpose of this course is to provide practical experience with sophisticated programming techniques and paradigms from a language-based perspective. The focus is on high-level programming and systematic construction of well-behaved programs. The course will focus on applicative (functional) and concurrent programming in Haskell, including some key associated libraries and frameworks.


Learning Outcome

At course completion, the successful student will have:


  • Knowledge of:
    • Higher-level program structuring patterns for separating concerns.
    • The basics of message-passing concurrency, and of how concurrent programming can be used for parallel programming.
    • Program structuring principles and design patterns for dealing with software errors.
    • Property-based testing of functions and stateful APIs
  • Skills to:
    • Use program structuring principles and design patterns, such as monads, to structure the code and its potential effects such that there is a clear separation of concerns.
    • Use a parser combinator library to write a parser for a medium-sized language with a given grammar, including changing the grammar so that it is on an appropriate form.
    • Implement simple concurrent/distributed servers using message passing, with appropriate use of synchronous and asynchronous message passing.
    • Use program structuring principles and design patterns for making reliable distributed systems in the presence of software errors.
    • Construct systematic test suites for programs and modules, including property-based tests where relevant.
  • Competences to:
    • Use advanced programming techniques to solve challenging, realistic problems.
    • Write correct, efficient, and maintainable programs with clear separation of concerns.
    • Give an assessment of their own code, based on a systematic evaluation of correctness, selection of algorithms and data structures, error scenarios, and elegance.

Literature

See Absalon for the course literature.


Recommended Academic Qualifications

Programming ability in at least two substantially different languages, and familiarity with basic software-development principles (modularity, abstraction, systematic testing, ...) will be expected. Familiarity with basic functional programming is strongly recommended.


Teaching and Learning Methods

The course will consist of lectures, mandatory assignments, and exercise labs.


Workload

The workload for the course is as follows:


  • Category: Lectures, Preparation, Practical exercises, Exam
  • Hours: 29, 124, 28, 25
  • Total: 206

Exam

The exam is an individual written assignment, 7 days. To qualify for the exam, the student must obtain at least 50% of the possible total points in the mandatory assignments.


Course Information

  • Language: English
  • Course code: NDAA09013U
  • Credit: 7.5 ECTS
  • Level: Full Degree Master
  • Duration: 1 block
  • Placement: Block 1
  • Schedule: A

Study Board

The study board for this course is the Study Board of Mathematics and Computer Science.


Contracting Department

The contracting department for this course is the Department of Computer Science.


Contracting Faculty

The contracting faculty for this course is the Faculty of Science.


Course Coordinators

The course coordinators for this course are Troels Henriksen.


See More
How can I help you today?