Richard G Baldwin (512) 223-4758, NRG Room 4238, Baldwin@DickBaldwin.com, http://www.austincc.edu/baldwin

ITSE2317 Java Programming (Intermediate)

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

Official Web Page

Fall 2007

Revised 09/18/07

General

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

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.

Attendance:
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 (ITSEXXXX) 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. If you include your telephone number and your return email address doesn't work, I will usually try at least once to contact you by telephone.

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 exam 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 correct for your own carelessness.

Orientation:
To participate in online orientation, click on the orientation link below.

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 ITSE2321 Object-Oriented 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.


Links

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/21/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 baldwin@austincc.edu.  Send them instead to Baldwin@DickBaldwin.com

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


08/21/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/21/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 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/21/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/21/07  Orientation
All students are required to complete the online orientation.  First complete the online orientation. Then send an Email message to

Baldwin@DickBaldwin.com

certifying that you have completed the orientation according to the instructions.


08/21/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, please put it in a large envelope and slide it under my 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/21/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/21/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/21/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/21/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 JavaDocs.zip.  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/21/07 Study Material for Exams
I have posted a tutorial lesson entitled: This lesson is designed specifically to help you study for Exam 1

(You will also find a link to this lesson on the Table of Contents page for the Intermediate Java Tutorials.)

The 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 lesson 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 before embarking on a solution to the problems on Exam 1.



08/21/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 "Look and Feel", start the search engine at http://www.google.com/ and search for the keywords:
baldwin java look feel

More specifically, to learn most of what I have to say about Sun's Motif Look and Feel, search for the keywords:
baldwin java motif look feel

If you want to eliminate some of the false hits, insert my first name in the keyword list (that will probably also eliminate some of the real hits as well):
richard baldwin java motif look feel

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/21/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:

http://java.sun.com/j2se/1.3/install-windows.html#Classpath

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/21/07 JCreator
One of my students has recommended the freeware version of JCreator, so I have added it to the online resources mentioned later.  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/21/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 http://java.sun.com/docs/books/tutorial/search.html
Search Sun's documentation and the Java Tutorial at http://java.sun.com/docs/searchabledocs.html

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/21/07 Puzzled by Polymorphism
Each semester, several students tell me that there seems to be a very large gap between what they learned in their Intro OOP course, and what I expect them to know upon entry into ITSE2317.  Unfortunately, there is nothing that I can do about what you did or didn't learn in your intro course.  In addition, there are usually a few students who skipped the Intro OOP course altogether, believing that their prior programming knowledge prepares them for success in ITSE2317.  Sometimes it does, and sometimes it doesn't.

In any event, one of the things that I do to make it possible for ill-prepared students to catch up and succeed in ITSE2317 is to delay the submittal deadline for the first exam until around the middle of the semester, rather than making it due one-third of the way through the semester.

If you feel ill-prepared for success in this course, I strongly recommend that you study the lessons numbered 1600 through 1630 and the lessons numbered AP002 through AP016 in an attempt to beef-up your programming skills in OOP.  You will find those lessons at the following URL:  http://www.DickBaldwin.com/tocint.htm.  Finally, I recommend that you study the lessons at the following URL: http://www.DickBaldwin.com/tocknowledge.htm.

Hopefully, this will make it possible for you to catch up and succeed.



08/21/07 Online 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.  I have created a list of useful, free online resources (in no particular order) on the web page for my OOP course .  Unless you are already well versed in OOP, I strongly recommend that you study all of the material on that list with particular emphasis on the various explanations of Object Oriented Programming.

As time goes on, I will add new items to the list, so check it often.



08/21/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/21/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 Baldwin@DickBaldwin.com

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 past 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

Home:___________
Work:___________
Other:___________
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?

_____________________________________________________

Comments:

_____________________________________________________



08/21/07 Broken tutorial links
I discovered during a recent semester that Internet.com 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/21/07 Practical Introspection
Introspection can be very useful in helping you to gain an understanding of the behavior of GUI components in Java.  The behavior of a GUI component is determined by its properties, its events, and its methods.  For example, if you compile the program named Introspect03 described in lesson 1060, you can use it to learn about the properties, events, and methods of the JButton class, or any other class that defines an AWT or Swing component. (You don't have to understand how the program works in order to compile and use it.)


08/21/07 Event30.java program
During the Fall session of 2002, it was discovered that the program named Event30.java in lesson 104 does not execute properly under SDK v1.4.x (or later versions).  The problem is that the program doesn't properly generate key events.  This problem can be solved by modifying the constructor of the controlling class to read:

    setVisible(true);//display the frame
    myCustomComp.requestFocus();
    //The following KeyListener object
    //converts key events
    // to mouse events.
    myCustomComp.addKeyListener(
      new MyKeyListener(myCustomComp));

Note the addition of the requestFocus method to force the object of type CustomComponent to have the focus when the program first starts running.  Numerous changes involving focus were made in version 1.4.0 of the SDK, some of which were not backwards compatible with version 1.3.  Apparently this situation reflects one of those incompatible changes.  I am publishing a series of tutorial lessons designed to help you learn how to use the new focus subsystem that was released in version 1.4.


08/21/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:

http://www.austincc.edu/


08/21/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/21/07 Studying for exams
I cannot overemphasize the importance of you studying Java Programming (Intermediate), Sample Programs, Set 1 in preparation for the completion of your first exam.

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/21/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.  Those programs will be executed strictly from the command prompt to determine if they meet the specifications.


08/21/07 What is JDK 6?
Students in this course are required to use Sun's JDK 6 or later.  Please read the Preface in my lesson entitled Generics in J2SE 5.0 to understand Sun's nomenclature regarding the different versions of Java (although that information may be somewhat dated since the release of JDK 6).


08/21/07 EMAIL VIRUS WARNING
I receive hundreds (sometimes thousands) of 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, ITSE2317, 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/21/07 Changes in Java version 1.4 focus subsystem
Numerous changes were made to the way that focus operates in Java with the release of version 1.4.  Unfortunately, some of those changes are not backward compatible with existing source code.  All of the changes are documented in the standard Java documentation for version 1.4.  In addition, here is a URL that contains some information on this topic.

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/doc-files/FocusSpec.html

You might also find it useful to start up your Google search engine and search for:

Java focus 1.4

That may turn up something that will help you to better understand the changes to focus in version 1.4

If you are still having difficulty after reviewing the material at the URL listed above, you may want to take a look at Lesson 1840 and similar lessons following that one on my web site.


08/21/07 Student question involving the focus subsystem

Here is a question that I received from a student along with my answer:

Question:
I am exercising the 5 samples in Exam2. Prob(s) 3, 4,  and 5 work fine.

When I try to execute Prob01, I get a NoClassDefFound Error on "java/awt/FocusTraversalPolicy"

When I try to execute Prob02, I get an error "javax.swing.JButton: method setFocusable(Z)V" not found.

Any idea what I am doing wrong?

Answer:
java.awt.FocusTraversalPolicy is a standard class in J2SE v1.4.2.  My first guess is that you don't have v1.4.2 properly installed on your system.  That class probably didn't exist in earlier versions.

public void setFocusable(boolean focusable) is a method of the Component class, which is inherited into the JButton class.  I don't know what the V means in the error message, but again, I suspect that you don't have J2SE v1.4.2 properly installed on your system.  If you attempted to install v1.4.2, you may have gotten it intermingled with class libraries from an earlier version.

Also, make sure that you pay attention to the section entitled "Changes in Java version 1.4 focus subsystem" above.


08/21/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/21/07 Revised Email exam submittal instructions

On two occasions recently, something embedded in a zip file attached to a student's Email message triggered an Email filter on my system and caused the student's Email message, along with the zip file containing the exam, to be routed into the trash folder.  Fortunately, I saw them there and retrieved them before emptying the trash.

Effective immediately, whenever you send an email message to me with an attached zip file, please send another message without the attachment telling me to be on the lookout for the message with the attachment.  That will cause me to look in the trash folder if I don't find your message with the attachment in the inbox.

Also, if you have sent an Email message to me with an attached zip file and haven't received an acknowledgement from me, that means that I didn't get it.  Please send it again following the procedure described above.


08/21/07 Clarification of Exam 2, Prob02
A student has requested clarification on the following statement that appears in Exam 2, Prob02:

"The GUI must exhibit a look and feel that is the standard
look and feel for the operating system under which it
is running.  However, your program may not contain the
string value "com.sun.java.swing.plaf" or any variation
of that string."


Another way to say this would be to say:

"The GUI must exhibit a look and feel that is the standard
look and feel for the operating system under which it
is running.  However, when I perform a string search on
your source code, it must not contain the literal string
value "com.sun.java.swing.plaf" or any variation
of that literal string value."


The following are examples of literal strings that are not allowed:
"com.sun.java.swing.plaf.metal.MetalLookAndFeel";
"com.sun.java.swing.plaf.motif.MotifLookAndFeel";
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel";

08/21/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:

http://www.dickbaldwin.com/download.htm

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


08/21/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 or JDK 6 as was the case with JDK 1.4.


08/21/07 Upgrade to metal look and feel
You may have seen text written by me in earlier documents indicating that the Metal or Cross-Platform look and feel was a very simple look and feel with little in the way of a 2D effects.  At one point in time, this L&F, when applied to a JButton, looked like a simple groove surrounding a rectangular area with almost no 2D highlights.

Somewhere along the way, (possibly with the release of v1.5 or later releases of v1.4), Sun dressed up the Metal L&F to cause it to look like that shown below.  As you can see, it now has a very soft highlight that causes it to look like it protrudes from the screen in a rounded sort of way (highlight across the top and shadow across the bottom).

There are at least two ways to achieve this L&F:

Because it is touted as the Cross Platform L&F, it should look pretty much the same regardless of the operating system under which it is running.

Several questions on the exams refer to this L&F using phrases similar to the following:


08/21/07 Warnings in JDK version 1.5
As a result of changes (improvements?) made in JDK1.5, many existing programs will produce the following warning when recompiled using JDK 1.5:

Note: ....java 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/21/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:

.exe
.com
.scr
.bat
.pif
.vb

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:

.java
.class
.htm
.html
.css
.xml
.xsl
.doc
.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/21/07 Exams are ready to be downloaded
All three exams for this course are now ready to be downloaded.


08/21/07 Online orientation confirmation
I am now accepting online orientation confirmation messages


08/21/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/21/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/21/07 Openings for Paid Student Internships in Nanotechnology
See the following URL for information on paid internships for ACC students.

http://www.sematech.org/research/nwdi/index.htm


08/21/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: ni.com/career


08/21/07 Hint for Exam 3
If you find that you are having an unusual amount of difficulty writing one of the required programs on Exam 3, you may find it useful to search for the word consume at one or both of the following URLs:

Search Sun's Java Tutorial at http://java.sun.com/docs/books/tutorial/search.html
Search Sun's documentation and the Java Tutorial at http://java.sun.com/docs/searchabledocs.html


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:

http://acconline.austincc.edu/

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.


-end-

File: ITSE2317.htm