Modern computer systems contain parallelism in both hardware and software. This unit covers parallelism in both general purpose and application specific computer architectures and the programming paradigms that allow parallelism to be exploited in software. This unit examines both shared memory and message passing paradigms in both hardware and software; concurrency, multithreading and synchronicity; parallel, clustered and distributed supercomputing models and languages. Students will program in these paradigms.
On successful completion of this unit, students should be able to:
- explain the principles and techniques behind the design of parallel systems;
- describe and distinguish variety of parallel architectures, such as bus-based, massively parallel, cluster, vector; knowledge of a variety of parallel programming paradigms, synchronisation and parallelisation primitives, message passing, data parallel, and tuple space;
- design, develop and debug parallel programs using a variety of paradigms, such as locking, concurrency, synchronicity, parallelism, scheduling, and communication across networks.
- explain fundamentals of model connection-oriented and connectionless communication in a Client Server architecture;
- analyse failure types in a Distributed System for achieving fault tolerance and error recovery within such system;
- write a report on new trends in of multi-process algorithms by investigation and analysis of research papers about distributed systems. And communicate their knowledge orally and in written report, so they can express own reflections and attitudes in the area of research;
- work independently to analyse a problem and form a plan on how to work towards a solution using distributed programming models to achieve process distribution and communication;
- collect and analyse various types of information, and develop practical skills in creating parallel distributed applications;
- cooperate effectively within small groups and work in practical design, implementation, and debug in simulated distributed systems;
- construct theoretical models and implement them in a virtualised computing environment; and present all their work in practical demonstration.
In-semester assessment: 100%
Minimum total expected workload equals 12 hours per week comprising:
(a.) Contact hours for on-campus students:
- Two hours of lectures
- One 2-hour laboratory/
(b.) Additional requirements (all students):
- A minimum of 8 hours independent study per week for completing lab and project work, private study and revision.
See also Unit timetable information
Recommended knowledge: operating systems, including synchronisation and interprocess communication mechanisms; advanced computer architecture, including pipelining techniques.