NDAA09013U Advanced Programming (AP)

Volume 2015/2016
Education

MSc Programme in Computer Science

Content

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.

 

Learning Outcome

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.

Programming ability in at least two substantially different languages. Some basic familiarity with functional programming is strongly recommended, corresponding to Chapters 2, 4, 5, and 6 of "Learn You a Haskell for Great Good", for example.
Lectures, mandatory homeworks
  • Category
  • Hours
  • Exam
  • 20
  • Lectures
  • 29
  • Practical exercises
  • 14
  • Preparation
  • 143
  • Total
  • 206
Credit
7,5 ECTS
Type of assessment
Written assignment, 1 week
Individual, 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.