CPSC 3600 - Network Programming (taught in Fall)
This course introduces students to the fundamental concepts of computer networks and network programming. The material is structured around the five layers of the Internet’s protocol stack. Each of these layers provides different services to the network:
-
The Application layer supports communication between applications running on different end systems (e.g. web browsers, computer games, etc)
-
The Transport layer marshals messages from the application layer and divides them up into packets that can be sent to other machines through sockets. Protocols running in the Transport layer may also provide other services, like reliable delivery guarantees.
-
The Network layer accepts packets from the Transport layer and is responsible for routing them through the interconnected machines that compose the Internet until they reach their intended destination.
-
The Link layer is responsible for communication over specific links connecting neighboring machines as well as machines interconnected through a Local Area Network.
-
The Physical layer handles converting digital information into a form that can actually be transmitted across the links that connect machines, including copper wire, fiber optic cable, and radio waves.
We will also briefly discuss topics pertaining to network security.
Course Projects
While much of the information covered in the class is conceptual (i.e. we won’t directly be translating it to code), we will focus in on several topics that will help prepare students for developing their own networked applications. Course projects will be developed using Python, however, students are not required to have prior experience programming in Python (prior experience with other programming languages, such as C++ or Java, is expected). Examples of potential course projects include:
-
Implementing a reliable data transfer protocol
-
Creating a packet sniffer
-
Developing a distributed P2P chat system