This page is being updated. The information here will change and none of it is final. (January 13, 2002)
During the Fall of 2001 I will be teaching an advanced course using networking features of the Java programming language. The focus will be on internet programming. Java looks like C++, but its programming style is more like that of Smalltalk. It is a safe language with many facilities for large scale programming. It is also ideally suited for programming internet applications. The course will quickly cover language features and focus on student projects.
This course will be delivered over the internet. We will meet as a group only four times during the semester. The first two meeting will be to get aquainted and outline the tasks. The third meeting at midterm will be to demonstrate project designs. The last meeting at the end of the course will be to demonstrate completed projects. If you can not be present for all four meetings you should not take this course.
Students will undertake to learn the Java language and develop a project of moderate size using Java. The course will stress object-oriented programming. Students will demonstrate expertise through the project and one examination. Students will be expected to discuss and demonstrate their project to the class. Students will present both their initial project task and the completed project itself to the class. Projects must be running on the web to be graded. All projects will require some distributed component such as a client-server application. The servers may be hosted on your own machine if connected to the web, or on one of the University servers.
The level of the course will be appropriate for graduate students with a solid understanding of Java or C++ programming. Solid C++ (at least) ability will be assumed. Do not attempt this course unless you are thoroughly familiar with C++ or Java classes. A very small number of advanced undergraduates may be admitted to the course with the permission of the department Chair and the instructor. You will be expected to be able to build and publish web documents, either in HTML or using various translators, such as those built-in to Netscape Navagator, Microsoft Word and WordPerfect.
Students will be expected to learn about Object-Oriented Programming, the Model-View architecutre, Remote Method Invocation, Concurrent Programming, Client-Server Programming, Object-Oriented Systems Analysis and Design, and the Java Application Windows Toolkit. Differences between Java and C++ will be briefly discussed, but it will be the student's task to learn the Java language and demonstrate expertise in a mid-term exam and in the projects. The instructor will provide many documents and URLs to guide the student. There will also be a listserve mailing list so that we may all keep in contact and get questions answered.
However, this is not a lecture based course and only strongly motivated and hard working students who have good self directed skills are likely to be successful.
For course development I recommend either CodeWarrior, Cafe, or JBuilder. You
may use the JDK for free if you download it but it is awkward. I strongly recommend
that you do NOT use Visual J++ as it is not Java compliant, both having unacceptable
extensions and leaving parts of the language unimplemented. I would rather that
you not use Visual Age for this project as the code it produces is unreadable
and I need to be able to read the code to grade the projects. Any system that
you use must be at least Java 1.1 compliant. The Codewarrior system is highly
recommended as it contains Java, C++ and Pascal integrated into one project.
It is also very up to date in all languages. The academic version is about $100.
Students will develop a proposal and a project emphasizing one of the following
areas. The specifications of the project will be developed by the student. Team
projects are required. The project to be undertaken must be approved by the
instructor. All projects will require an Internet or Web focus with client/server
features. Each project may have a special focus. Internet Programming -- Develop an internet application. This might be an
internet implementation of an existing application. Graphics Programming -- Develop a graphics application that will run under
a Java enabled browser over the net. User Interface Programming -- Develop an internet application with a platform
independent user interface. Concurrent Programming -- Develop a concurrent program in Java that runs over
the net. Client-Server Programming -- Develop a client-server application in Java,
producing both the server and one or more clients. Distributed Programming -- Develop a distributed program using remote method
invocation (RMI) or CORBA. DataBase Programming -- Develop a database application using a remote database
and JBDC/ODBC. Examples of possible projects
Web spider that travels the net and finds information in web pages. Personalized search engine.
Distributed computing "engine" that does massively parallel computation on donated computers.
Distributed programmer's workbench (IDE). Permit distributed teams to work as one.
Online Geneology Project. Let people find ancestors and contribute information.
Virtual Computer Science Laboratory. Permit teams to perform "experiments" remotely and together under direction of an instructor.
Other areas of project emphasis are possible as negotiated.
Successful projects developed for this course in the past included an internet RMI Chess program, an internet based multi-user Blackjack program, and a stock price notification system that paged a user's beeper when a stock's price changed by more than a pre-defined amount, and several games.
A scoping document for the project is due (published on the web + hard copy) by the third week. The project design, with use-cases and UML documents is due (on the web + hard copy) at mid-term. The final project with all design documents, user manual, administrator manual, and code is due at the end of the course along with a disk containing the code and a version running on the web.
The Sol Java Server at Pace has many interesting examples of client server programs written in Java.
The Sol Webstart page has information about using the web and creating web sites. It has information about tools you will need.
java.sun.com
Note that Java 1.1 will be required for this course.
Sun maintains information for Java developers at the Jave Developer Connection.
You can also use altavista to search for "java". Be sure to use all lower case letters in your search. If you search the Web you get java resources. If you search Usenet, you get all discussions of Java in all newsgroups. You can also subscribe to comp.lang.java
Java is available over the internet from ftp.javasoft.com. It will run on Suns, Windows/95, and on the Macintosh under System 7.5. You can find the JDK 1.1 here. From this link you can also obtain all documentation for JDK 1.1. Note that you may use either JDK 1.1 or 1.2. Earlier versions of Java will not be adequate for the course.
"Java in a Nutshell, 2ed," David Flanagan, O'Reilly & Associates, 1997
"Java Distributed Programming," Jim Farley, O'Reilly & Associates, 1998
Recommended:
"Core Java 1.1," (2 volumes) Gary Cornell & Cay
Horstmann, Prentice Hall, 1998 (or later if available)
"Extreme Programmming Explained," Kent Beck, Addison Wesley, 2000
"Java Network Programming," Elliotte Rusty Harold, O'Reilly & Associates, 1997
"The Java Programming Language,"2ed,Ken Arnold & James Gosling, Addison Wesley, 1998
"Concurrent Programming," Stephen Hartley, Oxford University Press, 1998
"Concurrent Programming in Java," Doug Lea, Addison Wesley, 1997
"The Java Virtual Machine Specification," Tim Lindholm and Frank Yellin, Addison Wesley, 1997
"The Java Class Libraries," Patric Chan and Rosanna Lee, Addison Wesley, 1997
" Java and XML," Brett McLaughlin, Oreilly, 2000
Additional Java materials are available from my main page and the Links page.