CPSC 441
Networking and Distributed Processing


   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall 2018.

   Instructor:  David J. Eck  (eck@hws.edu)

   Course Handout:  http://math.hws.edu/eck/courses/cpsc441_f18.html

   Monday, Wednesday, Friday, 12:20–1:15
   Room Gulick 2000
      
   Regular Office Hours:  Monday, Wednesday, Friday  11:15–12:10 and 2:00–3:00
                          Thursday  12:00–1:00
                          
Lab Worksheets
Lab 1, September3
Basic Network Tools
Lab 2, September10
Mostly HTTP
Lab 3, September17
Writing a Web Server

First Week: August 27, 29, and 31

Welcome to the course!

We will spend the first week trying to get an overview of computer networking. You should read as much of Chapter 1 in the textbook as you can. The most important part is Section 1.5, which discusses layered protocols; we will continue that topic next week. Sections 1.1 to 1.3 are useful as a general introduction to the overall structure of networks. Section 1.4 is rather technical; I will talk about some of the ideas from that section, but you shouldn't worry too much about the details. Sections 1.6 and 1.7 are interesting, but you aren't responsible for the material in those two sections, and it will not be covered in class.

Second Week: September 3, 5, and 7

On Monday, we meet in Rosenberg 009 for the first lab. You should read the lab worksheet before class.

On Wednesday and Friday, we will begin our discussion of the application layer of the Internet protocol stack, with HTTP and SMTP as our first examples. The reading in Chapter 2, Sections 1 to 3.

Third Week: September 10, 12, and 14

As usual, Monday's class will be a lab in Rosenberg 009. On Wednesday, I will have a little more to say about HTTP and SMTP, and then we will look at network programming using "sockets." The book covers socket programming in Section 2.7, using the Python programming language. You can read that section, but you will be programming in Java. You can read about Java's implementation of sockets in my Java programming textbook, Section 11.4, subsections 11.4.3 to 11.4.5. And you can read about writing multi-threaded network applications in Section 12.4, subsections 12.4.3 and 12.4.4.

Fourth Week: September 17, 19, and 21

Monday's class will be in Rosenberg 009 for Lab 3, which asks you to write a multi-threaded web browser. The program is due in two weeks, but you should have substantial progress made by next week.

The reading for the week is Sections 2.4 to 2.6 in the textbook. Section 2.4 covers DNS, and we will spend some substantial time on it. Sections 2.5 and 2.6 cover peer-to-peer applications, video streaming, and content distribution networks. We will not cover everything in those sections, but it would be useful to read them in their entirety. In particular, I will not talk about BitTorrent (but I will talk about how peer-ro-peer applications can work in general).