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).
|Prerequisites||Strong Java programming skills|
|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.|
Architecture of concurrent systems.
Using and managing threads in Java.
Traditional mechanisms including synchronized methods and statements.
Monitor design pattern and conditional variables.
Java 5 concurrency package mechanisms.
Simple reasoning about correctness of Concurrent Programs
Starvation and Deadlocks.
Liveness and Progress.
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.
Introduction to Medium Access Control protocols and wired Ethernet.
Introduction to network routing.
Domain Name Server (DNS) protocol.
Application level protocols (HTTP) and socket-based communication.
Client/server architecture with Java sockets.
Reasoning about distributed concurrency aspects.
Method of Instruction:
Lecture presentations, interactive coursework and discussion board interaction.
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.