NDAA09013U Advanced Programming
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 programmings structure patterns for seperating conerns.
- The basis of message-passing concurrent. And perhaps how concurrent programming can be used for parallel programming.
- Programming structuring principles and design patterns for dealing with software errors.
Skills in:
- Use programming 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 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 programming 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 of:
- 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. Submission in Absalon.
- 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
- Individual written assignment 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 (Tues 8-12 + Thurs 8-17)
- 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-6f6a70657677697244686d326f7932686f)