This course ended December 18, 2014.
Networking and Distributed Processing
Department of Mathematics and Computer Science
Hobart and William Smith Colleges
Instructor: David J. Eck (firstname.lastname@example.org)
Course Handout: http://math.hws.edu/eck/courses/cpsc441_f14.html
Monday, Wednesday, Friday, 3:00–3:55 PM
Room Napier 101
Scheduled Office Hours in Lansing 313 (but also check Lansing 310):
|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
|Lab 6, October 24
WireShark and TCP
|Lab 7, October 31
|Lab 8, November 7
NFS and DHCP
|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
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
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
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
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
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
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
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.