Programming Assignments

Well, my final full semester has started, which includes a fairly grueling schedule totaling 20 credits of 4000-5000 level csci courses. Crazy? Yes. Am I going to do well in all my classes? No. Am I going to take a year or two off my life through sleep deprivation? Probably. Regardless, I’m taking some classes that are finally of potential interest to me. The University of Minnesota B.S. Computer Science program requires that students declare an upper division emphasis, which I kind of made up on a whim the night I realized I had to register for my classes. If you clicked the link above, you know that three of my classes are network and/or internet programming (which happens to probably be my area of most interest), so my emphasis was named something along the lines of Internet/Information Services.

Anyway, the two network programming courses I’m in have just released their [first] big programming assignments for the semester, both of which are kind of interesting, and I dare say I might even be excited to work on them. If you counted, you’ll notice that still leaves me with four other classes about which I have not expressed any excitement. Three of those aren’t bad per se, just not necessarily exciting to me. The fourth is Data Mining. My feelings on that class can be easily summarized as follows:


…But I digress. Getting back to my main motivation for this post, which was to talk about these two programming assignments.

Csci4211 – Introduction to Computer Networks

The full assignment is defined here, if you’re eager enough to actually read about it yourself. The assignment is titled Peer-to-Peer (P2P) File Sharing System with Messaging, which is fairly self explanatory. To understate the situation, it’s not going to wipe out Kazaa or BitTorrent any time soon, as it will be written for a command-line/console interface (no GUI), and (based on my brief scan of the assignment) can only actually exchange files between directly connected nodes (there’s no central server).

Inet4021 – Network Programming

Dammit. I hibernated my computer and lost the paragraph I’d already written about this assignment. Surely this time around will be less exciting than the first; I apologize. That said, I’ll proceed. The assignment is only available in .doc format here, which you probalby don’t want to go to the trouble of downloading and opening, so I’ll summarize. The assignment is boringly titled Lab #3, which isn’t of much use to you, but the primary objective is: Based on RFC 1945, you will need to write an HTTP client that meets the 1.0 specification. For the less technically oriented individuals out there, an HTTP client is more commonly known as a web browser (such as Internet Explorer). This ain’t yo’ momma’s web browser, though… Don’t expect pretty graphics, flash animations, or anything fun like that … a closer comparison would be wget, though this is even less advanced than that. I think a more fitting description would be a URL document grabber. It’s approximately equivilent to going to Start -> Run -> cmd, and typing:

telnet 80
GET / HTTP/1.0

[Press enter twice]

This returns the following, which is approximately what I understand this program is supposed to output:

HTTP/1.1 302 Found
Date: Fri, 17 Feb 2006 00:23:25 GMT
Server: Apache/1.3.33 (Unix) mod_fastcgi/2.2.12 mod_ssl/2.8.23 OpenSSL/0.9.7g
Connection: close
Content-Type: text/html; charset=iso-8859-1

<TITLE>302 Found</TITLE>
The document has moved <A HREF=>here</A>.<P>
<ADDRESS>Apache/1.3.33 Server at Port 80</ADDRESS>

To continue my line of reference from aboive, this client certainly isn’t going to blow Internet Explorer out of the water. Considering my dream job (take that very lightly) is working for Opera Software ASA, this project is of particular interest to me. I actually kind of wish it was a more extensive project (though, don’t quote me on that in three weeks when it’s due, and I haven’t started yet).

Leave a Reply