creation: 6/24/99; revised 03/06/00

FAQ ---- Frequently Asked Questions

What is this?

These Notes are an experiment in applying the "programmed learning" method to web-based computer aided instruction. The subject is Java Programming for beginning programmers. The content is intended to:

  1. Start beginning programmers out on the track to professional-level programming.
  2. Reinforce learning by providing abundant feedback.

These notes started as a supplement to a freshman-level university course in computer science. Their purpose was to provide additional discussion and many examples of fundamental topics. Typical university texts cover the beginning material at a fast pace (perhaps because the book must fit all its topics into 1000 pages). Typical mass market Java books also are light on these topics (often the book assumes that the reader is already a programmer). These notes try to fill the gap. They don't cover all topics, but go at a slower pace for the fundamentals. The material is kept interesting (maybe) by using programmed learning.

What is programmed learning?

Programmed learning is a technique of organizing instruction so that after each new concept the student is asked a question to reinforce the concept. Instruction proceeds by

lesson question answer lesson question answer . . . . .
The lessons are short; the questions are easily answered. The constant feedback results in active learning on the part of the student and better comprehension and retention. Many studies have shown that the technique is very effective, especially for beginning lessons in technical subjects. When a student keeps mentally active by answering each question and checking the answer, learning is much faster.

Programmed learning was especially popular in the 1960s and 1970s. Usually it was implemented using printed books (with the lesson, question, and answer separated by thick printed bars or each printed on a separate page.) This was awkward.

At big universities it was implemented on main frame computers with special (and very expensive) terminals for the students. Only privileged students got machine time, and only by signing up in advance to use the special teaching laboratories. A staff of technicians and educational programmers was needed to make it all work.

Now with the web this technique is cheap and easy. Oddly, nobody does it anymore.

If answering simple questions is so effective, then are highly interactive multimedia methods even more effective?

Possibly. But it certainly takes more time to create. And I suspect some of it adds little to actual learning. Most of the effectiveness of user interaction can be captured with simple methods. These notes are written as an informal experiment to see if this claim is plausible.

Has the effectiveness of these notes been tested?

These notes are "classroom tested" --- which means that they have been used as a supplement to actual classes and have been written and adjusted based on those experiences. No formal testing of these notes has been done. However, many students have said good things about them (especially near the end of the semester when grades are due.)

With J++ (and other development environments) the DOS window doesn't stay on the screen after the program finishes. How can this be fixed?

This problem is a "feature" of many commercial development environments. For example, here is a correct Hello World program:

class Hello
  public static void main ( String[] args )
    System.out.println("Hello World!");

In J++ if you click on "execute" the program will send its output (the characters Hello World!) to a DOS window that flashes on and off the screen too rapidly to be seen.

There are several ways to deal with this problem. One way is to modify the program so that just before where it would normally end, it waits for input. The code in red can be pasted into any program.


class Hello
  public static void main ( String[] args ) throws IOException
    System.out.println("Hello World!");

    System.out.println("Hit enter to exit");;

Another way to deal with the problem is to use J++ (or other environment) for editing and compiling, but to use your own DOS window for executing the program. To do this, start a DOS window, then change its default directory to the directory that holds the compiled bytecode (for example Hello.class.) Then execute that code from the command line:

java Hello.class

The portability of Java ensures that the code compiled with J++ will work with the Java Virtual Machine that comes with the JDK.

Can these notes be used off line?

A zip file containing most of these notes is available (see the main menu.) Click on it to ftp it to your hard disk, then unzip it.

Each chapter is a (nearly) linear sequence of pages (i.e.., each page is linked to the next without any other branches.) If you point your browser to the first page of a chapter, then click on the link at the bottom of it and each succeeding page until the last, you will have all the pages in your computer's buffer. You can then go off line and read the pages at your own pace.

Some web browsers include a tool that downloads all the pages of a web site with one click. Such a tool will work fine with this site.

Can these notes be used without a text book?

Yes, but they provide a different type of instruction than a traditional text. Many readers like to read a printed text as they go through these notes. The combination of . . .

  1. a printed book,
  2. classroom lectures, and
  3. these notes
. . . is especially effective.

What printed books can be used with these notes?

There are two types of books on Java:

  1. "Mass market" books that teach Applets and Multimedia, but mostly skip programming.
  2. Textbooks.
Many of the mass market books (such as sold at Barnes and Noble or Borders) jump right into the excitement of the Web but skip the foundations of computer science and programming (the stuff you get hired for.) If you have such a book, have fun with it, and study its examples. Use these notes to fill in the stuff it doesn't cover. Good mass market books:

A good strategy is to check a title at to find out the latest edition. Then examine it carefully at your local bookstore.

These university textbooks cover roughly the same topics in roughly the same order as these notes:

Texts that stress applet programming follow a different order than these notes.

What should I read after finishing these notes?

The best thing you can do is write many programs on your own. If you want to read another book on Java programming, you have three choices:

  1. Pick a mass market book on general Java programming. Perhaps one with a multimedia flair.
  2. Pick an advanced book on a specific Java topic, like networking or imagery.
  3. Pick a book on general Java programming intended for an experienced programmer.

The following books are for experienced programmers. These will be more difficult for the beginner.

Where are all the missing chapters?

The holes in the chapter numbering are for chapters yet to be written. The holes are there so future chapters can easily be inserted without renumbering everything.

Can these notes be printed out on paper?

Yes, using the "print" function of your browser. But the result is ugly, and you loose most of the interactive features. I've not done it, but I know that many users have. These notes consist of about 1200 web pages, many taking two or more paper pages to print.

When will these notes ever be finished?

That's the question I ask most frequently...

Click here to go back to the main menu.