CS313 – Computer Systems & Concurrency

Credits 20
Level 3
Semester 1
Prerequisites CS210 Computer Systems & Architecture
Availability Possible elective
Contact Lectures: 20 | Tutorials: 0 | Labs: 20
Assignments: 60 | Self study: 100
Assessment 50% by classwork, 50% by two-hour exam.
Resit Resit is by a 2-hour examination.
Lecturer Dr Martin Goodfellow | Kostas Liaskos

General Aims

To enable the student to develop a deeper understanding of highly concurrent hardware and software systems. The class will also further the student’s knowledge of the need for, and the design and implementation of, those other vital hardware and software components of a concurrent system, namely multiprocessors and their interconnections, operating systems and networks. The interactions between many of these components will be investigated by means of significant practical work that consolidates the lecture content in the context of: (i) multiprocessor architectures, (ii) concurrency, (iii) protection and security and (iv) networked and concurrent applications. Software developed in appropriate programming languages will form the basis of much of the practical work thus enabling the student to enhance their software design and implementation skills in this domain.

Learning Outcomes

  • To understand the concepts of software and hardware design for multiprocessing, OS process and thread models, process and thread scheduling, and inter-process communication
  • To appreciate the issues that affect the design, implementation and performance of multiprocessor systems and to understand current approaches to ameliorate these
  • To appreciate the problems of process and thread synchronisation and understand concurrency mechanisms
  • To demonstrate an understanding of OS protection and security mechanisms, and network security techniques
  • To display practical skills necessary to develop networked, and thread safe concurrent applications


  • Multiprocessing: shared memory multiprocessors; message-passing multiprocessors; hardware multithreading; graphics processing units; multiprocessor network topologies; multiprocessor benchmarking and performance models.
  • OS process management: process and thread models; inter-process communication; CPU scheduling; scheduling of multiprocessor systems, process synchronisation (critical sections, semaphores, monitors, atomic transactions); deadlocks.
  • System protection (access control, capability- and language-based protection)
  • Security: threats; cryptography and data encryption; authentication and user authentication; non-repudiation; certification authorities; security defences; email privacy; network security (IP security, wireless network security); web security
  • Client/Server communication (sockets)
  • Building object-oriented concurrent applications

Recommended Text/Reading*

* This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

Computer Organization and Design: The Hardware/software Interface, Fourth Edition. David A. Patterson and John L. Hennessy. Morgan Kaufmann, 2009.

Operating Systems Concepts with Java, Phil Ballard and A. Silberschatz, P.B. Galvin and G. Gagne John Wiley & Sons 2007.

Computer Networking: A Top Down Approach, 5th edition Phil Ballard and . Jim Kurose and Keith Ross Addison-Wesley, April 2009.