NDAA09013U Advanced Programming (AP)
MSc Programme in Computer Science
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 selection of the topics covered will be informed by current and
emerging trends. The possible topics covered may include, but are
not limited to:
- applicative (functional) programming
- concurrent programming
- declarative (logic) programming
- distributed programming
- generic programming
- parallel programming
- reactive programming
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.
Skills to
- Use program structuring principles and design patterns, such as monads, to structure the code so 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.
- Use parallel algorithm skeletons such as map-reduce to write data exploring programs.
- 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.
- Write idiomatic programs in a logic programming language.
Competences to
- Quickly acquaint themselves with advanced programming techniques, from academic literature and/or technical documentation.
- Use those techniques to solve challenging, realistic problems.
- Write correct, efficient, and maintainable programs with clear separation of concerns.
- Give an assessment of her/his own code, based on a systematic evaluation of correctness, selection of algorithms and data structures, error scenarios, and elegance.
See Absalon when the course is set up.
- Category
- Hours
- Exam
- 25
- Lectures
- 29
- Practical exercises
- 21
- Preparation
- 131
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
- Credit
- 7,5 ECTS
- Type of assessment
- Written assignment, 7 daysIndividual, written take-home exam.
- Exam registration requirements
To participate in the exam, four to six mandatory assignments must be passed. The exact number of required assignments will be given at course start.
- Aid
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- External censorship
- Re-exam
The re-exam consists of an individual written assignment (4 days), different from the regular exam, together with an approximately 20 minute oral examination without preparation. The part-examinations are not weighted but assessed individually; an overall assessment is then applied.
If student is not qualified then qualification can be achieved by hand-in and approval of equivalent assignments. The assignments must be submitted no later than Monday in week 51.
Criteria for exam assesment
See learning outcome.
Course information
- Language
- English
- Course code
- NDAA09013U
- Credit
- 7,5 ECTS
- Level
- Full Degree Master
- Duration
- 1 block
- Placement
- Block 1
- Schedule
- A
- Course capacity
- No limit
- Continuing and further education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinators
- Ken Friis Larsen (8-6e696f647576687143676c316e7831676e)