CS441: Computer Networking
Fall 2018

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2018.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 12:20–1:15 PM.
   Room Gulick 2000.

About This Course

It is hardly necessary to explain the importance of computer networking. It's everywhere. Computer networks are very complex systems, with many levels of organization. It is certainly not possible to learn everything in one semester. The key to dealing with this complexity is to learn the basic ideas and fundamental theory of computer networking. I hope that the course will make that possible, while at the same time covering a lot of practical material.

The textbook for this course is Computer Networking: A Top-Down Approach, Seventh Edition, by James F. Kurose and Keith W. Ross. We will cover much of the material in Chapters 1 through 6 of this book, plus at least the basics of wireless networking from Chapter 7.

A copy of the textbook will be on reserve at the Library.

I have not planned the last two weeks of the term, after Thanksgiving break. In past semesters, I have covered some distributed programming during that period, and I would like to do some of that. We might cover some material from Chapters 8 and 9 in the textbook. Or we might do something else. Some part of the last two weeks will probably be devoted to final project presentations.

Computer networks are complex. The complexity is handled by using what are called layered protocols. The Internet uses five layers, with each layer building on the services of the layer below it and making services available to the level above it. The meaning of "top-down" in the title of the textbook is that it starts with the top layer, the application layer, and works down from there. The application layer defines services that you use, for example, when you browse the web, send email, or watch a YouTube video. Below the application layer are the transport layer, the network layer, the link layer, and the physical layer. We will spend a large part of the course discussing what happens in each of these layers (except the physical layer, not so much).

Assignments and Labs

The programming for this course will be mainly in Java. We will use Java's socket API. Sockets are a relatively high-level abstraction for network programming, and Java has a nice implementation.

Starting on Monday, September 3, the class will meet in Rosenberg 009 for a lab on most Mondays. (We will not have lab in the first week of classes or in weeks when there is a test.) The labs will cover various network technologies. Although this is not a course in network administration, some of the labs will deal with aspects of network administration.

Finally, there will be some written problem sets, which I will hand out from time to time.

Final Project

Everyone in the class will design and complete a final project. Since the class is so large, I am hoping that most of the final projects will be two- or three-person teams, but individual projects are also possible. Ideally, I would like all of the projects to be different, but that might not be possible. The project will include a presentation to the class at the end of the semester. Some presentations will be during the final exam period, but we will probably also need to schedule some during the last week of classes. (If a project goes particularly well and would be of general interest, it is even possible that some person or team might teach an entire class on it.)

Several types of projects are possible. One possibility is to research some topic related to networking and write a paper on it. Another possibility is a programming project in which you implement an existing network protocol or perhaps design and implement your own protocol. Projects involving network configuration and administration might also be possible, if they are accompanied by some written work.

I expect you to develop a project idea in consultation with me. I will hand out a list of possible project ideas before the middle of the semester, and some ideas will probably come up in class, but you should start thinking early about what sort of project you might like to do.

Note, by the way, that you are required to attend the presentations during the final exam period, even if you do your own presentation earlier.

Tests and Grading

There will be two in-class tests which will be given on Wednesday, October 3 and Wednesday, November 14. The final project takes the place of a final exam; it is due at the time of the regularly scheduled final exam for this course: Thursday, December 17, 8:30 AM. We will meet during the final exam period for presentations of final projects.

Your grade for the course will be computed as follows:

            First Test:              20%
            Second Test:             20%
            Final Project:           20%
            Assignments and labs:    40%

Attendance Policy

I expect you to be in class, except in extraordinary circumstances. Please discuss your absences with me, in advance if possible.

Statements from the Center for Teaching and Learning

At Hobart and William Smith Colleges, we encourage you to learn collaboratively and to seek the resources that will enable you to succeed. The Center for Teaching and Learning (CTL) is one of those resources: CTL programs and staff help you engage with your learning, accomplish the tasks before you, enhance your thinking and skills, and empower you to do your best. Resources at CTL are many: Teaching Fellows provide content support in 12 departments, Study Mentors help you manage your time and responsibilities, Writing Fellows help you think well on paper, Q Fellows support you in courses that require math, and professional staff help you assess academic needs.

Disability Accommodations: If you are a student with a disability for which you may need accommodations, you should self-identify, provide appropriate documentation of your disability, and register for services with Disability Services at the Center for Teaching and Learning (CTL). Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website: http://www.hws.edu/academics/ctl/disability_services.aspx. Please direct questions about this process or Disability Services at HWS to Christen Davis, Coordinator of Disability Services, at ctl@hws.edu or x 3351.

No Technology During Lecture

I ask that you refrain from using any technology (beyond pen/pencil and paper) in lecture, unless you have a verified need to take notes on computer. This includes laptops, tablets, and cell phones.

There is substantial research showing that taking notes on paper can improve retention of the material, compared to note-taking on computer. My real advice is to take notes in outline form, noting down important ideas and examples, and to make a more formal copy of the notes after class, filling in any missing details. There is also research showing that the multitasking that you are likely to engage in if you have a computer open in front of you is detrimental to learning.

Office Hours, E-mail, and Web

My office is room 313 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce my official office hours as soon as I schedule them.

The Web page for this course is at http://math.hws.edu/eck/cs441/. I will post weekly readings and assignments on that page. My e-mail address is eck@hws.edu.

Tentative Schedule

Here is a very tentative schedule for this course. You should expect adjustments to this schedule. We will definitely cover the important material from Chapters 1 through 6 in the textbook, but what we do in addition to that will depend to some extent on student interest.

Dates What's happening
Aug. 27, 29, and 31 Overview of networking. (Chapter 1)
Sept. 3, 5, and 7 Layered Protocols. (Chapters 1 and 2)
Sept. 10, 12, and 14 Application layer: Protocols. (Chapter 2)
Sept. 17, 19, and 21 Application layer: More Protocols; Socket programming. (Chapter 2)
Sept. 24, 26, and 28 The transport layer: Reliable Communication and TCP. (Chapter 3)
Oct. 1, 3, and 5 Test on Wednesday, October 3.
The transport layer: UDP; Congestion Control. (Chapter 3)
Oct. 10 and 12 Network layer: Packet Switching. (Chapter 4)
No class on Monday because of Fall Break.
Oct. 15, 17, and 19 Network layer: The IP protocol. (Chapter 4)
Oct. 22, 24, 26 Network layer: Routing Algorithms. (Chapter 5)
Oct. 29 and 31; Nov. 2 Link layer: Principles. (Chapter 6)
Nov. 5, 7, and 9 Link Layer: Ethernet and ARP (Chapter 6)
Nov. 12, 14, and 16 Test on Wednesday, November 14.
Wireless networking (Chapter 7)
Nov. 19 – 23
Thanksgiving Break. No Classes.
Nov. 26, 28, and 30 Topic TBD, probably including some distributed processing.
Dec. 3, 5, and 7 Topic TBD.
Dec. 10 Wrapping up the course.
Dec. 17 Presentations during final exam period.
Monday, December 17, 8:30 AM – 11:30 AM