Assignments

background

First of all realize that we are compressing 15 weeks or more into 6, and that each lecture (180 minutes with breaks removed) is the equivalent of 3.6 days of ordinary 50 minute classes, and thus with 2 lectures a week we are doing about 2.5 weeks on Monday and Wednesday.

So the material, and the work, moves quickly, and you should try to keep up.

Second of all you already realize that I have been away, the systems are in very bizarre shape, and so we will all have to make accomodations for that.

Third realize that the main point of the assignments is to give you "something to do" other than sitting in class and following my web browsing leads, so you can test your understanding or get an idea of what you could do further.

who does the work

As I have already mentioned in class it is fine for people to learn from one another and to work together. You are not going to be of much use to the world if you cannot. On the other hand it is not so nice to try to take credit for work that other people have done.

If you want to work on any problem as a group go ahead. Please identify the members of the group on the first page of the assignment, and please turn in only one assignment: one of you can post it, and the other pages can just be links to that one. This will help us keep track.

Of course if N people work together in some sense we have to expect N times as much work, or even more. That does not mean more material necessarily, it should mean more sophisticated material at least. So be aware that in some sense we will have to "divide up the credit". Of course if you turn in something really nice the TAs and I will probably be so happy you all get a good grade.

Sort out disagreements as to "who did what" amongst yourselves. We may be able to guess, and we definitely reserve the right to question anyone at any time, and to expect everyone in a group to have a good idea of what was done.

format

Since we are going to be "automatically" retrieving your work, you are going to have to follow exactly certain naming conventions.

You will each have a website directory on speckle.mscs.mu.edu, namely


/home/LOGNAME/public_html,
and its contents are accessed from the web as

http://speckle.mscs.mu.edu/user/LOGNAME

In there we have put a directory called 210, and in that directory you put an

index.html
as your home page for the course, and put a starting page for each assignment called
AssignmentN.html
(we will not have more than 9 assignments, so the number is a single digit :-), with links and a little description of the assignment from your home page.

Any page can of course point elsewhere from inside with href and img tags.

You must run all your pages through an html syntax checker. We will not grade them if they do not go through weblint with flying colors.

I will show you in class how to turn these in, and then post a writeup of what to do. Basically we are going to have each of you create a private key, and make the corresponding public key available to us, which we will place into the proper part of your home directory on speckle.

This means you can use a simple shell script to turn in your assignment, or a batch file from DOS. It will just take the page[s] from wherever they are, and put them in the proper place. Thus you can develop your pages anywhere you like, but they end up where we can see them, and evaluate them.

Assignments

There will most likely be 5 assignments, each due on Monday morning of the week after it is assigned.
week 1 home page and ssh --- Due Tuesday, May 29, 4:00 PM (for travellers)

part 1

Your first problem will be to see that you have a home page index.html for the course, which should have links to your assignment pages, and anything else you like to place on it.

There MUST be a recognizable recent picture of you, available fairly soon in the semester, so we can all know which one you are for sure. If you don't have such a picture, I will bring in my digital camera and you will soon have one of my wonderful shots.

You're welcome to put up pictures of friends and family (even grandkids:-), but we do need one of you.

part 1

Your second problem will be to make, while in your .ssh directory on studsys, three PQ-keysets

ssh-keygen
makes

identity
identity.pub
ssh-keygen -t dsa
makes

id_dsa
id_dsa.pub
ssh-keygen -t rsa
makes

id_rsa
id_rsa.pub
You should then place a copy of each *.pub file in your home directory.

From that directory we will obtain your key, and place it in the appropriate spot on speckle:


identity.pub becomes a line of .ssh/authorized_keys
id_dsa.pub becomes a line of .ssh/authorized_keys2
id_rsa.pub becomes a line of .ssh/authorized_keys2

Once this is done you can login on speckle by


ssh speckle (which will ask for your passphrase for your identity key)
and you can also give a -i flag to use ssh2 with dsa or rsa.
See the "man" pages for further information.

Make sure you have done the command


export MANPATH=/usr/man:/usr/share/man:/usr/local/man
   and then you can do
man ssh
man ssh-keygen
   and so on.

week 2 dns and qmail -- Due date Monday, June 4, 8:00 A.M.

This week is pretty short, only 3.6 days of class. So the assignment will be longer, and include the dns material from last week as well as the qmail material we do on Wednesday.

Also we had to allow some time for setup and such, with the way the systems are installed. We'll treat this one and last weeks together as 'two' for the purposes of grading.

See CompulsoryMisEducation.html for my heretical views about grading.

part 1-a:exploring

Use the pages shown during the lecture, on domain registration, to find, and tell, more about some domain that is interesting to you. Unless you really do something interesting, skip com,edu and such popular domains. There will be two country domains especially interesting to many of you, but try to find out something that nobody else finds out.

For the politically minded, its a (goldmine|landmine). Do Northern and Southern Ireland (geographically) share a domain? Do Tibet and Taiwan have different domains than China? What about Pakistan, Bangladesh, and India? Dare you look into the Middle East? What about South America? And is Africa full of domains, and is there any content for them?

If you have kids, you [[MIGHT]] get them interested in this.

part 1-a:tools

Using the dnstools I just posted trace the status of name-service and mail-service for a domain of interest to you. If you are working at a company that might give you some ideas, relative to the company, a supplier, a customer.

Try to format the results in an understandable fashion. DNS record tracking is not easy: the graphical tool I showed you is certainly one way.

part 2: email Due Thursday, June 14, 2001

Try at least the following four types of email:

  • local-local
  • local-remote
  • remote-local
  • remote-remote (called "forwarding" )

If you do not have an account on a machine other than studsys, then obtain one of the free accounts from hotmail or yahoo or a similar service. The TAs can show you the process.

In each case obtain the entire email message, complete with all headers, and analyze the headers to see what added each one, and why.

For example each time an SMTP transfer is made a Recieved: header will be added by the SMTP server that received the mail.

My recommendation for capturing the content with headers intact is just to edit your "mbox" file on studsys (in your home directory). You can send an email, for example, and then do "tail -100 mbox" to get the last 100 lines, and throw away the top lines, keeping only the bottom part that you need. Or you can just edit your mbox file, if it is not too large.

week 3 due Monday, June 18, 8:00 A.M.

One way to turn in your assignment is to use the "script" command on a Unix machine, as detailed in script. Something similar can be done in DOS if you are working at home by copying the screen of your DOS box to the ClipBoard, and then saving it to a file.

Write a simple Java client and server, following an example such as my "WHOIS".

First copy my code from /home/doug/public_html/src/java/net/dougharris./example/whois, to obtain two files ClientWHO.java and ServerWHO.java.

Compile them both with your "javacd".

Have the client query rs.internic.net at port 43 for dougharris.net (or any other domain name) with:


javad net.dougharris.example.whois.ClientWHO rs.internic.net 43 dougharris.net

Start the server by something like

	 javad net.dougharris.example.whois.ServerWHO 12000&
	 ( see make my port
	   for a shell script to create a unique value for you).
	 

Have the client query localhost at the chosen port for doug (or any other login name) with:


javad net.dougharris.example.whois.ClientWHO localhost port doug

Now modify my client/server pair to do something else, say print a message using data sent by the client, or copy a file whose name is sent by the client.

week 4: due Monday, June 25, 2001, 8:00 AM

Design a "standard servlet" which could be used on a complex web site as the "front end" for its sections, using initialization parameters for the context to determine the custom behavior that should be provided, and using the parameters for the configuration to specify the details of that behavior.

week 5: due Thursday, June 28, 2001, 8:00 AM

Describe some problem area with which you are familiar, and suggest ways in which XML is going to impact that area in the near future. Please don't just say "HTML" or "database" or something of that sort, without being sure that you provide some non-obvious material in your description!