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:

COMP2007 Moodle site


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.