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.
- Property-based testing of functions and stateful APIs
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 their 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.
It is strongly recommended to have some experience with functional programming, corresponding to Chapters 2, 4, 5, and 6 of "Learn You a Haskell for Great Good", for example.
Academic qualifications equivalent to a BSc degree is recommended.
- Category
- Hours
- Lectures
- 29
- Preparation
- 131
- Practical exercises
- 21
- Exam
- 25
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
PhD’s can register for MSc-course by following the same procedure as credit-students, see link above.
- Credit
- 7,5 ECTS
- Type of assessment
- Written assignment, 7 daysThe exam is individual
- Exam registration requirements
To qualify for the exam 4-6 mandatory assignments must be submitted and 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 is an individual written assignment different from the ordinary exam.
The duration of the re-exam is 5 days.
If student is not qualified for the exam, qualification can be achieved by submitting and approval of the mandatory 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
- Course is also available as continuing and professional education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinators
- Andrzej Filinski (andrzej@di.ku.dk)