COMP 332: Computer Networks
Spring 2018
         Home Schedule Policies Resources         

Course info

  • Professor: Victoria Manfredi, vumanfredi [at] wesleyan.edu, Exley 627, 860-685-2194.

  • Lectures: Mo and We, 2:50-4:10p, Exley 137.

  • Office hours: Mo 4:30-6p, Tu 4:00-5:30, We 4:30-6:00p, and by appointment.

  • Online discussion platform: We'll use Piazza for online discussions. Sign up here.

  • Course assistants: Timothy Kim, Olivia Park, Elli Scharlin.

  • Help sessions: Mo (Exley 618) and Tu (Exley 638), 7-9p.

Description

This course will provide an introduction to the fundamentals of computer networks. Computer networks have become embedded in our everyday lives, from the Internet to cellular phones to cloud networking, enabling applications such as email, texting, web browsing, on-demand video, video conferencing, peer-to-peer file sharing, social networking, cloud computing, and more. This course will delve into the infrastructure and protocols that have allowed computer networks to achieve their current ubiquity. While the primary focus of the course will be on the Internet's architecture, protocols, and applications, we will also touch on other types of computer networks. Programming assignments will be done using Python; prior knowledge of Python is not required but will be helpful. Overviewing the existence and the components of the Internet Examining the mechanisms running in various components Understanding the nature of the problems these mechanisms are trying to solve


Student Learning Goals
  • Network design principles: You will learn the fundamental principles used to design and build networks such as the Internet. Principles include layering and abstraction, encapsulation, and packet-switching. Just as programming languages are always evolving, so are computer networks. Our goal in this course is to learn the fundamentals of computer networks, since these core network design principles will still hold true even as networks evolve.

  • Network protocols: You will learn how computers use protocols to exchange information with each other, with an in-depth look at the most widely used protocols on the Internet, such as HTTP, SMTP, DNS, TCP, UDP and IP. Our goal here is to understand the operation and design principles behind these protocols with hands-on traffic observation and experimentation to deepen your understanding.

  • Network algorithms: Algorithms and data structures are deeply embedded into the operation of networks. On the Internet, shortest path graph algorithms are used to compute routes while routers maintain packet queues. Unlike the kinds of algorithms you have probably seen before, an added twist to many algorithms (and protocols) used in a network is that they are distributed across multiple devices. Our goal here is to develop an understanding of these algorithms and why they are used.

  • Network analysis: To understand why certain design principles, such as packet-switching, are used in networks, it is useful to be able to mathematically analyze their operation. Thus, our goal here is to develop basic skills in analyzing and understanding network algorithms, protocols, and traffic to answer questions about the operation of a network.

  • Network programming: You will learn how to write network programs using sockets, as well as use network tools such as wireshark and nc to aid you in debugging and testing your programs. Our goal here is to develop the skills needed build network programs.

Pre-requisites

This class has COMP 212 and MATH 228 as pre-requisite. A familiarity with UNIX/Linux as well as a basic understanding of probability (for some analysis we will do) will be helpful. However, I will do to my best to review any material or commands that are relevant, and references are also posted on the class resources page.

Assessment

Your grade will be based on approximately 10 homework assignments (60%), a midterm exam (20%), and a final exam (20%). Assignments will be posted on the schedule. All work must be submitted electronically. Grades and feedback on code submissions will be returned as paper, with written work and code printed out with comments written on it directly. I will email you your grades periodically to double-check that the information that I have is consistent with what you have. It is your responsibility to check your grades and feedback and report any issues promptly. It is always possible for mistakes to happen in recording scores, especially in larger classes. If I do not hear about a problem, it will not be fixed.