Page 1 of 1

Module Code - Title:

CS5741 - CONCURRENCY AND PARALLELISM IN SOFTWARE DEVELOPMENT

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

1

Tutorial

0

Other

0

Private

0

Credits

6

Grading Type:

Prerequisite Modules:

Rationale and Purpose of the Module:

Parallel and Concurrent programming skills are of growing importance as super computer and multi-core processor technology advances. A sound understanding of the associated concepts and obstacles is essential. This module introduces fundamental theories of parallel and concurrent software development. It discusses how designs can be made parallel and identifies the common faults in concurrent programs and how to avoid them. It introduces a range of widely used programming paradigms and techniques for writing concurrent and large scale parallel systems.

Syllabus:

Concurrency and parallelism, and their applications to software. Identifying parallelisable problems and parallelisation techniques. Parallel algorithms and how to design them. Common faults in concurrent and parallel programs. Complexity, performance measurement and scheduling techniques. Multi-core and emerging architectures. Multi-core programming paradigms. Data-parallel techniques: SIMD, MIMD, vector processing and GPGPUs. Shared-memory techniques: conventional threads and locks, structured parallelism, transactional memory using OpenMP (Open Multi-Processing). Message-passing techniques using MPI (Message Passing Interface).

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students should be able to: 1. Demonstrate how the key concepts of parallelism and concurrency are of use when designing and developing software solutions. 2. Identify and exploit opportunities for concurrency and parallelisation when developing a software system. 3. Avoid or reduce the likelihood of common problems associated with parallel and concurrent systems.

Affective (Attitudes and Values)

On successful completion of this module, students should be able to: 1. Develop software for a multi-core system and evaluate its suitability for typical real-world applications. 2. Communicate with other professionals using appropriate technical vocabulary.

Psychomotor (Physical Skills)

N/A

How the Module will be Taught and what will be the Learning Experiences of the Students:

Research Findings Incorporated in to the Syllabus (If Relevant):

On successful completion of this module, students should be able to: 1. Critically evaluate opportunities and applications of concurrency and parallelism for existing commercial software solutions. 2. Understand and engage with relevant research in the area of parallel and concurrent software development.

Prime Texts:

Moti ben Ari (2006) Principles of Concurrent and Distributed Programming , Boston: Addison-Wesley
Michael J. Quinn (2003) Parallel Programming in C with MPI and OpenMP , McGraw Hill Education Group
Peter Pacheco (1996) Parallel Programming with MPI ,

Other Relevant Texts:

Doug Lea (1999) Concurrent Programming in java: Design Principles and Patterns 2nd Edition , Addison Wesley
Kirk, David; Hwu, Wen-Mei W. (2010) Programming Massively Parallel Processors: A Hands on Approach ,

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Module Leader:

faeq.alrimawi@ul.ie