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|
|The socket API||1 week|
|Client software design||1 week|
|Server software design||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++.