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:
- 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.
- 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.
- 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, 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.
- 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.
- Practical exercises