Registry
Module Specifications
Archived Version 2011 - 2012
| |||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||
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 notionsThe 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 algorithmsParallelisation strategies; parallel searching and sorting; parallel dense matrix algorithms. Scheduling strategies; load balancing; work sharing.Communication and synchronisationMutual exclusion; locks & semaphores; read-write locks; monitors and condition variables; barriers. Liveness; deadlock; deadlock avoidance, detection, and recovery.Design strategiesThread pools; client-server architecture. Producer/consumer patterns; shared buffers; termination detection. Resource management; fairness; priority inversion. Software transactional memory.ImplementationsMulticore architectures; caches; volatile variables; memory models; cas instruction. Implementation of locks, semaphores, monitors, barriers. Implementation of shared data structures with and without locking.Practical workConcurrency in Java using Java API; concurrency in C using OpenMP; . Practical exercises in designing and implementing multi-threaded applications usinh Java and OpenMp. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
Indicative Reading List
| |||||||||||||||||||||||||||||||||||||||||
Other Resources None | |||||||||||||||||||||||||||||||||||||||||
Programme or List of Programmes | |||||||||||||||||||||||||||||||||||||||||
Archives: |
|