creation: 6/24/1999; revised 08/28/2008

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 reader is asked a question that reinforces 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 reader 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, programmed learning 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 such methods certainly take more time to create. 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 demonstrate this claim.

Has the effectiveness of these notes been tested?

These notes are "classroom tested" — which means that they have been used in 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).

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 download it to your hard disk, then unzip it to a new disk directory. However, this zip file is not kept up to date, and may not have some things the on-line version does. In particular, the audio files are not included.

Each chapter is a (nearly) linear sequence of pages. 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. The Web sites for many high school and university courses in Java link to this site as a supplement to the regular text book. Of course, if you are taking a course in school, your text book is your primary source and it might be a fatal mistake to try to get by without it.

What printed books can be used with these notes?

There are two types of books on Java:

  1. "Mass market" books
  2. Textbooks

Many mass market books (such as sold at Barnes and Noble or Borders) are written to sell to the widest audience possible, and skip much of the foundations of computer programming. Even text books are sometimes weak on this, assuming (I suppose) that the more subjects the book covers in 800 pages the better it will sell.

If you are buying a printed book on Java, check carefully that it covers the topics you want. A good strategy is look through the titles at to find an appealing book. Then examine it carefully at your local bookstore.

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 emphasis.
  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 difficult for a beginner.

Where are all the missing chapters in these Notes?

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 this, but I know that many users have. These notes consist of about 1200 web pages, many taking two or more paper pages to print.

The output of my program vanishes as soon as the program quits. How can this be fixed?

This problem is a "feature" of many commercial development environments when you don't run the program from a command prompt (DOS) window. For example, here is a correct Hello World program:

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

In J++ (and other such environments) if you click on "execute" the program will send its output (the characters Hello World!) to a DOS window that flashes onto the screen and then immediately vanishes.

There are several ways to deal with this problem. One way is to modify the program so that it waits for input just before the statement where it would normally end. The code in red can be pasted into the main method of 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.

When will these notes ever be finished?

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

Click here to go back to the main menu.