Sun Dec 16
It's customary to play some music while waiting for something (such as grades).

So let me play some haikus, by J. L. Hardesty, about the final project.


Data is sent there
Addbook creates file for the hash,
Number 5 is key.

Catalog shows file,
Colon is delimiter,
Each line is printed.

Ten calls the parse class,
DOMreport makes XML,
Node indent node (child).

Wed Dec 12
Courtesy Steve Roessler and Gitanjali Mathur here are starting points for the problems on the final: the calculator and the portfolio. They are done like in homework assignments 2, 3.

import javax.servlet.*;
import javax.servlet.http.*;

public class One extends HttpServlet {

    public void doGet(HttpServletRequest req, 
                      HttpServletResponse res) 

        throws ServletException, 
               IOException {
        PrintWriter out = res.getWriter(); 

        String one, two; 

        String what = req.getParameter("picture"); 

        if (what == null) {
            what = ""; 

        if (what.equals("one")) { one = "One"; } else {
            one = "<a href=\"/examples/servlet/One?picture=one\">One</a>"; 

        if (what.equals("two")) { two = "Two"; } else {
            two = "<a href=\"/examples/servlet/One?picture=two\">Two</a>"; 

        out.println("<html><head><title>Mamma mia!</title></head><body bgcolor=\"white\">" + 
                    "<table border><tr><td>" + 

                    one + 

                    "</td><td>" + 

                    two +

                    "</td><td>Three</td><td>Four</td></tr>" + 
                    "<tr><td colspan=4 align=center>Picture</td></tr>" + 
                    "<tr><td colspan=4 align=center>Caption</td></tr>" + 

Here now is the starting point for the calculator.

<html><head><title>My calculator</title></head><body>

<% Integer a = (Integer)session.getAttribute("acc");

   if (a == null) { a = new Integer(0); } 

   String argument = request.getParameter("arg"); 

   if (argument == null) { argument = "0"; }

   int conv; 

   try { 
     conv = Integer.parseInt(argument); 
   } catch(Exception e) { conv = 0; } 

   a = new Integer(a.intValue() + conv); 

   session.setAttribute("acc", a);


   The accumulator is now: <%= a %> <p> 

   <input type="text" name="arg"> <p> 



Tue Dec 11

I received this from the Dept. of Chemistry. This is a very exciting position in which you could contribute significantly if you like Perl. They might be open to the idea of mixing some PHP as well. Essentially this is a position in which you extend a computer-assisted instruction tool, developing multi-stage programmed test items. This is a tool for which deSouza has received the President's Award in 1998. Indeed, an excellent position, but you need to enjoy Perl.

Mr. German,

        The Department of Chemistry is currently running CALM(Computer
Assisted Learning Method), a tool to assist students in learning course
materials over the web.  The application is a Perl based program and we
are looking for a student or two to help us continue development.  It is
my understanding that A348 and A548 teach Perl as a language.  With that
in mind, I thought it might be a great opportunity for your students to
get practical experience using Perl. Please let me know if you have some
bright students that you could recommend for this position.

---------------------------------  Start Advertisement ------------------

Job Description: CGI Web Developer position to assist development of the
Chemistry Department's Computer Assisted Learning program.  Tasks will
include development of functions to improve performance and usability.
The person will also be involved in transitioning old software into new
formats and developing new ways to build on course content.  Required
Skills: A strong knowledge of PERL programming and CGI development as
well as the ability to demonstrate proper and efficient code.  The
applicant must be able to work independently and learn quickly to meet
the time requirements.  Email your experience and resume to - David
Felker - <> or contact
by phone 855-8450. 

---------------------------------  End Advertisement   -------------------


David Felker                                           
Manager Instructional Computing 
Indiana University  
Department of Chemistry 
Phone: 812-855-8450 | Pager 812-334-6768

Please let me know if you need more info (details) on this job announcement.

Mon Dec 10
Help with Lab Fourteen (Default Project) has been posted here.

Please don't forget to schedule your final appointment for this week on-line here.

Sat Dec 8
Schedule your final appointment on-line here.

Wed Dec 5
A summary of what we did last night has been posted, here.

Tue Dec 4
We need DOMParser, XMLParser, Document, Node, NodeList, and Attr tonight.

Lecture notes for today posted.

Sun Dec 2
Thanks to Brian Keese for the following message about setting up Tomcat so servlets reload every time you (re)compile them (a similar question was asked by Jeff Magliola in class on Thursday while looking at servlets).

Date: Thu, 29 Nov 2001 19:40:28 -0500 (EST)
From: Brian Keese <>
Subject: reloading changed servlets

I've struggled with the problem of having to restart the Tomcat server
everytime a change was made to servlets I was working on and found it
so annoying.  Here's a link to information about changes that can be made
in the configuration of Tomcat to make the reloads automatic.

Just search for reloadable.


Brian Keese
Computer Science
LH310 855-3609

Thu Nov 29
Lecture Notes for today posted, start the discussion about the Final Exam.

Wed Nov 28
When installing Tomcat please be sure not to take away your own port and not realize it.

This can happen so use

ps -ef | grep username | grep java
to find out if you're running Tomcat or not)

Here's my output: ps -ef | grep dgerman | grep java
 dgerman 25679 25648  0 13:16:12 pts/47   0:00 grep java
 dgerman 16722     1  0 06:11:04 ?        0:04 /usr/bin/../bin/../java/bin/../jre/bin/../bin/sparc/native_threads/java -Dtomca 
Remember Tomcat needs to be shut down before restarting.

Also, please remember that you need to add it to your crontab.

Lab Notes for today posted, help with Homework Six.

Tue Nov 27
A summary of what will be discussed today in class has been posted.

Sun Nov 25
Sunday night I leave for Ohio, coming back Monday night at 8pm. So I am not going to be able to keep office hours on Monday. Please e-mail me if you have any questions or concerns.

Sat Nov 24
Some grades posted.

Project is due when you have it ready but not later than the final exam (see the what's due page). There's a default project and there will be others, if you're working on the default you are lucky: it started a month ago, if you are waiting for another default doing homework six first would be helpful. More default projects forthcoming.

Tue Nov 20
Notes, changhes posted on the What's Due, Homework Five pages.

Mon Nov 19
A simple (but interesting, and non-trivial) extension to the chat application.

Thu Nov 15
More about servlets (read the notes below first).

Addendum to the notes for today (read the notes first).

Lecture notes for today and Tuesday posted.

Wed Nov 14
Homework Five, Lab Notes for today posted.

Tue Nov 13
Lecture notes for today posted.

Fri Nov 9
Mail processing with PHP:

Thu Nov 8
Lecture notes for today act as a switchboard.

Wed Nov 7
Lab notes for today and tomorrow revised.


Date: Wed, 7 Nov 2001 09:11:00 -0500 (EST)
From: Adrian German <>
To: Undisclosed recipients:  ;
Subject: A348 Core Web Programming Book In Bookstore

For this last part of the course we use another reference
which just made its way into the bookstore: a book by Marty Hall
and Larry Brown has been selected and ordered and is now ready
for you at IU Bookstore. The book covers mostly HTML, server
side Java (basic intro, servlets and JSP) and also has chapters
on Javascript and XML processing with Java.

Lab today is applets. Lecture tomorrow is Java RMI. Next week
we install Tomcat and start server-side Java. Notes for tomorrow
will be up sometime tonight. Help for Homework Four will also be
somehow presented tomorrow (or posted).

I have changed my office hours. I am now available 11am-1pm daily
(MTWRF) in LH201D (my office). I will make the change on the website
as well. If you need help please let me know.

... Adrian

Tue Nov 6
Big picture notes posted (Nov 1).

Notes for today start the new topic.


Date: Tue, 6 Nov 2001 11:02:08 -0500 (EST)
From: Adrian German <>
To: Undisclosed recipients:  ;
Subject: A348 Projects

I have read the minute papers of last week and I am
putting together a few more default projects all in
Java as discussed at the beginning of the semester.

I will show what I've done so far tonight in class.
The lab this week looks at applets. We will install
Tomcat soon and look at server-side Java, and write
a chat application that will be your homework 6.

Homework 5 to be posted very soon, is a minor tweak
on the Javascript shopping cart we looked at last.

For semester projects - you need identify a problem
and devise a solution. If you do not have a problem
or a team there will be these default projects that
you could work on.

More to come soon including an update on the grades
and standing in this class.

... Adrian

P.S. Graduate standing extra work for lab due tomorrow
is: nothing. We put it off, and it will be assigned in
a broader context soon (also in lab).

Thu Nov 1
We might be using this and this and this in class today.

Wed Oct 31
Creating a table that has a combination of columns as the primary key:
create table catboo (
  isbn char(6), 
  catid int unsigned, 
  primary key (isbn, catid)

Tue Oct 30
Homework Four, lecture notes for today, lab notes for tomorrow, default project information posted, more to come soon. Midterm exams have not been graded yet.

Mon Oct 29
Link to Lab Nine on the What's Due page fixed thanks to Dave Charney.

Thu Oct 25
Lecture notes for today posted, open up a new area.

Wed Oct 24
Lab notes for today, lab assignment nine, posted.

Fri Oct 19
Here's the exam as administered last night.

Thu Oct 18
Exam today in class (LH102) at 5:30pm.

Here's the program we developed last night during the review session:

use CGI;
$m = new CGI; 

$da = $m->param('day'); 
$mo = $m->param('month'); 

print $m->header; 
print $m->start_html(-bgcolor=>'navyblue'); 
print "<hr>Hello! ($da) ($mo) <hr>"; 
open (MYLOG, "/u/dgerman/apache/apache_1.3.20/logs/access_log"); 
while ($line = <MYLOG>) {

  $line =~ s/\[([^\]]+)\]//;

  $line = $1;  
  $line =~ s/2001.+//g; 
  # print $line, "<br>"; 

  if ($line =~ /$da\//) {
    $freq{$line} += 1; 
  } elsif ($line =~ /\/$mo\//) {
    $freq{$line} += 1;

foreach $key (sort { $freq{$b} <=> $freq{$a} } keys %freq) {

  print $key, " : ", $freq{$key}, " <br>"; 


print $m->end_html;

Wed Oct 17
Lab Notes Eight, just posted, contain Lab Assignment Eight.

Tue Oct 16
When you think about your projects check these guidelines, used in past years.

The midterm on Thursday will be OPEN BOOK and very basic.

You will be tested on:

  1. basic knowledge of Unix (commands, filesystem, processes, etc.)
  2. basic knowedge of HTML (simple documents, tables, forms)
  3. basic knowledge of Perl (hashtables, readParse)
  4. basic knowledge of HTTP (format of messages, GET vs. POST)
  5. basic knowledge of CGI (encoding, GET vs. POST)
  6. basic knowledge of (as it relates to CGI)
  7. basic knowledge of PHP4 (as it relates to CGI)
  8. basic knowledge of Apache (directories, files, management)
  9. basic idea of how installation of PHP4 went
  10. basic idea of what is and how it's used
  11. basic idea of RDBMS, SQL, and MySQL
  12. basic idea of database access from PHP4
  13. what session management is in PHP4 and how it's used

Format is:

short questions that may ask you to write, rewrite, assess, or fix code.

Here's an exam from the past.

Lecture Notes for Tue Oct 16 posted.

Sun Oct 14
Lecture Notes for Thu Oct 11 posted (review of SQL).

Thu Oct 11
Review Session for Midterm set for Wednesday Oct 17 in SE 140 8:15-10:15pm.

Mon-Wed Oct 8-10
Successfully installed PHP4 so far:

QCAI NCINCOTT and many others...

I'd like to individually help you install php-4.0.6 so please come to my office (LH201D) when you have time. I think this will be very beneficial to us, as I will get to talk to, and know, each one of you. Thanks and let me know if you have any questions or concerns.

Sun Oct 7
Lecture Notes Twelve posted (contain installation instructions for PHP4).

Fri Oct 5
Homework Three posted. More to come soon.

Thu Oct 4
Lecture today will give us a chance to catch up. Notes will be posted after the lecture, depending on what (exactly) we cover. My plan is to show two interesting solutions to labFive and then explain what's needed to successfully install php. Then we will describe the new assignment.

Everything is OK with the php installation, you just have to be careful about it. In class today we will discuss what we need to do to make sure the installation is successful. We'll spend some time with the posted examples then. We'll demo this with the help of the audience.

Tue Oct 2
Lecture notes for today posted, around 5:20pm.

New homework, grades, practice exam problems to be posted soon, etc.

Lab notes for tomorrow posted, lab assignment to follow.

Sat Sep 29
New homework, grades, practice exam problems to be posted soon.

We will start the new week with a fresh new perspective, clear plan.

Get ready to start thinking about projects, new assignments, exams.

Practice problems to be posted soon.

Web site will be revamped (slightly) as we move into this new stage.

Thu Sep 27
Here's a supplement to the lecture notes for today.

New homework, grades, practice exam problems to be posted soon.

Lecture notes for today posted.

Tue Sep 25
Lab notes for this week, lab assignment #5 posted.

New homework, grades, practice exam problems to be posted soon.

Lecture notes for today posted .

Unix at IU by Rob Henderson.

Why? Perhaps because of this.

Mon Sep 24
directly if you have problems setting the PATH.

Thu Sep 20
Lecture notes for today posted.

It's been said mySQL is back up.

Wed Sep 19
Lab notes for today and tomorrow posted.

Unfortunately mySQL is down.

Tue Sep 18
Lecture notes for today have been posted.

Fri Sep 14
I find myself thinking that we, people, might just be like the tall buildings that marked the day last Tuesday, forever. They withstood the violence of the initial impact, but collapsed slowly under the burden of the intense heat that ensued. And so we too might find these days, in which the new reality is slowly sinking in, as devouring us from inside. May you and I, we all, regain the strength we need through the remembrance of all the things that should have been.

"God's signs are not always the ones we look for. We learn in tragedy that his purposes are not always our own, yet the prayers of private suffering, whether in our homes or in this great cathedral are known and heard and understood.

There are prayers that help us last through the day or endure the night. There are prayers of friends and strangers that give us strength for the journey, and there are prayers that yield our will to a will greater than our own.

This world he created is of moral design. Grief and tragedy and hatred are only for a time. Goodness, remembrance and love have no end, and the Lord of life holds all who die and all who mourn.

It is said that adversity introduces us to ourselves. This is true of a nation as well. In this trial, we have been reminded and the world has seen that our fellow Americans are generous and kind, resourceful and brave.

On this national day of prayer and remembrance, we ask almighty God to watch over our nation and grant us patience and resolve in all that is to come. We pray that He will comfort and console those who now walk in sorrow. We thank Him for each life we now must mourn, and the promise of a life to come.

As we've been assured, neither death nor life nor angels nor principalities, nor powers nor things present nor things to come nor height nor depth can separate us from God's love.

May he bless the souls of the departed. May he comfort our own. And may he always guide our country."

Thu Sep 13
Lecture notes for today posted.

Tue Sep 11
Text of Statement issued by IU President Miles Brand.

Lecture notes for today, lab notes for tomorrow, posted.

Please check your crontab entries and make changes such that your server is being restarted every morning at 8:10am. That means an entry of this kind

10 8 * * * /u/username/apache/apache_1.3.20/bin/apachectl graceful
Note that crontab sends a message to you on burrowww every time it does something for you. Check your mail account on burrowww frequently to delete the messages, or redirect the crontab output to /dev/null to avoid messages being collected.

10 8 * * * /u/username/apache/apache_1.3.20/bin/apachectl graceful > /dev/null

Otherwise your mail spool can grow very large and may disrupt the entire activity on burrowww causing problems and system outages.

Mon Sep 10
Homework Two has been posted.

Fri Sep 7
Office hours, lab schedule finalized.

Thu Sep 6
Homework One also posted.

Lecture notes for today have been posted.

Giving permission to the world without granting the group the same priviliges creates a problem, so I changed the suggested access masks for your lab assignment files and public directory as illustrated below, and have applied them to my own files including the Apache distribution. Sorry for any confusion yesterday.

Wed Sep 5
Here's how you make your archive available for Lab One: chmod 711 ~ chmod 711 ~/public chmod 644 ~/public/whoa.tar.gz
Don't forget to move the file there, first (from lab1).

Tue Sep 4
Lab notes for tomorrow, lecture notes for today have been posted.

Office hours are being updated.

Dates for the Midterm and Final Exams have been posted.

Sun Sep 2
Here's some info about SSH at IUB.

Here's where you can download it from (IUB Network ID requiered).

Thu Aug 30
Lecture notes for today have been posted.

Wed Aug 29
Lab notes for this week (containing lab assignment 1) have been posted.

Tue Aug 28
Lecture notes for today have also been posted.

List of students and ports assigned has been posted.

Fall semester 2001 A348/A548 starts in LH102 at 5:30pm.

Updated by Adrian German for A348/A548