COMP2007 - Networking and Concurrency
Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).- Code
- COMP2007
- Year
- 2
- Prerequisites
- First year Computer Architecture course COMP1001 and programming courses COMP1007 and COMP1008.
- Term
- 1
- Taught By
- Kevin Bryson (100%)
- Aims
- In terms of concurrency, to have the ability to reason about concurrent behaviour and employ appropriate concurrency control primitives in situations where there is simultaneous access to shared resources. This is a practical course, grounded in a theoretical understanding of concurrency and the problems it brings. In terms of networking, to understand the fundamental principles of networking; from low level details such as properties of communication channels and data encoding; to high level aspects such as how the Internet works in terms of the TCP/IP protocol and developing distributed systems. A practical approach involving writing ‘network simulators’ in Java will be employed to reinforce the concepts of both the concurrency and network parts.
- Learning Outcomes
- To be able to: (*) describe the problems of interleaving; (*) apply a range of standard concurrency control primitives to simple concurrency problems; (*) design and implement concurrent Java programs; (*) reason informally about their correctness; (*) describe key underlying concepts concerning computer networking; (*) describe how local area networks work; (*) describe how the Internet works and key protocols used on the Internet; (*) develop distributed systems which work across the Internet.
Content:
- Concurrent programs
- Architecture of concurrent systems.
Using and managing threads in Java. - Synchronisation primitives
- Mutual Exclusion in Java.
Semaphores.
Monitors and condition variables.
Java thread synchronisation, synchronised methods and synchronised statements. - Simple reasoning about correctness of Concurrent Programs
- Starvation and Deadlocks.
Liveness and Progress.
Safety. - Hardware aspects of networking
- Analogue and digital transmission.
Properties of different communication channels.
Encoding of analogue and digital signals.
Signal to noise, error detection and error correction. - Local Area Networking (LAN)
- Data link control protocols.
Network multiplexing.
Circuit-switching and packet-switching.
Ethernet. - Internet
- TCP/IP protocol.
Domain Name Server (DNS) protocol.
Application level protocols (HTTP, VoIP). - Distributed systems
- Client/server architecture with sockets.
Distributed object systems (Java RMI).
Reasoning about distributed concurrency aspects.
Method of Instruction:
Lecture presentations, interactive coursework and discussion board interaction.
Assessment:
The course has the following assessment components:
- Written Examination ( 2.5 hours, 85%)
- Coursework Section (2 pieces, 15%)
To pass this course, students must:
- Obtain an overall pass mark of 40% for all sections combined
The examination rubric is:
Answer 1 Question out of 2 from Part I and 1 Question out of 2 from Part II. All questions carry equal marks.
Resources:
Java Threads by Scott Oak & Henry Wong, O'Reilly, 2004. (Or a similar book about Java threads.)
Concurrency: state models & Java programs by J. Magee and J. Kramer.
John Wiley & Sons Ltd, 2006 (or later edition). Book web site.
Data and Computer Communications by William Stallings, Pearson Education (Prentice Hall), 2011. Book student resources web site.

