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.

Resources:

COMP201P Moodle site

Java Threads, 3rd Edition by Scott Oaks and Henry Wong, O’Reilly Media, Inc. (2004) ISBN: 978-0596007829 (Or a similar general book about Java thread programming.)

Concurrency: state models & Java programs by Jeff Magee and Jeff Kramer, John Wiley & Sons Ltd. (2006) ISBN: 978-0470093559 (Only parts of this book will be used for demonstrations.)

Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea, Addison Wesley (2006) ISBN: 978-0321349606 (For more advanced students that wish to gain a full understanding of Java concurrency.)

Computer Networks: A Systems Approachby Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann; 5th ed. (20 April 2011, ISBN 978-0123850591) or 4th ed. (16 April 2007, ISBN 978-0123705488).