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

Registry

Module Specifications

Archived Version 2011 - 2012

Module Title Concurrent Programming
Module Code CA670
School School of Computing

Online Module Resources

Module Co-ordinatorProf Joe MorrisOffice NumberL1.13
NFQ level 9 Credit Rating 7.5
Pre-requisite None
Co-requisite None
Compatibles None
Incompatibles None
Description

The module aims to give students a deep understanding of the principles underlying concurrent programming and the implementation of concurrency on modern hardware, as well as practical skills in designing, implementing, and testing (for correctness and performance) multi-threaded programs in traditional and object-oriented languages.

Learning Outcomes

1. Explain the role of concurrency, and the correctness and performance goals of concurrent programs and the pitfalls in achieving them.
2. Write parallel algorithms for important applications that include searching, array sorting, and matrix manipulation.
3. Manage data sharing in concurrent programming using a range of synchronisation primitives, and design good resource sharing schemes for multithreaded applications.
4. Implement shared data structures with and without the use of locks.
5. Use a range of paradigms for implementing concurrent applications, including thread pools and producer/consumer patterns.
6. Write down the proof obligations for parallel programs, follow correctness arguments, and test parallel programs for correctness, performance, and scalability.
7. Explain the features of hardware that impact on concurrency, and implement a range of communication and synchronization primitives.
8. Design, implement, and test complex concurrent programs in at least two programming languages.



Workload Full-time hours per semester
Type Hours Description
Lecture36No Description
Directed learning50Completion of problem sets
Assignment Completion16Assessed exercises/projects
Independent Study90Library work, reading, self-assessment
Total Workload: 192

All module information is indicative and subject to change. For further information,students are advised to refer to the University's Marks and Standards and Programme Specific Regulations at: http://www.dcu.ie/registry/examinations/index.shtml

Indicative Content and Learning Activities

Basic notions
The idea of concurrency; creating and managing threads; nondeterminacy; granularity; scalability; costs. Correctness properties of concurrent programs; reasoning about them; testing for performance & correctness; common pitfalls.

Parallel algorithms
Parallelisation strategies; parallel searching and sorting; parallel dense matrix algorithms. Scheduling strategies; load balancing; work sharing.

Communication and synchronisation
Mutual exclusion; locks & semaphores; read-write locks; monitors and condition variables; barriers. Liveness; deadlock; deadlock avoidance, detection, and recovery.

Design strategies
Thread pools; client-server architecture. Producer/consumer patterns; shared buffers; termination detection. Resource management; fairness; priority inversion. Software transactional memory.

Implementations
Multicore architectures; caches; volatile variables; memory models; cas instruction. Implementation of locks, semaphores, monitors, barriers. Implementation of shared data structures with and without locking.

Practical work
Concurrency in Java using Java API; concurrency in C using OpenMP; . Practical exercises in designing and implementing multi-threaded applications usinh Java and OpenMp.

Assessment Breakdown
Continuous Assessment25% Examination Weight75%
Course Work Breakdown
TypeDescription% of totalAssessment Date
Reassessment Requirement
Resit arrangements are explained by the following categories;
1 = A resit is available for all components of the module
2 = No resit is available for 100% continuous assessment module
3 = No resit is available for the continuous assessment component
Unavailable
Indicative Reading List

  • Brian Goetz, with Tim Peierls... [et al.]: 2006, Java concurrency in practice, AddisonWesley, 0321349601
  • Michael J. Quinn: 2004, Parallel Programming in C With Mpi and Openmp, McGraw-Hill, 978-0071232654
Other Resources

None
Programme or List of Programmes
ECSAStudy Abroad (Engineering & Computing)
ECSAOStudy Abroad (Engineering & Computing)
GCSEGraduate Cert in Software Engineering
GSEGraduate Diploma in Software Engineering
MCMM.Sc. in Computing
NAVNMUNon Award Visitors- UCD/DCU
Archives: