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 course will focus on applicative (functional) and concurrent programming in Haskell, including some key associated libraries and frameworks.
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 and its potential effects such 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.
- 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.
- Construct systematic test suites for programs and modules, including property-based tests where relevant.
Competences to
- Use advanced programming 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.
General academic qualifications equivalent to a BSc degree in Computer Science, Software Development, or a closely related subject, are recommended.
- Category
- Hours
- Lectures
- 29
- Preparation
- 145
- Practical exercises
- 28
- Exam
- 4
- 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
- On-site written exam, 4 hours under invigilation
- Type of assessment details
- The exam is an on-premises written exam where the student is
asked questions related to the programming assignments and the
course curriculum.
The exam is individual. - Examination prerequisites
To qualify for the exam, the student must obtain at least 50% of the possible total points in the mandatory assignments, as well as a nonzero amount of points in every assignment. The assignments may be submitted in groups of up to three students
- Aid
- All aids allowed except Generative AI and internet access
- Marking scale
- 7-point grading scale
- Censorship form
- External censorship
- Re-exam
The re-exam is an oral exam with questions based on the course curriculum and the mandatory assignments.
The duration of the oral exam is 30. minutes including votation, without preparation.
For the oral re-exam written aids are allowed.
If the student did not already fulfill the exam registartion requirements before the ordinary exam, the mandatory assignments must be sumitted 3 weeks befor the re-exam. The mandatory assignmets must be approved for the student to be able to participate in the re-exam.
If the student has already submitted and had some of the mandatory assignments approved before the ordinary exam, these assignments may be resubmitted for the re-examination.
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 limitation – unless you register in the late-registration period (BSc and MSc) or as a credit or single subject student.
Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinators
- Troels Henriksen (5-71847871835074793e7b853e747b)