This course ended December 18, 2014.

CPSC 441
Networking and Distributed Processing

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall 2014.

   Instructor:  David J. Eck  (

   Course Handout:

   Monday, Wednesday, Friday, 3:00–3:55 PM
   Room Napier 101
   Scheduled Office Hours in Lansing 313 (but also check Lansing 310):
       Monday:     1:30–2:50
       Tuesday:    11:00–1:00
       Wednesday:  11:15–12:10
       Friday:     11:15–12:10

Lab Worksheets
Lab 1, September 5
VBox and Wireshark
Lab 2, September 12
Basic Network Tools
Lab 3, September 19
Writing a Web Server
Lab 3b, September 26
Threads for your Server
Lab 4, October 3
Linux Server Config
Lab 5, October 17
UDP Programming
Lab 6, October 24
WireShark and TCP
Lab 7, October 31
Virtual Network
Lab 8, November 7
Lab 9, November 14
ARP / xMandelbrot
Lab 10a, December 3
MPI, Part 1
Lab 10b, December 8
MPI, Part 2

First Week: September 1, 3, and 5

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

Second Week: September 8, 10, and 12

This week, we begin Chapter 2. The chapter starts with a general discussion of application-layer protocols in Section 2.1. From there, it moves on to specific applications protocols such as HTTP and SMTP. This week, we will cover 2.1 and at least get a start on the HTTP protocol. The lab this week will introduce some standard network tools and utilities such as ping and traceroute.

Third Week: September 15, 17, and 22

We will quickly finish up our discussion of the HTTP protocol. After that, before doing any more of Chapter 2, we will spend some time on socket programming in Java. For the lab on Friday, you will apply socket programming to write a basic web server.

Socket programming for TCP is pretty straightforward in Java. You can find the basic information in Section 11.4, subsections 11.4.2 through 11.4.5, of my on-line Java textbook.

A real server should use threads, or some other technique for multitasking client connections. For now, the server will be single-threaded, but we will add threads later.

Fourth Week: September 22, 24, and 26

You should continue to read Chapter 2 from the textbook. Hopefully, we will finish with it next week. However, this week we will spend some time talking about threads and how to add a thread pool to the web server that you are writing. The lab this week will be a continuation of last week's lab in which you add the threading. The combined lab will be due next Friday. The web page for the lab has some suggested reading about threads from Chapter 12 of JavaNotes.

As for material on the application layer, we should at least finish with SMTP this week. We will return to Chapter 2 next week and hopefully complete it then.

Fifth Week: September 29; October 1 and 3

After spending time on threads last week, we have fallen a little behind the tentative schedule from the syllabus. We are still working on Chapter 2. Hopefully we will start Chapter 3 by Wednesday. Note that you should read all of Chapter 2, but you are really only responsible for the section on principles (Section 2.1); the HTTP, SMTP, and DNS protocols; and the basic ideas behind BitTorrent.

Reminder: There is a test coming up next week, on Wednesday, October 8.

Sixth Week: October 6, 8, and 10

For the study guide for Wednesday's test, click here.

On Monday, I will answer any questions about the test and the material that it will cover. In any extra time, we will start Sections 3.4 and 3.5, which deal with reliable, connection-oriented data transfer in general and with TCP in particular. We will continue with the topic on Friday. There is no lab this week; Friday will be a regular class.

Seventh Week: October 15 and 17

There is no class on Monday because of Fall Break.

We will continue working on TCP on Wednesday, and you should continue reading Sections 3.4 and 3.5. Friday's class will be a lab on UDP programming in Java.

I will hand out a sheet of final project information this week.

Eighth Week: October 20, 22, and 24

We will continue with our study of TCP. For the reading, you should finish Chapter 3. For congestion control, you can concentrate on congestion control in TCP, Section 3.7. There should be a Wireshark lab this week on TCP, but that might be postponed until next Monday.

Ninth Week: October 27, 29, and 31

We started in on Chapter 4, the network layer and the Internet Protocol, IP. We will not cover this chapter is great depth, and we will concentrate on IP and the Internet rather than on the abstract ideas.

Tenth Week: November 3, 5, and 7

We continue with Chapter 4. We will cover some details of IP, and we will look very superficially at ICMP and at changes to the IP protocol in IPv6. We will then spend some time on routing algorithmes.

Eleventh Week: November 10, 12, and 14

We move on to the Link Layer, Chapter 5 in the textbook. We will not cover everything in the chapter in detail. The main reading is Sections 3, 4, and 5. We will concentrate on Ethernet, the ARP protocol, and general information about link layer protocols for shared channels.

Reminder: The second and final test is coming up next Wednesday, November 19.

Twelfth Week: November 17, 19, and 21

The study guide for Wednesday's test is available.

On Monday, we will go over any questions about the test material. In any remaining time, I will give an overview of WiFi. There is no lab on Friday. On Friday, I will continue to talk about WiFi. We will also spend part of the class time on Monday and/or Friday talking about what should happen in the rest of the course.

Thirteenth Week: November 24

On Monday, I will continue to give an overview of wireless and mobile networking, from Chapter 6 of the textbook. Also, we will discuss what will be happening for the last two weeks of the semester. And, of course, you should get started working on your final project and presentation!

There is no class on Wednesday or Friday because of Thanksgiving. Have a great holiday!

Fourteenth Week: December 1, 3, and 5

For the last two weeks of the semester, we will be working on MPI. (Of course, you should also be working on your final project!) MPI (Message Passing Interface) is an API for parallel and distributed programming. It is often used on high performance computing clusters. You will be using it on the network of workstations in our computer lab. The reading is a handout, distributed in class on Monday, December 1.

The lab this week is on Wednesday, and there will be a second MPI lab next Monday.

Fifteenth Week: December 8, 10, and 12

The class meets in Lansing 310 on Monday for Part 2 of the MPI lab. We will finish up MPI on Wednesday. On Friday, we will wrap up the course, and I will ask everyone to give a short preview of their final presentation topic.

Final Presentations and the End of Course: December 18

Presentations of final projects will take place during the scheduled final exam period, Thursday, December 18, from 8:30 to 11:30. You are required to be present for all presentations.