Midsemester Summary

Seven weeks down, seven more to go: midsemester. I wanted to summarize the 13 lectures and 7 labs that we have had so far, to help a little bit with the perspective of things. Here's the summary for the lectures followed by the summaries for the labs:

Lecture 1 - was meant to show you that setting up a web server requires very few steps. However the equipment in LH102 didn't cooperate fully and although the number of steps was just as small it took us a long time to get it done. At the end of the lecture the demo server was up, with a big help from the audience.

Lecture 2 - we assumed the server up and reviewed the basis of web communication: client browser sends a request to a server. The server retrieves a file or starts a gateway program. We wrote the Hello World! perl program and made it into a Hello, world! CGI script with minimal effort.

Lecture 3 - was a whirlwind introduction to Perl. We started from the empty program and reached associative arrays by the end of the lecture. After the first lecture we knew what it takes to bring a server up. After the second we knew how CGI scripts (of the Hello, world! kind) are written and get invoked. In lecture 3 we covered the basics of Perl so that we can write more complicated (and useful) CGI scripts.

Lecture 4 - developed two simple scripts, a recursive menu and a simple calculator. Its purpose was to introduce how environment variables are being passed to the script and how data from the user is read into the CGI script with each of the methods GET and POST.

Lecture 5 - started by revisiting the Apache installation (the Lockfile directive, Steve Kinzler's starthttpd and crontab were some of the topics). It then moved on to introduce Javascript as a client-side programming methodoly, and we did not lose the opportunity to developed yet another calculator.

Lecture 6 - was a contrived introduction to Java. The whole purpose was not to introduce the language and the methodology, as most of you are already familiar with it. Instead it was trying to introduce applets (the Scribble applet), especially the parts that it was inheriting from Component. It meant to show not only how one uses an Applet tag, but that to write Java successfully you need to know the class libraries.

Lecture 7 - we know the server, we know CGI, we know Perl. That's all on the server side. There's also a client side we looked at. Now in lecture 7 we introduce an outstanding package for doing CGI processing: CGI.pm by Lincoln Stein, the textbook's author. This lecture describes four major examples in the CGI framework: HTML form processing, feedback forms, clickable image maps that act as submit buttons and provides a very general framework for state machines over conectionless HTTP.

Lecture 8 - finished the examples with the file upload example. This essentially transforms your browser into an FTP client. The second important thing that this lecture did was to put together three technologies at once by implementing a two-dimensional (graphical) RADIO button. This demonstrated how Java and JavaScript communicate to prepare the data that is then sent over the network to be processed by a CGI script.

Lecture 9 - was really a week later. It covered Java networking for the sake of looking at HTTP. It built in stages a client, a server (in Java) and then put them together in a Feedback applet that was sending data to a CGI script bypassing the browser in which the applet was dwelling. That, we said, is a big difference between Java and JavaScript, the two client-side technologies.

Lecture 10 - introduced a tool for producing images (GIF format) on the fly: the GD.pm library. Used in conjuction with CGI scripts that rely on HTML forms for their GUIs GD is a great tool for illustrating your point of view in a client browser. Among the things we built were a few clocks and a web counter.

Lecture 11 Described the guidelines for a good, serious project proposal. It went through Post'em as a type of project and described how it would fit into the template for a project proposal.

Lecture 12 - covered JavaScript and started the review process for the midterm exam by reviewing HTML forms. It also tried to put things in correspondence with the textbook for future reference.

Lecture 13 - reviewed CGI scripting, last Thursday.