- Professor: Victoria Manfredi,
vumanfredi [at] wesleyan.edu,
- Lectures: Mo and We, 1:20-2:40p, Exley 121.
- Office hours:
Mo 3:00-4:30p, Tu 4:00-5:30, We 4:30-6:00p, and by appointment.
- Online discussion platform:
Piazza , please sign up. Course page
- Course assistants: Olivia Kim, Alessio Larios, Shota Nakamura,
- Help sessions: Mo: 7-9p in Exley 638. Tu: 6-9p in Exley 638.
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.
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.
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
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
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.