Trimester 1 - 2015

Unit Description

Parallel and distributed computing platforms are vital to high performance computing systems in the commercial and scientific domains as they provide the capabilities to manage, process and analyze enormous volumes of data. As a result, the ability to develop parallelization strategies for complex processing tasks is a key skill for software engineers and data scientists.

This unit provides in-depth coverage of the algorithms and principles for developing software for UNIX-based parallel and distributed computer systems. The unit provides an overview of UNIX processes, the development of multi-threaded software and the use of system calls to mange synchronization and inter-process communication. We also cover the principles of shared resources, mutual exclusion and describe implementation strategies for developing efficient multi-threaded and multi-process software for high-performance computation. Throughout this unit, students will develop software for both distributed platform and single-machine platforms through a range of lab exercises and programming assignments.

Unit Orientation

Assignments

Lectures

Lecture Slides Notes
Lecture 01 View View
Lecture 02 View View
Lecture 03 View View
Lecture 04 View View
Lecture 05 View View
Lecture 06 View View
Lecture 07 View View
Lecture 08 View View
Lecture 09 View View
Lecture 10 View View
Lecture 11 View View
Lecture 12 View View
Lecture 13 View View
Lecture 14 View View
Lecture 15 View View
Lecture 16 View View
Lecture 17 View View
Lecture 18 View View
Lecture 19 View View
Lecture 20 View View
Lecture 21 View View
Lecture 22 View View
Lecture 23 View View
Lecture 24 View View

Lab Exercises