School of Computer Science
Computer Science 308-535A
Monday, Wednesday : 10:00-12:00
Office hours:Thursday, 9-11 AM, room 107 McConnell
Office hours:M,3-6 PM, room 321 McConnell
This course is intended to be an upper-level
undergraduate/graduate level course on the principles and foundations
of computer networks. The orientation of the course is a systems
orientation; by this I mean that we will examine the structure and
functions of network protocols. We will concentrate on the basic
building blocks of the Internet, paying particular attention to
You should (hopefully) gain a detailed
picture of how network protocols actually work and gain experience in
working with the protocols themselves.
I do expect students who take this course to be comfortable with
programming in either C or C++. There will be a considerable amount
of programming involved in projects. Assignments will be largely theoretical
The course will begin with a discussion of hardware aspects
Computer networks is, in reality, a melange of hardware and software,
and it is vital to at least be able to speak the language.
This part of the course will also discuss concepts of packet switching
and cell switching. We then segue into internetworking protocols,
discussing issues such as routing, end-to-end protocols (i.e. between
application programs, or users), and the great unknown issue in
computer networks-congestion control. We will
touch on network security (you can get the mathematical foundations
in the cryptography course given by Professor Crepeau) and some
"application protocols" such as protocols useful for real-time
applcations (think of transmitting video images or teleconferencing).
Predictions as to what the future holds will be avoided,
as I have no idea what is around the corner. An outline
of the topics covered in the course follows.
Major topics to be covered are:
Network architecture-layers, Internet architecture,OSI architecture,
socket programming, protocols implementation issues
Single link networks-Ethernet, Token rings, Wireless networks.
Also nitty-gritties of framing, error-detection, and sliding windows.
Packet-switching-what to do with all of the single links,
now that we know how to build them. Also cell switching (ATM),
bridges between local area networks.........
Internetworking-how do we connect up all of the networks which
have different physical transimission media (satellite, microwave,
coaxial cable) and protocols? We examine the IP in some detail,
looking at service issues, addressing (non-trivial, given the
growth of the Internet), routing.........
End to end protocols. How do processes in different machines
manage to reliably exchange data? How do we set up and tear
down connections? Remote procedure calls.
Congestion Control. What is the problem, and why hasn't anybody
solved it by now? TCP congestion control, congestion avoidance,
quality of service (you pay for what you get).
Network Security. Brief look at the DES, public key distribution,
Applications. Name service. The web. e-mail, for example.
Computer Networks, a Systems Approach, by Larry L.
Peterson and Bruce S. Davie, Morgan Kaufmann, second edition, 2000.
This will be our text. I intend to follow the presentation
in this text for the most part.
Computer Networks, by Andrew S. Tanenbaum, 3rd Edition, Prentice-Hall,
1996. This can be viewed as an excellent reference book; it
is available in the bookstore.
Slides are accessible from Peterson slides
Course assignments and Projects:
There are two complementary mechanisms for turning in
assignments. Hard copies are to go in drop off boxes in front
of rooms 104-106 N in McConnell. Software should be submitted
electronically via the hand in program for the course.
The projects and the assignments are individual. Talk
to your colleagues, but don't hand in the same project(s).