CSCI 6760 - Computer Networks

Spring 2017


Instructor Prof. Roberto Perdisci
Credits 4
Location All classes will be in GSRC 208
Time 2:30pm-3:20pm M, 2pm-3:15pm TR -- course calendar
Prerequisites Programming Languages: C AND Python, Familiarity with Linux
Office Hours Tuesday and Thursday, 1-2pm (Boyd GSRC, Room 423)

NOTE: The course syllabus is a general plan for the course; deviations announced to the class by the instructor may be necessary.

Course Overview

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 Network Security, such as spoofing, poisoning, Firewalls, etc. 

Prerequisites: The class projects will require a good knowladge of the C programming language, as well as higher-level languages such as Python. Furthermore, most projects will be based on code written mainly for Linux systems. Therefore familiarity with such systems is also required.

Books:
  • Textbook: Computer Networking: A Top-Down Approach Featuring the Internet, 7/e
    James F. Kurose and Keith W. Ross
    Addition Wesley

  • Recommended Readings: TCP/IP Sockets in C: Practical Guide for Programmers 2/e
    Michael J. Donahoo and Kenneth L. Calvert
    Morgan Kaufmann
    http://cs.baylor.edu/~donahoo/practical/CSockets/

  • Recommended Readings: Beej's Guide to Network Programming Using Internet Sockets
    http://beej.us/net2/html/index.html

  • Recommended Readings: TCP/IP Illustrated, Volume 1: The Protocols
    W. Richard Stevens
    Addition Wesley

  • Recommended Readings: Network Security: Private Communication in a Public World, 2/e
    Charile Kaufman, Radia Perlman, Mike Speciner
    Prentice Hall

  • Other resourcesThe TCP/IP Guide
    Charles M. Kozierok
    Available online at: http://www.tcpipguide.com/free/index.htm

Grading

Students will be evaluated using the following criteria:

Class Participation = 5%
Homework = 5%
Presentations = 10%
Development Projects = 30%
Exams = 50%


Class Participation
The lectures will include topics that are not necessarily covered in the textbook. This topics will be part of the midterm and final evaluations, therefore class participation is highly recommended. In addition, since class participation is worth 5% of the final grade, students will be required to sign an attendance log.

Presentations
Students will be required to read one or more academic papers, RFCs, and other network protocol documentation, as assigned by the instructor, and present the topic to class.
NOTE: some of the topics discussed in the assigned papers and RFCs will be part of the midterm and final exams.

Homework and Development Projects
Throughout the course, students will be required to complete a number of development projects. Some development projects must be conducted individually, while others may be conducted in pairs (the instructor will indicate which ones in class). The projects will focus on network programming in Linux using C and higher-level languages such as Python. 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: development projects may 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.

LATENESS POLICY: Students are allowed at most one late submission throughout the semester, and the late submission must be received no more than 3 days past the deadline. If this threshold is exceeded, all late assignments will be penalized 100% (i.e., 0 points).

Midterm and Final Exams
The midterm exam will include topics covered up to the exam date. The final exam may include all the topics studied during the entire course, with more emphasis on topics covered during the second half of the term. Both the midterm and final exams may include topics from the academic papers assigned for review.


Academic Integrity and Ethics

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.