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
- The student can recite facts, can recognize facts, and can state
definitions.
- 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.
- 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.
- Compile-time errors. These errors occur because of syntax
problems with the source code. They are usually easily resolved.
- 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.
- 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.