Concurrent Programming

2025/2026

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 examConcurrent Programming
Type of exam
Written or oral exam
ECTS5
Permitted aidsAids (if any) will be posted on the course page in MOODLE
Assessment7-point grading scale
Type of gradingExternal examination
Criteria of assessmentThe 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

Facts about the module

Danish titleConcurrent Programming
Module codeDSNSWB634
Module typeCourse
Duration1 semester
SemesterSpring
ECTS5
Language of instructionDanish and English
Empty-place SchemeYes
Location of the lectureCampus Aalborg
Responsible for the module

Organisation

Education ownerBachelor of Science (BSc) in Engineering (Software)
Study BoardStudy Board of Computer Science
DepartmentDepartment of Computer Science
FacultyThe Technical Faculty of IT and Design