Official course description, subject to change:
Preliminary info last published 24/05-22

Advanced Programming, MSc CS

Course info
Language:
English
ECTS points:
7.5
Course code:
KSADPRO2KU
Participants max:
128
Offered to guest students:
yes
Offered to exchange students:
yes
Offered as a single subject:
yes
Price for EU/EEA citizens (Single Subject):
10625 DKK
Programme
Level:
MSc. Master
Programme:
MSc in Computer Science
Staff
Course semester
Semester
Efterår 2023
Start
28 August 2023
End
29 December 2023
Exam
Exam type
ordinær
Internal/External
ekstern censur
Grade Scale
7-trinsskala
Exam Language
GB
Abstract

This course addresses advanced programming techniques, with a special attention on functional programming and its applications. The course is a perfect balance of theory and practice, with focus on the Scala programming language.

Description

The student who passes this course will know relevant advanced programming techniques for designing, testing and executing challenging realistic programs in Scala, in a correct and efficient way. Such techniques, although learned in the Scala programming language, are relevant for many other mainstream programming languages used in industry.

  • Introduction to Scala 3
  • Property-based testing 
  • Monads and streams 
  • Call-by-name and lazy programming 
  • Immutable data-structures 
  • Purely functional parallel programming 
  • Examples of purely functional data structures and algorithms 
  • Functional probabilistic programming

Formal prerequisites
  • Important: Advanced Programming builds on basic functional programming including higher-order functions, anonymous functions (or lambdas, delegates or anonymous inner classes), side-effect-free programming, generic types, and methods. This can be obtained by following Functional Programming on BSWU or KSD. If you have not studied functional programming in your bachelor, then you should register out of Advanced Programming (take it next year) and take an elective on functional programming now.
  • Note for SD students: It is important that SD students have taken the course Functional Programming before entering Advanced Programming.
  • You should know basic concepts of programming language theory and implementation (for instance by having followed Programmer som Data or Programming Language Concepts and Implementation)
  • You should also be able to program in Java (You will survive the course if you can program well in C# or any other mainstream object-oriented language, but your experience may be steeper).
  • You should know basic discrete mathematics (sets, functions, relations).
  • You should know basic algorithms and data structures (sorting, searching, collection data structures and basics of algorithms complexity).
Intended learning outcomes

After the course, the student should be able to:

  • Design, test and execute functional programs in Scala
  • Use expressive types (polymorphism, type functions, higher-kinded types) to document library interfaces
  • Recognize monadic structures in computation, use libraries following monadic structure and design monadic libraries
  • Reason about eager and lazy evaluation, including advantages and disadvantages of either
  • Reason about API designs in pure and stateful style, including exploring various designs and considering advantages and disadvantages of either
  • Use eager and lazy evaluation to design data structures and benefit from existing lazy data structures such as streams
  • Implement solutions based on research-based methods presented in relevant papers in library and language design
  • Design and implement solutions using lenses, reason about lenses
Ordinary exam
Exam type:
A: Written exam on premises, External (7-point scale)
Exam variation:
A11: Written exam on premises. Open book exam.