Networked Systems H (2017-2018)
Networked computer systems are becoming ubiquitous, whether in the form of desktop and laptop computers connected to the Internet, mobile phones, television set-top boxes, or the myriad of networked sensors and embedded computing systems that surround us in our everyday life. An understanding of the operation of these systems is essential for practising engineers and computer scientists, both to manage, design, or implement the next generation of networked systems, or to make effective use of the current generation. This module introduces the fundamental concepts in networked systems architecture, using a layered reference model, and outlines some strategies for low-level communications software development, as a basis for the future study of large-scale and high-level communications models.
Aims and Objectives
The aims of the course are: to introduce the fundamental concepts and theory of communications; to provide a solid understanding of the technologies that support modern networked computer systems; to introduce low-level network programming concepts, and give students practice with systems programming in C; and to give students the ability to evaluate and advise industry on the use and deployment of networked systems.
By the end of the course, students should be able to:
- describe and compare capabilities of various communication technologies and techniques;
- know the differences between networks of different scale, and how these affect their design;
- describe the issues in connecting heterogeneous networks;
- describe the important of layering, and the OSI reference model;
- understand demands of different applications on quality of service requirements for the underlying communication network;
- demonstrate an understanding of the design and operation of an IP network, such as the Internet, and explain the purpose and function of its various components; and
- write simple communication software, showing awareness of good practice for correct and secure programming.
Prerequisites
Computer Systems 2, Algorithms and Data Structures 2, and Java and Object Oriented Software Engineering 2 (or their equivalents) are pre-requisites. Advanced Programming (H) is a required co-requisite, and Operating Systems (H) is a recommended co-requisite.
Timetable
The course consists of a series of lectures delivered over 10 weeks, supported by weekly 2-hour laboratory sessions.
Recommended Reading
Any good text on computer networks, e.g.,:
- Peterson and Davie, Computer Networks: A Systems Approach, 5th Edition, Morgan Kaufman, 2011, ISBN 0123851386
- Kurose and Ross, Computer Networking: A Top-Down Approach, 6th Edition, Addison-Wesley, 2012, ISBN 0273768964
- Tanenbaum and Wetherall, Computer Networks, 5th Edition, Prentice Hall, 2010, ISBN 0132553171
- Bonaventure, Computer Networking: Principles, Protocols and Practice, online textbook
Credits
This is a level H course, worth 10 credits.
Assessment
Assessment is by examination (80%) and assessed coursework (20%).
- Exam paper (2017)
- Exam paper (2016)
- Exam paper (2015)
- Exam paper (2014)
- Exam paper (2013)
- Exam paper (2012)
- Exam paper (2011)
- Exam paper (2010)
- Exam paper (2009)
- Exam paper (2008)
- Exam paper (2007)
Lecture Handouts
- Lecture 1: Introduction to Networked Systems
- Lecture 2: The Physical and Data Link Layer
- Lecture 3: Bridging
- Lecture 4: Internetworking
- Lecture 5: Intra-domain Routing
- Lecture 6: Interdomain Routing/The Transport Layer
- Lecture 7: TCP and Congestion Control
- Lecture 8: UDP and Network Address Translation
- Lecture 9: Security Considerations
- Lecture 10: Higher-layer Protocols