Spring 2012
Instructor Prof. Roberto Perdisci
Prerequisites Programming Languages: Java, Familiarity with Linux
The Internet has become a fundamental component of modern life. An increasingly large number of people rely on the Internet to communicate with one another, search for information on the most diverse topics, do business, find and purchase goods, etc. This course focuses on how the Internet works. We will start by viewing the Internet for what it really is, namely a large number of interconnected computer networks, and analyze how devices connect to the Internet to exchange information. We will first analyze some of the most important application protocols such as HTTP, SMTP, DNS, etc., that enable Internet nodes to request and offer services (e.g., access web pages, send emails, etc.). We will then move down the OSI model to consider the transport and network layers, with focus on understanding the UDP and TCP protocols, flow and congestion control, and the IP and routing protocols. Next we will consider the link and phisical layers. Finally, we will discuss topics related to Mobile Networks and Network Security.
Development Projects and Assignments:
Throughout the course, students will be required to complete a number of development projects and other assignements. Some development projects must be conducted individually, while others may be conducted in pairs (I will indicate which ones in class). The projects will focus on network programming in Linux using Java. Other assigments will focus on the analysis of live network traffic traces and pencil-and-paper homework. Each successfully completed assignment will be attributed X points, where X will vary depending on assignment difficulty.
IMPORTANT: Most development projects will be evaluated using a binary criteria: "program works correctly" = max points; "program does not work according to specifications" = 0 points. Possible exceptions to this rule will be announced during class.
Prerequisites:
The class projects will require a good knowladge of the Java programming language. Most projects and assignments will be based on Linux systems, and therefore familiarity with Linux is also required.
Textbook:
Computer Networking: A Top-Down Approach Featuring the Internet, 5/e James F. Kurose and Keith W. Ross Addition Wesley, ISBN: 0-13-607967-9
Recommended Readings:
-
TCP/IP Sockets in Java: Practical Guide for Programmers Michael J. Donahoo and Kenneth L. Calvert Morgan Kaufmann
-
TCP/IP Illustrated, Volume 1: The Protocols W. Richard Stevens Addition Wesley, ISBN: 0-201-63346-9
Other resources:
The TCP/IP Guide Charles M. Kozierok Available online at: http://www.tcpipguide.com/free/index.htm
As a University of Georgia student, you have agreed to abide by the University’s academic honesty policy, “A Culture of Honesty,” and the Student Honor Code. All academic work must meet the standards described in “A Culture of Honesty” found at: www.uga.edu/honesty. Lack of knowledge of the academic honesty policy is not a reasonable explanation for a violation. Questions related to course assignments and the academic honesty policy should be directed to the instructor.