This course ended December 18, 2014. |
Department of Mathematics and Computer Science Hobart and William Smith Colleges Fall 2014. Instructor: David J. Eck (eck@hws.edu) 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): Monday: 1:30–2:50 Tuesday: 11:00–1:00 Wednesday: 11:15–12:10 Friday: 11:15–12:10
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.