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:

Start beginning programmers out on the track to professional-level programming.

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. At present, however,
this zip file is several years old.

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

a printed book,

classroom lectures, and

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:

"Mass market" books

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 amazon.com
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:

Pick a mass market book on general Java programming. Perhaps one with
a multimedia emphasis.

Pick an advanced book on a specific Java topic, like networking or imagery.

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:

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.

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.