McGill University
School of Computer Science

Computer Science 308-535A
Computer Networks

Instructor: Carl Tropper
324 McConnell
Phone: 398-3743
Office hours
Monday, Wednesday : 10:00-12:00

Teaching assistants
Lijun Li
Office hours:Thursday, 9-11 AM, room 107 McConnell
Raj Suchak
Office hours:M,3-6 PM, room 321 McConnell

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
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)