Teaching & Learning

COMP201P - Networking and Concurrency

This database contains the 2016-17 versions of syllabuses. Syllabuses from the 2015-16 session are available here.

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 COMP201P
Year 2
Prerequisites Strong Java programming skills
Term1
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
Traditional mechanisms including synchronized methods and statements.
Semaphores.
Monitor design pattern and conditional variables.
Java 5 concurrency package mechanisms.

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.
Modulation and encoding of analogue and digital signals.

Local Area Networking (LAN)
Data link control protocols.
Network multiplexing.
Introduction to Medium Access Control protocols and wired Ethernet.
Switched Ethernet.

Internet

TCP/IP protocol.
Introduction to network routing.
Domain Name Server (DNS) protocol.
Application level protocols (HTTP) and socket-based communication.

Distributed systems

Client/server architecture with Java sockets.
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 components combined;
  • Obtain a minimum mark of 30% in each component worth ≥ 30% of the module as a whole.