JAVA 101
Object Oriented Programming(s)


Motivated by requests from a number of students in the Physics Department, the Center for Advanced Educational Technology intends to coordinate a semi-formal self/group study in the basics of several Object Oriented Programming (OOP) languages this Fall and Spring semesters. The languages under consideration are Java, C++, and Flash Actionscript, all of which are object oriented, have numerous research and/or educational applications, and look good on a resume these days. The primary goal is to provide sufficient resources and support to allow participants to learn the basic principles of programming in these languages (i.e., emphasis on learning to write code, not philosophical programming issues, though that will play a role in writing efficient and elegant code).

Participation is open to any student, faculty, or staff member in any Department. We will assume a background in some programming language, but not necessarily a background in any OOP language: we will start from the beginning (but not, heaven help us, with another Hello World program!). Anyone proficient with a mouse and keyboard can do this who is willing to devote sufficient time.

The present plan is to use the Fall 2001 semester as a basic introduction to Java. Depending on the response and interest, we could then go one of several directions in the Spring: C++ programming, advanced Java programming, or Flash 5 Actionscript programming. Since core Java has probably an 80-90% overlap with core C++ and core Flash Actionscript (the syntax is almost the same and the structures are very similar for all these languages), it would be easy to go in any of these directions in the Spring if there is sufficient interest.

The proposed organization of the class this Fall is semiformal: the official book will be "Teach Yourself Java in 21 Days" (Lemay, et al, Sams.net publishing), 2nd edition or later, which can be ordered from the usual places. We will recommend Visual Cafe as a visual development environment (we have it on many computers on the 6th floor of Nielsen and the academic version is $47 through the campus computer store). Visual Cafe is NOT necessary to write Java: it is sufficient to have the free Java Development Kit from Sun and an editor. Visual Cafe does make writing Java simpler, however, and as a result increases productivity.

Beginning in mid-October, we will work through approximately 2/3 of the 21 chapters in this book, with emphasis on core programming that will allow participants to proceed on their own to more advanced applications. (For example, include the chapter on "Managing Simple Events and Interactivity" but omit the chapter on "Using Native Methods and Libraries"). There will be a class newsgroup to facilitate interaction, and we will meet once a week for 2 hours as a group to discuss issues associated with the current assignment. This will NOT be a lecture class however: the emphasis will be on self and group learning. But we WILL try to provide some support from "experts" (people who have written one more Java program than the average student)during the weekly meeting,and through the newsgroup.

The proposed class is optional, non-credit, self-learning. However, if there are students interested in obtaining credit, it probably is possible to work out an independent study project that would involve completing a serious programming application in addition to the basic material. Students interested in independent study credit should contact Prof. Mike Guidry (guidry@utk.edu) to discuss it.

Those interested in participating should contact Erin McMahon (emcmahon@utk.edu; phone 865-974-7807), who will serve as logistics coordinator. Provide Erin with your name, department and position, email address,and preferred times for the 2-hour weekly group meeting.

Assignments:

Assignment 1: First assignment is to work through chapters 1 and 2 of Teach Yourself Java, by Chris Wright. The first chapter is mostly an introduction to the subject, so it is mainly reading. The second chapter gets into the subject proper by addressing the issues of Data Types, Variables, Operators, Control Structures (logical branching loops), Methods, Arrays, and Strings, using simple examples. You should work through the examples in the chapters, and try the exercises at the ends of the chapters. Let's aim to finish that by Nov. 1. If some eager beavers get on it, we can discuss some of this assignment this Thursday (remember: Physics 304 at 4pm Thursday). If you have questions, comments, or problems with this or future assignments, post to the class newsgroup.


Assignment 2: The OOPs assignment this week is Chapter 3. Erin has posted PDF files of the chapter below to help if your copy of the book hasn't arrived yet. This chapter will be heavier going than the first two since it gets more deeply into the basic properties of object oriented languages. Don't get discouraged if you have trouble with some of the concepts; if you are new to object oriented languages, it often takes some time to come to grips with the paradigm and its associated concepts. If this is your first encounter with an object oriented language and you don't understand everything in Chapter 3 the first time through, my best advice is to continue to try to work through the programming examples. It is by programming and by dissecting programs written by others that concepts like classes, instantiation, objects, inheritance, and encapsulation become concrete and therefore understandable. There is a pretty involved example at the end of the chapter (constructing a basic calculator) that will illustrate many aspects of Java that you have already encountered, but will also introduce various new aspects like layout managers and event handlers that have not been covered much yet, but that will receive more attention later.


Teach Yourself Java .pdf Files:
Web References:
Join the Mailing List!
Teach Yourself Java - This is the book we will be using!
Teach Yourself Java in 21 Days
Webgain Visual Cafe
Java Development Kit (Free)
Don't Fear the OOP! (Stanford Java Tutorial)
The Java Boutique (Examples and Tutorial)
Our OOPs Newsgroup