Monday June 5, 2000


In the 1950's an educator named Bloom developed a list of levels of knowledge mastery. We can use this list to understand the progression that we go through when mastering new material. Let us look briefly at a few of the levels.

Bloom's Level of Mastery
  1. The student can recite facts, can recognize facts, and can state definitions.
  2. The student can differentiate between related concepts, can paraphrase or translate into his/her own words, and can use the concept when cued. The student can explain the idea to someone else.
  3. The student can apply the concepts to a new domain without any cues being provided.
Levels 4,5, and 6 deal with the ability to synthesize the given knowledge with other concepts and create new concepts. These levels are beyond the scope of our course. They would be expected of advanced students or experts.

This semester our goal will be for you to achieve at least a level three mastery of Programming and Problem Solving Concepts.

The School of Computer and Information Sciences is now 20 years old. Over the years this course has seen significant changes. 10 years ago the language used in the Freshman programming sequence was Pascal. Pascal is a very popular teaching language. Also about 10 years ago a new paradigm was introduced to Computer Science. This paradigm is known as Object Oriented Programming. Even though later releases of Pascal (the version we used was called Turbo Pascal) did support Object Oriented Programming, the language used in this course was changed to C++. When the University switched to the semester system, this School decided to change the language used in this course to Java.

Java is an Object Oriented Programming Language that was developed by James Gosling at Sun MicroSystems. Although it was not a success when it was first released, it became very popular with the explosion of the Internet. The Netscape browser has built-in support for Java so it became possible to deliver executable content over the Internet instead of just static pages. Since it is a relatively new language, it is still under development. However, the current state of the language provides us with a very nice tool with which to learn Programming concepts.

Before we actually begin to examine the language itself, we need to discuss the process that you will go through to produce executable programs.

  • The first step is create a file with a text editor in which we place executable Java statements. This file is known as our source file. We can directly edit this file and make changes because the statements are ones that we can understand.

  • The Central Processing Unit in a computer can only understand streams of 0's and 1's so we must convert our source file into some form that the CPU understands. The program that accomplishes this is called a compiler. In some programming languages, the compiler will generate code that can be directly executed by the CPU. However, in Java, the compiler does not do this.

  • The compiler in Java, called javac converts source code into what is called Java bytecode. A companion program called java, known as an interpreter, will take the Java bytecode and convert it into machine executable code. Java bytecode is independent of the platform on which it resides. That means that if you create Java bytecode on your home machine, then you can move that bytecode to any machine and the interpreter should be able to deal with the bytecode.

  • There are advantages and disadvantages to this approach. When a compiler directly generates machine executable code, it normally stores it in a file with a .exe extension. But this file will only execute on the platform on which it was generated. That is, if you create a file with extension .exe on a machine using Microsoft Windows, then that file will not execute on a machine using Linux or other UNIX variants. When Java bytecode is generated, the file is given the extension .class and is platform independent. Because this file must be passed to another program in order to be executed, it is less efficient than a .exe file.

  • Because of Java bytecode's platform independence, it is an ideal language for use with the World Wide Web. We have no control over what type of platform a client machine will use, but a Java program should be able to execute on all of them.

    There are three major types of errors that will be encountered when creating and executing programs.
    1. Compile-time errors. These errors occur because of syntax problems with the source code. They are usually easily resolved.

    2. Run-time errors. These errors occur during the execution of a program. Such errors would be trying to divide by 0 or open and read from a file which doesn't exist. These errors are also often easy to resolve.

      If neither of the above errors occur, this does not mean that our program runs like we want it to. It just means that there are no syntax errors and no errors generated when the program executes. What the program produces may not be what the program should produce. This type of error is called a logic error.

    3. Logic errors. These are errors that occur because of fundamental flows in the design and implementation of our program. They can sometimes be very difficult to resolve. Of these three types of error, logic errors are the most difficult to resolve.
    The software package which we will use this semester is JBuilder. Each machine in the lab will have this software available. You will also be able to purchase a copy of this software at the bookstore. JBuilder, like all other Java development tools, provides an IDE, Integrated Development Environment, for writing and executing Java programs. However, the underlying compiler is freely available from Sun Microsystems. It is called the JDK, Java Development Kit. It contains the compiler, javac, and the interpreter, java. You may download the JDK for free from Sun Microsystems.