Advanced Programming (AP)
Course 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 course will focus on applicative (functional) programming in Haskell and concurrent programming in Erlang, including some key associated libraries and frameworks.
MSc Programme in Computer Science
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.
- 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
- 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.
Lectures, mandatory assignments, exercise labs.
See Absalon when the course is set up.
Programming ability in at least two substantially different
languages, and familiarity with basic software-development
principles (modularity, abstraction, systematic testing, ...) will
be expected.
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.
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.
- ECTS
- 7,5 ECTS
- Type of assessment
-
Written assignment, 7 days
- Type of assessment details
- The exam is individual
- Exam registration requirements
-
To qualify for the exam, the student must obtain at least 50% of the possible total points in the 6 mandatory assignments, distributed as at least 16.7% in each of the two main parts of the course.
The assignments may be submitted in groups of up to two students.
- 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 did not already qualify for the ordinary exam, qualification for the re-exam can be achieved by (re)submission and approval of the mandatory assignments.
The assignments must be submitted no later than three weeks before the re-exam date.
Criteria for exam assessment
See learning outcome.
Single subject courses (day)
- Category
- Hours
- Lectures
- 29
- Preparation
- 131
- Practical exercises
- 21
- Exam
- 25
- English
- 206
Kursusinformation
- Language
- English
- Course number
- NDAA09013U
- ECTS
- 7,5 ECTS
- Programme level
- Full Degree Master
- Duration
-
1 block
- Placement
- Block 1
- Schedulegroup
-
A
- Capacity
- No limitation – unless you register in the late-registration period (BSc and MSc) or as a credit or single subject student.
- Studyboard
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinator
- Troels Henriksen (5-64776b647643676c316e7831676e)
Are you BA- or KA-student?
Courseinformation of students