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
The actual contents of this course may vary in different instantiations, based on the composition of the course team.
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 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
- 20
- Lectures
- 29
- Practical exercises
- 14
- Preparation
- 143
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
- Credit
- 7,5 ECTS
- Type of assessment
- Written assignment, 1 weekIndividual, 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.
- Marking scale
- 7-point grading scale
- Censorship form
- External censorship
- Exam period
Preferably in the exam week.
- Re-exam
If student is not qualified then qualification can be achieved by hand-in and approval of equivalent assignments.
Re-exam is based on individual written assignment (5 days) different from the regular exam, and with an approximately 20 minute oral examination without preparation, external grading on the 7-point grading scale. Submission in Absalon.
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
Course responsibles
- Ken Friis Larsen (8-6e696f647576687143676c316e7831676e)