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:
- 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.
- 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.
- 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 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.
- 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.
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- External censorship
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 14 days before the start of the re-exam.
Criteria for exam assesment
See learning outcome.
- Practical exercises