Module overview
This module explores the linked ideas of networking and distributed computing, looking at how one can scale up to large computational systems using channels that move between nodes and between hardware and software. The course covers the fundamentals of networking from the data-link layer up, and looks at the ideas and algorithms underlying the most common network protocols. It then explores how these can be used to create computational systems that process multiple parts in parallel, using a number of abstractions. The course is intended to provide students with useable skills for performing large compute in modern frameworks, while also understanding the technology underlying those frameworks.
Aims and Objectives
Learning Outcomes
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Identify data races in shared data structures and protect them using threading primitives
- Decompose a high-level software system into loosely coupled portions
- Analyse programs to identify opportunities for introducing concurrency and parallelism
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Describe common internet networking protocols
- Explain the strengths and weaknesses of packet oriented and connection oriented systems
- Analytically provide upper bounds on acceleration due to parallelism
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
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Use standard networking protocols to communicate between software on two different machines
- Use GPU parallelism to accelerate a simple iteration space
- Use multi-threading primitives to parallelise a shared-memory program
Syllabus
Networking concepts:
-Connection vs connectionless approaches
-Streams vs routed packets
-Reliable/unreliable delivery
-Addresses and naming
Practical networking:
-IP networks
-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 |
---|---|
Preparation for scheduled sessions | 12 |
Lecture | 36 |
Independent Study | 90 |
Specialist Laboratory | 12 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Exam | 60% |
Coursework | 40% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Exam | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Exam | 100% |