DCU Home | Our Courses | Loop | Registry | Library | Search DCU

Registry

Module Specifications

Archived Version 2009 - 2010

Module Title Concurrent Programming
Module Code CA670
School School of 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)
CAPDPhD
CAPMMSc
CAPTPhD-track
ECSAStudy Abroad (Engineering & Computing)
ECSAOStudy Abroad (Engineering & Computing)
EEPDPhD
EEPMMEng
EEPTPhD-track
GCSEGrad Certificate in Software Engineering
GSEGraduate Diploma in Software Engineering
HMSAStudy Abroad (Humanities & Soc Science)
HMSAOStudy Abroad (Humanities & Soc Science)
MEPDPhD
MEPMMEng
MEPTPhD-track
MSEMSc in Software Engineering
NAVNMUNon Award Visitors- UCD/DCU
SHSAStudy Abroad (Science & Health)
SHSAOStudy Abroad (Science & Health)
SMPECSingle Module Programme (Eng & Comp)
Archives: