Recommended prerequisite for participation in
the module
Knowledge corresponding to the courses Imperative Programming and
Object Oriented Programming, Computer architecture and Operating
Systems, as well as programming experience corresponding to the
project module in the 3rd semester
Content, progress and pedagogy of the
module
Disclaimer.
This is an English translation of the module. In case of
discrepancy between the translation and the Danish version, the
Danish version of the module is valid.
PURPOSE
To develop and maintain modern software, students must be able to
use advanced programming techniques especially for handling
concurrency
Learning objectives
Knowledge
The student must acquire knowledge of:
- hardware architecture for concurrency: single-core, multi-core,
shared memory, caches, local memory, distributed memory, SIMD and
GPU
- mechanisms for concurrency (processes, threads, fibers,
synchronization)
- mechanisms for shared memory parallelism with locks and
semaphores, lock free, non-blocking algorithms, transaction-based
memory
- message passing concurrency and how concurrent programming can
be used for parallel programming
- program structuring principles and design patterns for handling
concurrency
- linguistic abstractions for concurrency
- the challenges and limitations of concurrency (race conditions,
dead-locks, performance, bottleneck) in practical software
development
Skills
The student must acquire the following skills:
- be able to explain the techniques and concepts involved using
the subject's terminology
- be able to use program structuring principles and design
patterns for concurrency
- be able to reason datalogically about and with the concepts and
techniques concerned
Competences
The student must be able to:
- quickly familiarize yourself with advanced programming
techniques from academic literature and/or technical
documentation
- use these techniques to solve challenging, realistic
problems
- write correct, safe, efficient and maintainable programs with
clear separation of concerns
- apply testing and profiling to evaluate the correctness and
performance of concurrent programs
- use logging, tracing and performance analysis tools to diagnose
concurrency problems in systems
- provide an assessment of their own code, based on a systematic
evaluation of correctness, choice of algorithms and data
structures, performance, failure scenarios and elegance
Type of instruction
The training shall be organised according to the general
teaching forms referred to in § 17
Extent and expected workload
The student is expected to spend 30 hours per ECTS, which for
this activity means 150 hours.
Exam
Exams
Name of exam | Concurrent Programming |
Type of exam | Written or oral exam |
ECTS | 5 |
Permitted aids | Aids (if any) will be posted on the course page in
MOODLE |
Assessment | 7-point grading scale |
Type of grading | External examination |
Criteria of assessment | The criteria of assessment are stated in the Examination
Policies and Procedures |
Additional information
Contact: Study Board for Computer Science via
cs-sn@cs.aau.dkor 9940
8854