• PRESIDENT'S WELCOME
  • ALUMNI
  • EDUCATIONAL TRUST
  • BUSINESS
  • LIBRARY
  • HOME
You can go anywhere from here

Registry

Module Specifications

Current Academic Year 2009 - 2010
This information is provisional and subject to change.

Module Title Concurrency & Distributed Systems
Module Code CA670
School Computing
Online Module Resources

Module Co-ordinatorProf Joe MorrisOffice NumberL1.13
Level 1 Credit Rating 7.5
Pre-requisite None
Co-requisite None
Module Aims

The module aims to give students a deep understanding of the principles underlying concurrent programming, and to give them practical skills in developing multi-threaded programs in traditional and object-oriented languages



Learning Outcomes

By the end of this module students should : Understand the purpose of, and pitfalls inherent in, concurrent programming. Understand the implementation of concurrency. Understand the need for resource sharing, the problems that arise, and how to solve them using semaphores, monitors, message passing, etc. Be able to reason about the correctness of concurrent programs. Know the features for supporting concurrency in several computer languages. Understand Java's concurrency model, its strengths and shortcomings Write a complex multi-threaded application.



Indicative Time Allowances
Hours
Lectures 27
Tutorials 18
Laboratories 18
Seminars
Independent Learning Time 49.5

Total 112.5
Placements
Assignments
NOTE
Assume that a 7.5 credit module load represents approximately 112.5 hours' work, which includes all teaching, in-course assignments, laboratory work or other specialised training and an estimated private learning time associated with the module.

Indicative Syllabus

The idea of concurrency; threads; nondeterminacy; granularity; costs.

Memory model; multicore architectures; caches; shared resources; Creating & managing threads.

Parallel algorithms; searching and sorting; parallelisation.

Communication and synchronisation; mutual exclusion; monitors.

Semaphores; barriers; semaphore implementation.

Correctness properties of concurrent programs; reasoning about them.

Scalability; testing for performance & correctness; common pitfalls.

Liveness; deadlock; deadlock avoidance, detection, and recovery.

Thread pools; client-server architecture.

Shared data structures; queues; stacks; lock-free data structures; CAS instruction.

Resource management; fairness; priority inversion.

Software transactional memory.

Communication via message-passing; rendezvous.

Practical exercises in using Java in multi-threaded applications.

Assessment
Continuous Assessment25% Examination Weight75%
Indicative Reading List

Supplementary:

Java Concurrency in Practice, Goetz et al, Addison-Wesley (2006) ISBN 0321349601

Java Threads, 3rd Edition, Scott Oaks, Henry Wong, O’Reilly (2004) ISBN 0-596-00782-5

Foundations of Multithreaded, Parallel, and Distributed Programming , Gregory R. Andrews, Addison-Wesley (2000) ISBN 0-201-35752-6

Programme or List of Programmes
BSSAStudy Abroad (DCU Business School)
BSSAOStudy Abroad (DCU Business School)
ECSAStudy Abroad (Engineering & Computing)
ECSAOStudy Abroad (Engineering & Computing)
GSEGraduate Diploma in Software Engineering
HMSAStudy Abroad (Humanities & Soc Science)
HMSAOStudy Abroad (Humanities & Soc Science)
MSEMSc in Software Engineering
SHSAStudy Abroad (Science & Health)
SHSAOStudy Abroad (Science & Health)
Timetable this semester: Timetable for CA670
Date of Last Revision25-JUL-08
Archives: