Skip to main content

Computer Networks:  2019-2020



Schedule S1(CS&P)Computer Science and Philosophy

Schedule S1Computer Science

Schedule S1(M&CS)Mathematics and Computer Science



*** Important information for students *** Detailed lecture notes will be provided on the course materials page. The lecturer will be available during the timetabled sessions (Tuesdays 10am-12pm [BST] and Friday 10am-11am[BST]) to answer questions and have discussions with students, and will also provide a an email question/answer service at other times. You can also access the recorded lectures from 2019 in the Weblearn recorded lectures section.

This course covers the core theory of Computer Networks in order for students to understand the science underpinning computer communications, such as basic architectural principles of computer networking, including how the Internet works today and applications of theory in current technology.

The course will cover the problems of Computer Networks and the standard ways to approach and resolve these problems, including relevant real-world, state-of-the-art examples. The practicals for the course will allow students to apply theory to real-world examples.

Learning outcomes

At the end of the course, the students should be able to construct and debug a small-medium IP network, and be able to understand wider networking issues.


1. Networking abstracts, problems and common themes

  1. Communication
  2. Asynchronous knowledge (e.g. 2 generals problem)
  3. Constraints and Trade-offs (Bandwidth/Latency/Reliability/Jitter/Money/Politics)
  4. Scaling
  5. OSI Model

2. Physical Layer

  1. Getting a bit from a->b (probably).
  2. Lasers, phones and copper loops
  3. Physical limitations (see 1 c).

3. Link Layer

  1. What use?
  2. Point to point.
  3. Ethernet, hubs and Switches

4. Scaling the Link Layer – Ethernet networking

  1. Mac learning
  2. Redundancy / loops / Protocols (Why are these as they are? E.g. 1 c).

5. Network Layer

  1. What use?
  2. IP (side note on arp)
  3. IP Routing.
  4. Unicast/Broadcast/Multicast

6. Scaling the network layer

  1. Routing protocols
  2. Distance Vector vs Link state

7. Making use of your network

  1. Label-switched networks and source-routing

8. Internet scale

  1. It’s BIG!
  2. BGP, GSRs, separate data plane.
  3. Private addresses, NATs, Ipv6… (The common classes of things that we do that lead to these solutions)

9. Transport layer

  1. What use?
  2. UDP (multiple pipes)
  3. TCP (reliability, some flow control)

10. Application layer

  1. What use?
  2. Simple applications, DNS, SIP, RTP
  3. telnet/Ssh

11 and 12.  Virtualization

  1. What use?
  2. VLANs
  3. VPNs
  4. Pseudowires and how you use virtualisation for scaling
  5. VMs / Containers (“faking networking”)

13 and 14. Trust and Security

  1. Authentication/Confidentiality/Integrity/Signature/Availability
  2. Basics: protecting your network from the outside (what people do)
  3. Basics: protecting your network internally (what people should do)
  4. Virtualisation and how we need to blend “node security” and “network security” (e.g. Meltdown/Spectre)

15 and 16. Contingency

  1. Cross-lecture themes (mentioned in 1 and flagged throughout)
  2. “OSI Model” The conceptual stack here – going up and down it.
  3. The problems we’re trying to solve.
  4. Scaling (typically scaling beyond the capacity of the fix to the previous scaling problem).


The need for computer networks; layered models; Ethernet; IP; network routing and congestion control; network security.

Reading list

  • Peterson and Bruce S. Davie "Computer Networks: A systems approach (4th ed)", Morgan Kaufmann, 2007.
  • S. Tanenbaum, Computer Networks (3rd ed), Prentice-Hall International, 1996.