6 points, SCA Band 2, 0.125 EFTSL
Postgraduate - Unit
Refer to the specific census and withdrawal dates for the semester(s) in which this unit is offered.
- First semester 2017 (Day)
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. This unit draws on units in distributed databases and grid computing. It will also cover the technology and application of cloud computing with particular reference to programming frameworks (e.g. MapReduce, Hadoop etc).
On successful completion of this unit, students should be able to:
- solve basic problems in distributed computing, especially in relation to synchronisation, distributed transactions, concurrency control, distributed consensus;
- explain the differences between various distributed computing models and widely used distributed computing schemes;
- describe a variety of parallel programming paradigms, synchronisation and parallelisation primitives, message passing, data parallel, tuple space;
- identify computational tasks that benefit from parallelism;
- design and implement a parallel-distributed software system.
Examination (3 hours): 60%, In-semester assessment: 40%
Minimum total expected workload equals 12 hours per week comprising:
- Contact hours for on-campus students:
- Two hours of lectures
- One 2-hour laboratory
- Additional requirements (all students):
- A minimum of 8 hours independent study per week for completing tutorial and project work, private study and revision.
See also Unit timetable information
((FIT9131 or FIT5131 or FIT9017) and (FIT9134 or FIT5134 or FIT9018) and (FIT9135 or FIT5135 or FIT9020)) or equivalent. Prerequisite knowledge includes advanced programming skills, knowledge of Java, and an introductory-level knowledge of C.