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.
