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

ITSE2321 Object-Oriented Programming

This information applies to classroom sections and Open Campus (PCM) sections taught by Professor Baldwin.

Who Should Enroll

Fall 2007

Revised: 08/20/07

The official web page for this course is http://www.austincc.edu/baldwin/Fall07/Itse2321WebPage/ITSE2321.htm

Question:  Should you enroll in Professor Baldwin's section of this Object-Oriented Programming course?

Answer:  The answer to the question depends on your programming background, on your willingness to open your mind to new and exciting programming concepts, and your willingness to work very hard at mastering those concepts.

This is not a beginning programming course

The prerequisite for this course is COSC1315 Fundamentals of Programming (or departmental approval).  Unless you understand everything normally covered in that course, you may have difficulty succeeding in this course.

If you do understand everything covered in that course, are talented in those problem-solving skills required for computer programming, are willing to open your mind and embrace new and exciting programming concepts, and are willing to work very hard to master those concepts, you should be able to succeed in this Introductory OOP course.

You must open your mind

Even if you have many years of programming experience using languages such as C, Pascal, Basic, or COBOL, you may still have difficulty succeeding in this course unless you are willing to open your mind and embrace new programming concepts and also work very hard.

Advanced programming concepts

To succeed in this course, you will be required to master several advanced programming concepts that you probably didn't encounter in COSC1315 Fundamentals of Programming, and also probably haven't encountered in your years of programming experience using C, Pascal, Basic, or COBOL.

The advanced programming concepts that you will be required to master in this course are far more complex and abstract than you would probably encounter by enrolling in COSC 1320 C++ Programming, which is ACC's introductory course in C++ programming.

Many of the concepts that you will be required to master in this course are not taught in depth until much later in ACC's C++ curriculum (ITSE 2431 Advanced C++ Programming).

Some of the concepts that you will be required to master in this course (such as interfaces) aren't taught in any C++ programming course at ACC.

A giant step is required

In order to successfully program in Java, you must immediately make the mental transition into Object-Oriented Programming (OOP).  It is not possible to write the simplest program in Java without using OOP.

Much to my dismay, OOP is not taught to any depth in the prerequisite course at ACC (COSC1315 Fundamentals of Programming).  Some students have difficulty making this transition. In fact, OOP is not taught in any depth in the ACC C++ curriculum until the third course (ITSE 2431 Advanced C++ Programming).

Some experienced programmers also have difficulty making the transition.  Such experience can sometimes be a liability instead of an asset because notions from the past can sometimes make the transition even more difficult to achieve.  In other words, some very experienced programmers (authors, and college professors as well) are "stuck in an eighties mentality" and find it very difficult to escape from that mentality. You must escape from that mentality and move forward if you are to succeed as a Java programmer.

For example, you must become proficient in OOP and the related topics of encapsulation, inheritance, and polymorphism.

You must become proficient in the use of the Java interface which is a very powerful, complex, and abstract concept.  Even experienced C++ OOP programmers possibly haven't seen anything quite like the Java interface.

You must become proficient in exception handling, which is a fairly advanced programming concept.

Java is built on references (restricted pointers) and indirection.  Proficiency in the use of these concepts is necessary very early in the course.  These are concepts that are not taught in depth at ACC until much later for other languages such as C and C++.

In addition to these advanced and abstract concepts, you will also need to learn a lot of syntax-oriented material that is typical of learning programming languages in general. From a simple syntax viewpoint, this course is very similar to ACC's COSC 1320 C++ Programming.

Lots of hard work is required

You will also be required to work very hard. During the semester, you will be required to write and submit about fifteen different Java programs. These programs are specifically designed to reinforce the concepts that you are expected to learn in the course. While they are not long programs, they will require most students to do quite a lot of thinking.  In addition, you will be required to do a great deal of independent research involving programming concepts that won't be covered in the classroom.

What about exams?

To begin with, they are take-home exams, so you are not under the kind of pressure that you would experience by taking the exams in the classroom. However, because they are take-home exams, and you have almost all semester available to work on them, they are probably much more demanding than you are accustomed to in other programming classes that simply require you to memorize and regurgitate material from the textbook.

Many students find my exams to be unconventional and have some difficulty adjusting to their real-world style.

None of my exam problems are true/false, multiple choice, or essay questions as you may have come to expect from other programming courses. (You are rarely required to answer true/false or multiple choice questions in the workplace.) Rather, my exam problems require you to produce working programs. Furthermore, they are designed to force you to think about what you are doing before you start writing code.

For example, on the rare occasions that many other instructors might require you to produce a working program on an exam, they will likely phrase a question something like

"Override the toString method to cause it to display your name."

Once you are told that you need to override a named method, the rest is merely turning the crank, and in my opinion, does very little to assess your programming knowledge.

My exam problem for dealing with the same concept would show you a statement such as:

System.out.println(new MyClass());

and tell you that the statement must cause your name to be displayed. It would then be your responsibility to:

Once you have accomplished the first two steps, the third step is easy. My exams are designed to cause you to think; not simply to turn the crank. Approximately ninety-percent of the time that you spend working on my exams should be spent thinking rather than typing.

Why do I do it this way? Because I am trying to prepare you for a programming career in the real world. In that world, it is not likely that your supervisor will come to your cubicle and ask you to override the toString method. Rather, it is more likely that she will come to your cubicle and ask you to solve her problem. Then it is up to you to:

It is also worth noting that, for the most part, the exam problems are designed to test your knowledge of the fundamental object-oriented concepts of encapsulation, inheritance, and polymorphism.

It is assumed that you learned all about the procedural concepts of sequence, selection, and loop in your prerequisite course.  While the exam problems often require you to use sequence, selection, or loop, that is usually not the main thrust of the problem.  The main thrust of the problem is usually to test your knowledge of some aspect of encapsulation, inheritance, or polymorphism.

The bottom line

The bottom line is, unless you

you may have difficulty succeeding in this course.

Make your choice

If you really want to learn OOP using Java, enroll in the course and be prepared to work very hard.

If you are looking for an "easy A" to put on your transcript, enroll in some other course.

Please review the instructional material for this course that is available on my web site before registering for this course.

Thank you.
Dick Baldwin

-end-

File: ITSE2321WhoShouldEnroll.htm