CO871 Advanced Java for Programmers
Cannot be taken with CO538 Concurrency Design and Practice
OverviewConcurrent design and programming skills are of growing importance as multi-core processor technology advances. A sound understanding of fundamental concurrency concepts and obstacles is essential. This module introduces fundamental theories of concurrency. 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 programmes.
Concurrency and parallelism, and their applications to software design.
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.
Message-passing techniques: process-oriented programming, mailboxes, tuplespaces.
This module appears in:
22 hours of lectures, 10 hours of classes
Understand the concepts of concurrency and parallelism, and how they are useful when designing software
Be able to identify and exploit opportunities for concurrency and parallelisation within a software system
Be familiar with common concurrency problems, and how to mitigate or avoid them
Be able to predict and measure the performance characteristics of a parallel system
Be familiar with the general details of current multi-core architectures and programming paradigms, and evaluate their suitability for typical real-world applications.