Please note: you are viewing unit and programme information
for a past academic year. Please see the current academic year for up to date information.
Unit name |
Concurrency |
Unit code |
COMS20600 |
Credit points |
10 |
Level of study |
I/5
|
Teaching block(s) |
Teaching Block 1 (weeks 1 - 12)
|
Unit director |
|
Open unit status |
Not open |
Pre-requisites |
COMS11300 Procedural Programming
COMS11700 Theory of Computation
|
Co-requisites |
None |
School/department |
Department of Computer Science |
Faculty |
Faculty of Engineering |
Description including Unit Aims
To provide students with the theory, principles and practical implementations of concurrent and communicating systems. Aims include gaining an understanding of the fundamentals via exposure to the theory of concurrent processes, and understanding how to apply the concurrent techniques to practical problems.
Intended Learning Outcomes
Successful completion of this unit should lead to the student:
- Understanding how concurrent systems can be specified in a formal language, such as CSP
- Understanding the role of communication in concurrent systems
- Understanding the problems when scaling concurrent systems
- Be able to specify, design and implement simple concurrent systems
- Have an understanding of basic usage of a contemporary concurrent programming language, and how to use it to implement a concurrent, communicating system.
Teaching Information
20 lectures plus 10x 2h labs
Assessment Information
2-hour written exam (50%), practical implementation coursework (50%)
The coursework aims to strengthen students' understanding of the role of communication and concurrency in concurrent systems in a practical context. It requires students to specify, design and implement a concurrent system using a contemporary concurrent programming language.
This covers 3 of the learning objectives as indicated by [x]:
Successful completion of this unit should lead to the student:
- Understanding how concurrent systems can be specified in a formal language, such as CSP [x] Understanding the role of communication in concurrent systems
- Understanding the problems when scaling concurrent systems [x] Be able to specify, design and implement simple concurrent systems [x] Have an understanding of basic usage of a contemporary concurrent programming language, and how to use it to implement a concurrent, communicating system.
Reading and References
- "Concurrent Programming: Principles and Practice”, Gregory Andrews
- “Principles of Concurrent and Distributed Programming (2nd Edition)”, Mordechai Ben-Ari
- “Concurrent and Real-time Systems, The CSP approach”, Steve Schneider
- “Distributed algorithms”, Nancy A. Lynch
- “Concurrent systems: an integrated approach to operating systems, database, and distributed systems”, Jean Bacon