|
School of Computer Science
Computer Science 308-535A
Computer Networks
Instructor:
Carl Tropper
324 McConnell
Phone: 398-3743
E-mail:carl@cs.mcgill.ca
Office hours
Monday, Wednesday : 10:00-12:00
Teaching assistants
Lijun Li
e-mail:LLi22@cs.mcgill.ca
Office hours:Thursday, 9-11 AM, room 107 McConnell
Raj Suchak
Office hours:M,3-6 PM, room 321 McConnell
e-mail:rsucha@cs.mcgill.ca
Course Outline:
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
TCP/IP.
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
in nature.
The course will begin with a discussion of hardware aspects
of networking.
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,
firewalls.
Applications. Name service. The web. e-mail, for example.
Class Materials
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 Evaluation
Assignments:40%
Projects: 60%
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).
Project (1)
Project (2)
Assignment
|