Course Outline

This course is surprisingly enough all about computer networks. The theoretical discussion is kept to a minimum though, as the course is primarily about practical aspects. In other words, we are actually interested in programming network (or distributed) applications, and so the main focus of the course is on the Application and Transport layers of the TCP/IP network model, including the TCP and UDP protocols in their incarnation as socket programming. The following is a rough (i.e., subject to change) outline:

Introduction to TCP/IP networking 1 week
The client-server model 1 week
Protocols 1 week
The socket API 1 week
Client software design 1 week
Server software design 1 week
Concurrency 1 week
Multiprotocol and multiservice servers 1 week
Advanced topics 2 weeks
Lower levels of the TCP/IP model 2 weeks

Advanced topics are scheduled to contain elements of distributed algorithms, though this may change depending on how the course progresses. The course will wrap up with a discussion on the underlying network layers, with the main focus on the Network layer (IP). In particular, we discuss how the lossless, connection-oriented features of the TCP protocol are accomplished using the underlying switched network infrastructure.

This course has a heavy programming component (see the section on grading for details). Programming will be done in either C or C++.