Class Lectures and Reading Assignments
CS 33600
Network Programming
Spring, 2024

This page documents what we do in class. It contains Java programs that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), and links to other sources of information. It is a good idea for you to "play" with the example Java programs; compile them, run them, make simple changes to them and compile and run them again.

The second midterm exam is today, at 2:45 p.m.

Here are several ways to solve Hw4. These solutions demonstrate several common web app design patterns (including templates, ajax, and microservices).

The second midterm exam will be next Monday, April 29, as specified by the university's final exam schedule.

The exam will be over the sample code listed below and the material from these previous reading assignments.

Here are some review/practice problems.

Here is another simple "web app" build using the "server framework".

Here are two recent additions to the Java language that address string interpolation.

Here are two Java libraries for generating HTML code.

See the programming assignment page for your fourth assignment.

The second midterm exam will be on Monday, April 29, as specified by the university's final exam schedule.

Here is a new implementation of the HTTP server.

The solar eclipse will be at its maximum at 2:07. We will start class around 2:30, so that we can watch the partial eclipse. I will be in the area between NILS and the library building.

Use the HTTP server included in this zip folder

to access the simple web site included in the public_html subfolder of the zip folder. Compare how the PNW server (which is strictly a static server) differs from the Java server included in the zip folder (which has some elementary dynamic capabilities). In particular, see how the servers differ in handling POST requests.

Here is a simple (mostly static) web site that we will study.

We will access that web site from both this public http server and from the local http server included in the following zip folder. We will access both versions of the web site using curl, a browser, and the http client programs in the following zip folder.

Here is a simplified grammar for HTTP that I adapted from Illustrated Guide to HTTP.

Read this overview of HTTP.

Here is an overview of HTTP servers.

We will study the HTTP protocol by looking at an implementation of an HTTP server program.

Spring Break - No class today.

Spring Break - No class today.

The first midterm exam is today.

The first midterm exam will be this Wednesday, on March 6. See the review/practice material from last week.

See the programming assignment page for your third assignment.

The first midterm exam will be a week from today, on March 6.

Read Section 3.2.3 about HyperText Transfer Protocol (HTTP) in the following book.

Here are several overviews of HTTP.

The first midterm exam will be a week from Wednesday, on March 6.

The exam will be over the sample code listed below and the material from these previous reading assignments.

Here are some review/practice problems.

The programs in this folder let us do some experiments with how clients and servers can communicate with each other.

Here are links to the client-server "flow chart" that we were using in class today.

See the programming assignment page for your second assignment.

We will finish looking at the client-server examples.

Read Sections 3.1 and 3.2.1, about application level protocols, in the following book.

I added a second client-server pair to this folder. The second client-server pair lets the client block the server. This lets you do experiments using the TCPView program.

We will start looking at the client-server examples.

The overview that we used in class of how a client-server connection works over the Internet comes from the following handout from this computer systems textbook.

We will continue to look at these networking examples.

Here is a much more detailed overview of networking.

Here are some simple networking code examples.

Here are another two introductory chapters about network programming.

If you would like to know more about end-of-file in Java, here are some examples that demonstrate several ways to detect the eof condition using Java libraries.

See the programming assignment page for your first assignment.

We will finish looking at these code examples.

Read sections 1, 2, 3, 4, and 7 from the following introductory chapter about network programming.

We will finish looking at these code examples.

Here is one more chapter about Java I/O clases. This reference has a good explanation of Java's use of the decorator pattern in the design of the stream classes.

For next week, read the following introductory chapter about network programming.

No class. Martin Luther King Jr. Day.

Here are code examples that we will continue to use in class today.

Read the first 18 pages of this chapter on Java I/O.

Here are code examples that we will use in class today.

Read Chapter 18 from the following book.

Here are some books that we will use as references this semester. We will only need one or two chapters from each book. You should be able to download a pdf of each book (or individual chapters) while you are on campus.