Module overview
Aims and Objectives
Learning Outcomes
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Decompose a high-level software system into loosely coupled portions
- Analyse programs to identify opportunities for introducing concurrency and parallelism
- Identify data races in shared data structures and protect them using threading primitives
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Use multi-threading primitives to parallelise a shared-memory program
- Use standard networking protocols to communicate between software on two different machines
- Use GPU parallelism to accelerate a simple iteration space
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Explain the strengths and weaknesses of packet oriented and connection oriented systems
- Analytically provide upper bounds on acceleration due to parallelism
- Describe common internet networking protocols
Transferable and Generic Skills
Having successfully completed this module you will be able to:
- Identify the environmental impact of parallel computing systems
- Describe the pros and cons of distributed systems for system reliability
- Explain how network encryption can improve system security
Syllabus
Networking concepts:
- Connection vs connectionless approaches
- Streams vs routed packets
- Reliable/unreliable delivery
- Addresses and naming
Practical networking:
- IP networks (main protocols and services, _not_ the deep implementation)
- Sockets
- Clients and servers
- HW to SW channels
Parallel programming concepts:
- Multiple threads
- Race conditions and atomics
- Parallel computing using iteration spaces
- Introduction to GPUs
Distributed computing:
- Combining networks and parallel processing
- Load balancing
- MPI
- Map-reduce
- Efficiency and power consumption of distributed compute
Learning and Teaching
Teaching and learning methods
- Lectures
- Guided self-study
- Labs as part of the AICE Lab Programme which will cover practical aspects
Type | Hours |
---|---|
Lecture | 32 |
Independent Study | 78 |
Specialist Laboratory | 20 |
Preparation for scheduled sessions | 20 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Computing assignment | 20% |
Exam | 40% |
Class Test | 20% |
Computing assignment | 20% |