Richard G Baldwin (512) 223-4758, NRG Room 4238,,

ITSE2321 Object-Oriented Programming

This is the official web page for classroom sections and Open Campus (PCM) sections taught by Professor Baldwin at

Official Web Page

Fall 2007

Revised 09/18/07


This is the official web page that will be used for communicating information between Professor Baldwin and students enrolled in this course.

All students are required to complete the online orientation.  To participate in online orientation, click on the orientation link below.

Broken Links:
Occasionally one or more of the links, which tie these online, documents together, may become accidentally broken.  If you discover a broken link, or any other problem with the online documents, please notify me as soon as possible so that I can repair the problem.

For students enrolled in the classroom sections, it is possible that you may be administratively withdrawn from the course if you fail to attend class at least once during the first two weeks of the semester.  (This requirement does not apply to Open Campus students.) However, you must not depend on me to withdraw you if you need to be withdrawn.  Withdrawal is the responsibility of the student and is not the responsibility of the instructor.

Communications via Email
If you send email to me, it is imperative that you include your name and the identification of the class in which you are enrolled (ITSEXXXX) on the Subject line. I normally have a very large number of students in any given semester. If I have to search the rolls to identify you, I may not answer your Email.

In addition, because I receive approximately 30,000 spam and virus Email messages each month, I use a very aggressive spam blocking program.  If your email message doesn't contain the identification of the class in which you are enrolled (ITSE2321) on the Subject line, your message will probably be put in quarantine by the spam blocker and I will probably never see it.

I also receive large numbers of email messages from persons all over the world asking questions about Java programming.  I don't have the time to answer all of them.  If you identify yourself as a member of my class and identify the specific class as described above, I will make it a point to try to answer your question.

It is also important that you provide a telephone number where I can contact you. I receive many email messages from students with invalid return email addresses.

Questions via Email:
From time to time you may need to ask questions via email, and I encourage you to do so.  However, please make the question as specific as possible.  For example, "What is OOP?" is not a question that I can easily answer via email.

If you, like many others, procrastinate and save your questions until the weekend before an exam deadline, don't be surprised if you don't get a response from me until after the exam deadline has passed. The weekend before an exam deadline is not the time for you to begin trying to learn how to program in Java.

I am usually happy to answer questions about Java programming concepts at the level of this course. However, please don't ask questions about the exams (unless you believe there is a problem with one of the test files that I have provided).  It is almost certain that I won't answer them.  It isn't fair for me to answer questions about the exams from one student when all students don't have an opportunity to hear the question and the answer. After all, if I didn't give take-home exams, you wouldn't have an opportunity to ask questions anyway. Just pretend that you are taking the exam in an ACC testing center and that I am not there.

When appropriate, please illustrate your question with a short sample program.  When you send a sample program, please observe several important rules:

I am here to help you, so don't hesitate to ask for help when you need it.

How many lessons...?
I frequently receive questions (both via Email and in the classroom) similar to the following, “How many tutorial lessons do I need to read to be able to write the program for problem X on exam Y?”

My answer is usually something like the following, “Read (and understand) as many lessons as necessary to learn enough about Java programming to be able to write the programs or answer the questions.

If I gave true/false and essay tests in the classroom under closed-book conditions, I would feel obligated to tell you in advance how many lessons you need to understand in order to prepare for the test.  However, my tests are all take-home tests.  You have access to all of the test questions from very early in the semester.  You have access, not only to my tutorials, but also to any book that you wish to consult, and to numerous resources on the web, in preparing yourself to successfully complete the exam.  I consider it to be your responsibility to make use of those resources in whatever manner, and on whatever schedule works best for you.

I simply provide the tutorial materials, conduct classroom lectures and discussions, answer appropriate Email questions, and establish the necessary deadlines.  (Unfortunately, deadlines are a fact of life, not only in college, but also in the workplace.)  I make no attempt to tell you how to schedule your time and your efforts.

So, before you ask, the answer is, “Consult whatever resources you need to consult, on whatever schedule you need to consult them, to learn enough about Java programming to be able to successfully complete the exams by the required deadlines (but please don’t get human assistance in the actual writing of the exam).”

Help me debug my program
Please don't waste our time by asking me to help you debug your programs.  The best way to debug is to avoid errors in the first place.  Then there won't be any bugs that require attention.

If you understand the requisite programming concepts, the only bugs that you will incur will be the result of careless errors on your part.  I won't waste my time showing you how to correct for your own carelessness.

Getting Started:
See the material in the "Hello World" lesson for instructions on how to compile and run a Java application.

Failure to Meet Prerequisites:
Please don't ask me to teach the COSC1315 Fundamentals of Programming material to you.  If you don't already understand that material, it will be your responsibility to learn it, on your own, without assistance from me.

Carelessness is costly
A few semesters back, on the last Friday of the month, which was anticipated to be one of the most active trading days of the month, programmers working on a network made a careless error and shut the NASDAQ stock exchange down for several hours.  There is no way of estimating how much this cost various people around the world.

A few months later, programmers working for a telephone company made a careless programming error and swamped the 911 emergency call center in Austin with wrong numbers for several hours.  Hopefully no one died as a result, but we will never know.

Although careless errors on exam programs may not be as costly as the errors described above, they are costly nonetheless.  In fact, the cost for making a careless error on an exam program is just as costly as not knowing how to write the program in the first place.  In either case, you get no credit for the program.  So, don't be careless.


If things don't seem to be working properly when you follow these links, you may need to clear your cache or force a reload or both.  With Netscape, you can force a reload by holding down the shift key and clicking the reload button at the top of the browser page.  You can clear the cache in the Preferences menu.

Bulletin Board

Check this area daily for messages from Professor Baldwin to all students enrolled in the class.

Note that this bulletin board contains postings that are new to this semester, in addition to postings that were carried forward from previous semesters due to the fact that the information in those older postings continues to be important over time.

08/20/07  Correct Email address
I was notified on 05/10/04 that ACC will no longer forward my Email messages to my preferred Email address.  Please do not send Email messages to  Send them instead to

I was notified during the Summer of 2004 that beginning in October of 2004, ACC will stop accepting email addressed to  Please do not use that older email address.

08/20/07  Who Am I?
I receive many email messages addressed to Dr. Baldwin, and I appreciate the courtesy. My highest degree earned is a Masters Degree in Electrical Engineering, and I am a full Professor at ACC. Under the circumstances, Prof. Baldwin is a more appropriate salutation than Dr. Baldwin.

08/20/07  Who are you?
When the semester begins, I will have a very large number of students on my rolls.  I probably won't be able to learn your name and email address.

I typically receive hundreds (occasionally thousands) of email messages each day, many of them from my students.

When you send an email message to me, make absolutely certain that the Subject line contains the following information as a minimum:

Make certain that your reply-to email address is valid.  (Send yourself a message and then reply to it to see if you get the reply.  Do I really need to tell Java programming students how to validate their reply-to email address?  Unfortunately, yes I do although it makes me cringe to do so.  I receive many email messages from students with invalid reply-to addresses.)

Include your current telephone number somewhere in the body of the message, and make it easy to find.  If my email or your email goes down, I may try to call you on the telephone.

If you don't comply with the above, don't expect me to answer your email messages.

08/20/07  Please Be Patient
Other than questions regarding registration, please do not send email regarding this course prior to the first day of classes.  If you do, I probably won't answer it.  A great deal of preparation is required to teach a course of this nature.  I have many responsibilities to take care of in the final days before the course begins and I do not have the time to work with individual students until after the course actually begins.  If I reach the point that I can accept email regarding this course prior to the first day of classes, I will post that fact on this bulletin board.

08/20/07  Submitting Your Exams
As explained in one of the online documents, you can submit your exams on diskette or via email.  However, because of the danger of spreading computer viruses via contaminated diskettes, I would prefer that you submit your exams by encapsulating them in a zip file and attaching the zip file to an email message.

Diskette Submittal
If you submit your exam via diskette and my virus checker tells me that your diskette is contaminated, I will simply throw it in the trash and you will earn a zero on the exam.  Be sure that you are using an up-to-date virus checker, or run your diskette through the virus checker in the NRG lab before turning it in.

If you submit your exam via diskette and you are unable to hand it to me in person, put it in a large envelope and slide it under my office door.

EMail Submittal
If you submit your exam as an attachment to an email message, before sending the zip file to me, send it to yourself via email and confirm that you can unzip it to produce what you think it should contain.  Then when you send it to me, list your own email address to receive a copy of the email message.  When you receive the copy, unzip it to confirm that you sent the correct file.  If you find a problem in the file that you submitted, notify me immediately via email.  Otherwise, if I am unable to successfully unzip the file that you send to me, you will get zero credit for the exam.

Duplicate Copies
You will have only one opportunity to submit each exam.  Make it count by submitting the correct file.  DO NOT SUBMIT DUPLICATE COPIES of your exams.  This leads to a great deal of confusion.  If I receive more than one copy of an exam from you, I will either select the first copy that I receive, or will select one copy at random for grading, whether or not that is the one that you desire to have graded.

08/20/07  Textbook Purchase
Unless you are anxious to spend some money, you should probably defer the purchase of a textbook until after classes begin and you evaluate the requirement for a textbook.  Although there is a standard textbook for this class, I won't do anything to require you to demonstrate ownership of that textbook.

08/20/07  Crossing the OOP Chasm
The biggest challenge that most of you will face in successfully completing this course will be in crossing the chasm from procedural programming to object-oriented programming.  (Unfortunately, most of you probably learned what you know about programming from a procedural rather than an object-oriented viewpoint, and bad thinking habits are very hard to break.)

My biggest challenge is figuring out how to help you cross that chasm.  Unfortunately, I don't have a magic recipe for accomplishing this.

If history is any indication of the future, many of you won't make it across.  For this reason, you should plan to devote a very large amount of time and effort to the task of understanding OOP (as opposed to simply memorizing the mechanics of Java programming).

For starters, you should carefully study Lesson 4 in my online tutorials.

Beyond that, you should visit one of the major bookstores and read the first couple of chapters in every Java book and every OOP book that you find there (many books have a chapter introducing OOP as a programming paradigm).

There is no simple recipe for learning OOP.  In order to progress from procedural programming to OOP, you will have to develop a completely different way of thinking about programming.  Perhaps if you read what a large number of authors have to say on the topic, that will help you to successfully cross the chasm.

08/20/07 Exam Hints
Most of the exam problems contain statements similar to the following:

"When my compiled version of ProbXX is executed, in
combination with your other class files, the program must
produce the output shown ...

For quality control purposes, you should test your version
of the program using the same procedure prior to submittal
of your exam..."

Among other things, this means that the signatures of the methods that you write must match the signature of the methods that I wrote (when my code invokes methods in your code).

That signature is usually inferred by the given code and the given required output.

If your program executes successfully using your version of ProbXX.class but fails to execute successfully using my version of ProbXX.class, this may mean that you have a problem with your method signatures.  In this case, you should look very carefully at the return type and the types of the parameters in the formal argument list.  You should also look very carefully at the issue of static versus non-static.  (Usually the text in the runtime error will provide clues as to where in the program the failure occurred, sometimes based on the line numbers in the given source code.)

Also note that when the source code in the controlling class invokes a method on an object, it is always a good idea to check first to see if that method is defined in the class named Object and inherited into your new class before writing the method in your new class.

Also, when the source code in the controlling class declares a variable of a given type, or uses a type for casting, or refers to a type for any other purpose, it is a good idea to check to see if the standard Java library already contains a class or interface having that name before defining your own class or interface.  To do this, you will need ready access to Sun's Java documentation which can be downloaded from the Sun site, or accessed online at the Sun site.

08/20/07  Problems in ACC NRG labs
I have been informed that there is a problem when students attempt to execute Java applications out of the root directory in the ACC labs at NRG.  Apparently if you create a directory and compile and execute your programs out of that directory, the problem will go away.  Laboratory personnel are working on the problem.

08/20/07  Documentation on my source code
When you download the exam files, you will receive a documentation package for each exam describing my source code.  The documentation package was produced using Sun's javadoc program.  The documentation for each exam is stored in a file named  Extract the files from the zip file and open the file named index.html to view the documentation.  This documentation may be helpful to you in successfully writing the programs for the exams, and may be particularly useful in helping you to write code that will execute successfully with my controlling class file.

08/20/07  Study Material for Exams
I have posted three tutorial lessons entitled: These lessons are designed specifically to help you study for your exams.

(You will also find a link to these lessons on the Table of Contents page for the Introductory Java Tutorials.)

Set 1 is designed to help you study for Exam 1.  Set 2 is designed to help you study for Exam 2.  Set 3 is designed to help you study for Exam 3.

Each lesson consists of a set of simple programs.  Each program is designed to illustrate one or more important Java OOP concepts.  The concepts involved are identified in the comments at the beginning of each program.

While the code in the lessons contains some explanatory comments, the programs are designed to illustrate the code without providing a detailed discussion of the code.  You are referred to the other lessons in my online Java tutorials for detailed discussions of the OOP concepts illustrated by these programs.

You are strongly encouraged to study and understand the sample programs provided in Set 1, Set 2, and Set 3 before embarking on a solution to the problems on Exam 1, Exam 2, and Exam 3 respectively.

08/20/07 Study Material
A great deal of effort and study is required to successfully make the transition from procedural to object-oriented programming.  Although we will be able to cover some of the relevant material in the classroom, it will not be possible to cover it all.  I strongly recommend that you study the following bodies of material in parallel:

Online Intro Java Tutorials lessons 4 through 56
Online Data Structures tutorials lessons 1350 through 1380
Sample programs 9000 through 9002 <<< VERY IMPORTANT
Essence of OOP Using Java, lessons 1600 through 1630 as listed elsewhere on this page.
Advanced Placement Study Guide, AP002 through AP...
Test Your Java Knowledge, lessons 1 through 13.
Additional online resources listed elsewhere on this page.

08/20/07 Exam hints
In order to successfully complete the three exams, it will be necessary for you to do independent research into several topics that we won't have time to cover in the classroom.  One of the easiest and quickest ways to do this is with an online search.  For example, to view most of what I have to say about the concept of overriding the toString method, start the search engine at and search for the keywords:
richard baldwin java overridden toString

To prevent Google from showing you an abbreviated list of links, go to the bottom of the last page of links and click on the link that reads: "repeat the search with the omitted results included"

08/20/07 Classpath Environment Variable
If you are running Java under Windows and are having difficulty executing Java applications that you have successfully compiled, your problem may have to do with the classpath environment variable.  For example, see the discussion at the following URL:  

Pay particular attention to the section that reads "Should I modify the CLASSPATH variable?"

Within that section, pay attention to the discussion involving the current directory.

08/20/07 JCreator
One of my students has recommended the freeware version of JCreator, so I have added it to the list of online resources.  I tried it and have started using it myself, but I only use it as a color-coded text editor.  I don't make any attempt to use the project development capabilities of the product, so I don't have anything to say about that capability.

08/20/07 Doing online Java research
It is frequently necessary for me to remind students that my teaching and examination approach doesn't involve feeding facts to the students so that they can memorize and regurgitate those facts on the next exam.  Rather, my approach is to teach important Java OOP concepts.  I have an expectation that the student will do the necessary self study and research to fill in the facts in order to successfully complete the next exam.

Here are two online resources that are particularly useful for doing such research:

Search Sun's Java Tutorial at
Search Sun's documentation and the Java Tutorial at

For example, if I needed to know more about focus traversal and couldn't find what I needed in Baldwin's tutorials, I would probably take a look at the sites listed above and search for key words like focus traversal.  This may or may not yield what I need to know, but it surely is a good way to start.

08/20/07Puzzled by Polymorphism
If you, like many students, don't completely understand polymorphism as implemented using inheritance and interfaces in Java, I have written several tutorial lessons that may help you to understand.  You are encouraged to study them to see if they help.  These lessons will constitute the primary classroom discussion material for my ITSE2321 classes now and into the foreseeable future.

Java1600 The Essence of OOP Using Java, Objects, and Encapsulation
Java1602 The Essence of OOP using Java, Classes
Java1500 The Essence of OOP using BlueJ, Objects, Encapsulation, and Classes
Java1604 The Essence of OOP using Java, Inheritance, Part 1
Java1606 The Essence of OOP using Java, Inheritance, Part 2
Java1608 The Essence of OOP using Java, Polymorphism Based on Overloaded Methods
Java1610 The Essence of OOP using Java, Polymorphism, Type Conversion, Casting, etc.
Java1612 The Essence of OOP using Java, Runtime Polymorphism through Inheritance
Java1614 The Essence of OOP using Java, Polymorphism and the Object Class
Java1616 The Essence of OOP using Java, Polymorphism and Interfaces, Part 1
Java1618 The Essence of OOP using Java, Polymorphism and Interfaces, Part 2
Java1620 The Essence of OOP using Java, Static Members
Java1622 The Essence of OOP using Java,  Array Objects, Part 1
Java1624 The Essence of OOP using Java,  Array Objects, Part 2
Java1626 The Essence of OOP using Java,  Array Objects, Part 3
Java1628 The Essence of OOP using Java,  The this and super keywords
Java1630 The Essence of OOP using Java, Exception Handling
Java904 Use of an abstract class containing no abstract methods

08/20/07Online Resources
Understanding OOP can be very difficult for those persons who have already developed a lot of non-object-oriented thinking in their previous programming experience.  That's the bad news.

The good news is that there are numerous free online resources to which you can refer in your efforts to understand OOP.  The following is a short list of useful, free online resources (in no particular order).  I strongly recommend that you study all of the material in this list with particular emphasis on the various explanations of Object Oriented Programming.

As time goes on, I will add new items to this list. If you find any of these links to be broken, please let me know.  (Broken links removed on 1/23/07.)

Baldwin's Java Tutorials
The Java Tutorial from Sun, A practical guide for programmers
Sun's Java Developer Connection, Tutorials and Short Courses
Bruce Eckel's Thinking in Java
Object Oriented Concepts in Java - Part 1, by Kevin Yank
Object Oriented Concepts in Java – Part II, by Kevin Yank
Sun's Online Java Documentation
Object-Oriented Programming Concepts from Sun
Object-Oriented Java: Getting Into Interfaces
The jGrasp editor
The BlueJ Java downloadable programming environment
Visual Basic .NET as a Fully Object-Oriented Language
The Java Language Specification 
OO and Java Development:  Guidelines and Resources 
Rock'em, sock'em Robocode, good article on Robocode Framework Training Modules
Code examples from the Java Developers Almanac
JCreator - a color-coded freeware IDE
Search Sun's Java Tutorial at
Search Sun's documentation and the Java Tutorial at 
C# and VB Object-Oriented Programming in Visual Studio .NET

08/20/07 Don't compose email messages in HTML

Many SPAM blocking programs consider the existence of HTML in an Email message to be an indication that the message contains SPAM.  Therefore, it would be best if you compose your email messages using plain text.  Don't compose them in HTML.

08/20/07 You don't need to withdraw?
If past history is any indication of the future, a large percentage of you won't submit the first exam.  Most of you who don't submit the first exam will ultimately withdraw from the course and forfeit the money you paid to enroll in the course.

Barring a personal emergency (such as an extended stay in the hospital), there is no excuse for anyone failing to successfully complete this course.  All of the information that you need to successfully complete all three exams is located on the following Web pages:

If you will spend a reasonable amount of time studying the sample programs located there, you should be able to successfully complete all three exams.  I sincerely hope that you do that and that you successfully complete the course.

08/20/07 Computer Studies Student Information Form

The following is requested by the Computer Studies department, but is not a requirement of the course in which you are enrolled.  Whether or not you provide the following information will not be taken into account when determining your grade in the course.

If you are willing to provide this information, please compose an e-mail message containing the following information and send it to

If you do provide the information, please make the subject line of your e-mail message read as follows:
Last Name, First Name, Course Number, Student Information Form

DO NOT include this information in the message that you send confirming that you have completed online orientation.  Send separate messages for those two purposes.

You should be able to copy and paste the following form into your e-mail client and then fill in the blanks.  Don't be too concerned about neatness when filling in the form.

Last Name:_____________________
First Name:_____________________
Student ID:_____________________
Course Number: IT__ ____

Telephone Numbers

E-mail address:_________
Any issues that the instructor should be aware of:


Reasons for taking the course:

_____Personal Interest
_____Required by degree program, which is ______________
_____Work related - please explain in comments section below
_____Recommended by ______________________________
_____Other, please explain in comments section below
Please indicate the following:
_____Hours working per week
_____Number of credit hours enrolled in this semester
_____Number of computer courses completed at ACC
_____Highest degree earned
What computer courses have you completed at ACC or elsewhere?


What computer or computer related work experience do you have?




08/20/07 Broken tutorial links
I discovered during a recent semester that had broken the links to many of my Java, Python, and C# tutorials.  The tutorials were apparently still there, but they were at different URLs from the URLs listed in my Table of Contents pages.

If you are unable to view a particular tutorial by clicking the link in the Table of Contents, copy the name of the tutorial from the Table of Contents, and then search for it using Google Advanced Search.  Enter the name of the tutorial in the "Exact Phrase" box, change the number of results per page to 100, and then click the Google Search button.

If you haven't located the tutorial of interest by the time you have viewed the last page of links on the Google results page, click on the link at the bottom of the last Google page that reads "repeat the search with the omitted results included."  Then examine the links again to see if you can find the tutorial of interest.

Please also let me know if you find broken links in my Table of Contents.

08/20/07 A Special Invitation
Statistics show that the dropout rate in Distance Learning classes is much higher than in classes where students regularly attend lectures, ask questions, and participate in discussions.  It is my strong desire that you succeed in this course and that you do not drop out.

If you are enrolled in the Distance Learning section of the course, I urge and invite you to attend my lectures whenever your schedule will allow.

You can find the schedule for all of my classes at the following URL:

08/20/07 Installation problems with JCreator
Several students have contacted me to tell me they were unable to get JCreator properly installed on their computer, and asking me to tell them how to resolve their installation problems.

Unfortunately, without direct access to your machine, there isn't much that I can do to help you install software properly.

However, it is extremely important for you to know that for the simple programs required for this course, you don't need to use JCreator, or any other IDE for that matter.  All you need is the JDK from Sun, a simple text editor, and a modest knowledge of how to operate your computer from the command prompt.

Furthermore, if you are unable to create, compile, and execute Java programs on your machine at home, you can use the machines in the ACC laboratories.  The use of JCreator or any other IDE is not a requirement for this course.

08/20/07 Studying for exams
I cannot overemphasize the importance of you studying Sample programs 9000 through 9002 in preparation for the completion of your exams.

Also, whether you are a regular classroom student or a Distance Learning student, if you don't understand everything that you need to understand about OOP using Java, you need to be in my office talking to me about it.  Often a short explanation will get you past a roadblock and get you back on the track to learning OOP.  Visit during office hours, lab periods, or any time that my office door is open.

08/20/07 Caution when using JCreator
Several students have complained of problems when attempting to compile and/or execute programs from within JCreator.  My response is as follows:

Nether JCreator nor any other high-level Java program development environment is sanctioned for use in this course.  The only software development software that is sanctioned for use in this course is Sun's JDK 6 (or later) when run from the command prompt.

However, the free version of JCreator does have a nice color-coded editor, and I use it strictly for that purpose.  You, of course, are free to use any editor that you want to use provided that it produces source code that is compatible with the Sun JDK.

JCreator will not be involved in my evaluation of your exam programs.  Your programs will be executed strictly from the command prompt to determine if they meet the specifications.

08/20/07 What Java version do you need?
You will need to download and use Sun's JDK 6 or later (also known as Java SE 6).  You should not need the version with NetBeans.  You do not need to download the JRE separately.  It is included in the JDK.  You will need to either download the Java SE 6 Documentation or have the ability to view it online.

I receive several hundred email messages every day.  Many of the messages that I receive contain viruses or worms.  Most of the rest are SPAM.

As a result, I have been forced to become very selective regarding the messages that I am willing to open and read. I can't trust that simply because a message is received from someone that I know, it is safe to open and read.  Unless something in the Subject line of the message causes me to believe that I can trust the message, I will simply delete the message without reading it.

Therefore, if you send email messages to me, your Subject line MUST be formatted as follows:

Last name, First name, ITSE2321, Brief topic of message

When I see that format, I will trust that the message is safe to open and read.  Otherwise, I will assume that your message contains a virus or constitutes SPAM, and I will simply delete your message without reading it.

Therefore, if you want me to read your message, you MUST format your Subject line as shown above.

I normally respond to student email messages within 24 hours except on the weekends.  If you send a message to me and you don't receive a response within 24 hours (allow 72 hours on weekends), make certain that your Subject line is correctly formatted and send the message again.

08/20/07 The Importance of Sun's Java Documentation
I cannot overemphasize the importance of learning how to use Sun's Java documentation for aspiring Java programmers.  I have published a lesson entitled The Importance of Sun's Java Documentation, which you would do well to study.

08/20/07 Complimentary Online Tutorials
As a student in my class, you may go to the following URL and download a complimentary copy of a zip file containing many of my online Java tutorials:

When I receive your orientation confirmation message, I will send you the password required to extract the tutorial lessons from the zip file.

08/20/07 Upgrade to JDK 6
In the Summer 2007 semester, we began using Sun's JDK 6.  I have briefly tested the exam problems to confirm that they still behave properly under JDK 6.  However, much of the source code used in this course was written prior to the release of JDK 1.5.  Therefore, when you compile that source code, you may get compiler warnings as a result of new features that were incorporated in JDK 1.5 (see my lesson entitled Generics in J2SE 5.0).  This is particularly true if the source code uses the Java Collections Framework.  As of this writing, however, I haven't discovered any "code breakers" in the new features in JDK 1.5 as was the case with JDK 1.4.

08/20/07 Warnings in JDK version 1.5
As a result of changes (improvements?) made in JDK1.5, (see my lesson entitled Generics in J2SE 5.0) many existing programs will produce the following warning when recompiled using JDK 1.5 or later versions:

Note: uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

This is a warning, and is not an error.  As far as I am concerned, you can simply ignore the warning.

The lesson entitled Generics in J2SE 5.0 explains how to avoid the warning on future programs.  It is extremely unlikely that I will modify and re-publish earlier programs that worked fine prior to the changes in the JDK.

08/20/07 Do not send executable attachments
If you send an email message to me and expect me to read it, DO NOT attach any executable files, even if they are encapsulated in a zip file.  This includes files with the following extensions, just to name a few:


If you do send such files, my virus blocker will simply reject the message and I will never see it.

The following file extensions should be OK:

.zip (Provided the zip file doesn't contain any executable files.)

If you find it necessary to send a questionable file for any reason, you should also send another message without an attachment notifying me that you sent the questionable file as an attachment so that I can be on the lookout for it.

08/20/07 All three exams are available
All three exams are ready for downloading as soon as you complete the required orientation.

08/20/07 Now accepting online orientation confirmations
I am now accepting online orientation confirmation messages for the Fall 2007 semester.

08/20/07 Problems with the Java version and the path environment variable
A student of mine who had successfully compiled and executed Java programs on his system suddenly began to experience problems when trying to execute programs that had compiled successfully and had been run successfully in the past.

After a great deal of troubleshooting effort, this student determined that the recent installation of Oracle software for a database course that he was taking had caused an old version of the Java virtual machine to be installed on his system.  In addition, that installation had placed an element at the beginning of his path environment variable that caused the old version to be executed every time he attempted to execute a Java program.

If you experience problems when executing compiled Java programs from the command line, try entering the following command and confirming that you get a similar response (the first few digits of the version shown should be the same as the version that you installed):

C:\jnk\1>java -version
java version "1.6.0_06"
Java(TM) 2 Runtime Environment, Standard Edition 
(build 1.6.0_06-b05)
Java HotSpot(TM) Client VM (build 1.6.0_06-b05, mixed mode)

Similarly, if you experience problems when compiling Java programs, try entering the following command.  Your output should confirm the version.

C:\jnk>javac -version
javac 1.6.0

08/20/07 Don't use NetBeans, Eclipse, or other high-level IDEs
NetBeans, Eclipse, and other high-level IDEs are excellent productivity tools for programmers in the workplace who are working on large projects, who know exactly what they are doing, and who have a need to become more productive in their programming efforts.

However, to write the simple programs required for this course, you should need nothing more sophisticated than a text editor (preferably with Java syntax color coding) and the Sun Java Development Kit (JDK).  You shouldn't need a high-level IDE to serve as a crutch to help you write these simple programs.  The use of a high-level IDE to write the programs required for this course is a gross overkill, can lead to problems as illustrated by the following example, and is not recommended.

One of my students recently recently scored zero on an exam because he:

As a result, when I attempted to execute this student's programs in the prescribed manner, they all threw Exceptions or Errors and failed to execute.

Obviously, I can't keep you from using a high-level IDE to develop your programs on your system at home.  If you elect to do so, however, make certain that you understand exactly what you are doing, and also make certain that you test those programs in the prescribed manner.  Otherwise, you too may find that you won't get credit for the programs.

08/20/07 Openings for Paid Student Internships in Nanotechnology
See the following URL for information on paid internships for ACC students.

08/20/07 Job Posting
I have been asked to post this job opening each semester for the past several semesters.  I don't have confirmation that the opening still exists, but I have reason to believe that it does.

National Instruments is a technology pioneer and industry leader in virtual instrumentation, delivering today’s most advanced technologies for test, control, and design. Headquartered in Austin, Texas, NI has almost 4,000 employees worldwide and direct operations in 40 countries. The company sells products to more than 25,000 companies in 90 countries. FORTUNE magazine has named NI one of the 100 best companies to work for in America for seven consecutive years.

R&D Software Technician Engineering Department.
Responsibilities include ownership, maintenance and debugging of existing applications; software development to automate product testing. Skills relevant to software positions across multiple groups include - Basic understanding of electronics, computers, and high-level programming languages; effective problem solving skills; good knowledge of at least one programming language.

If you're interested in our position, please post your resume here:

09/18/07 Grades
I have been notified that I am no longer allowed to send your grades to you via email.  Therefore, in order to view your grades on exams, you must establish a Blackboard account.  Since I have never established a student Blackboard account, I can't tell you what is involved.  All I can tell you is that you can probably begin that process at the following link:

Please be aware that the classroom and the Distance Learning sections for this course were combined within Blackboard.  You should find only one available section of this course within Blackboard, and that is the one you will need to connect to.

Once you are connected, you should be able to view your grades in the grade book.  Once again, never having gone through that process as a student, I can't tell you what is involved.

Please be aware that only the individual grades showing in the grade book are of significance, and they are provided for information purposes only.  The computations that purport to show your final grade are meaningless.  I will compute and record your final grade (possibly including a curve) according to the information contained in the syllabus and other related documents, and will cause that grade to be recorded at the end of the semester completely independent of the Blackboard grade book.

Also be aware that if you find any information in Blackboard that conflicts with information provided in the syllabus and its associated documents, the information in the syllabus and its associated documents will prevail.  If you find such conflicts, please notify me.

If you are unable to set up your account and view your individual grades via Blackboard, please let me know.

Since this is my very first experience using Blackboard, I may find it necessary to modify this posting as time progresses.


File: ITSE2321.htm