Student Tasks
CS 631N Fall 2001

PRELIMINARY --THIS WILL CHANGE

IMPORTANT NOTICE: There is an error in the schedule book for this course. See the dates in this document for clarification. The course meets on Sept. 11 and 25, Oct. 23, And December 18. You MUST be present for all four sessions and each of them will be very long.

EMERGENCY NOTICE: Because of the tragedy in NYC, this course will need to run on an unusual schedule. As a minimum, we will need to meet face to face four times, perhaps on September 25, October 2, November 6, and January 15. You must be there all four nights. Expect the sessions to be long. We will also need to extend the course into January to give you enough time to complete the projects. You must be willing to be flexible to take this course at this time.

This is an advanced course and you will be treated as such. Do not underestimate the time required to perform the following tasks. You will need to advance on many of the tasks simultaneously. They are not to be carried out one after the other, though there is a rough time sequence implied by the ordering.

The assumption is that you are very self directed and a hard worker, willing and able to communicate with your team mates and the instructor. You will be guided to relevant material, but not led through it. In particular, you will NOT be taught the Java language in this course, though if you are skilled with C++ you will be able to learn it here and also be successful. If you are not a skilled programmer in either Java or C++, you should take other courses prior to this to develop the skill required. It is strongly recommended that you take this course later in your studies rather than earlier. In particular, a couse in database, networking, or operating systems will help you here. Each team should have some of this expertise. If you have none of it you are probably not ready for this course.

You will be required to make oral as well as written presentations. The written work will involve both programming and ordinary writing. You will be required to publish all of your work on the web as well as present it in hardcopy form.

Throughout this course, you are expected and encouraged to share what you learn with your classmates, both on your team and more generally. In particular, if you find a revelant resource you are expected to share it.


Connect to the Course listserv

The instructor will provide instructions about how to connect. You can use any e-mail account (or several) to connect. Send a short personal and professional biography of yourself to the listserv two days after you connect. The delay will permit the rest of the class to get connected. Once you have established a web site for the course, send the page location to the listserv. The listserv will be used throughout the course to keep in touch with each other and get questions answered. In this course you can feel free to share with other teams, including source code. Expect to spend some time each week asking questions in this forum and answering questions of other class members.

When you send mail to the listserv, be sure to sign your mail with your name. It is difficult to know who is "speaking" from just the e-mail address. You will also be expected to be completely curteous and professional in your communication to the listserv. Flaming and other forms of abuse will not be tolerated.

Connect to the Course Conference Center / Chat Room (AOL Instant Messenger)

The instructor will provide instructions about how to connect. We will have a regular sechedule during which the instructor will be available. The project teams can also develop their own schedules to work with this resource. You will need an account from AOL instant messenger. You don't need to belong to AOL to get these. They are free. Visit http://www.aol.com.

Form a Project Team

Teams consist of 2 to 4 members. The team leader must send the names and e-mail addresses of all members to the listserv. The listserv can be used to help you find a team. Put up your project ideas and ask for help in refining and building it. The two in class sessions on September 11 and 25 will provide an opportunity to form your group.

Get Java

You will need at least JDK 1.1. The Java home page is at the Sun site. Sun also provides Documentation and tutorials. A version of this comes with the Core Java book on CD-ROM. You should also load the documentation, which can be viewed with any web browser. You don't need Java 2 (Java 1.2 or later) or Swing, but you may use them if you prefer. If you intend to use applets for the front end, it might be best if you restrict to JDK 1.1 and avoid Swing as not all browsers support the newer technology. However, if your program will be application based, then JDK 1.2 is probably the best choice.

Look at Java Developer Connection for information for Java developers. You may join for free.

If you prefer an integrated environment try: CodeWarrior or JBuilder. CodeWarrior is highly recommended and includes Java as well as C++ and Object Pascal.

J++ is strongly NOT recommended as it is not a complete implementation of Java. Visual Age is mildly NOT recommended as its code is difficult (impossible) to read. The JDK is the cheapest alternative (free) but is awkward to use initially.

If you use JDK you will need to set it up first. The integrated environments set themselves up when you install them.

If you use the JDK you need an editor to create Java files. Here is one for the PC that is free and integrated with the JDK. Dick Chase's Java Editor. There are two better options below, however.

If you work on the PC ou can also get (for $35) a version of Kawa (visit the link and search for Kawa) that is a nice project manger for Java. Professor Wolf has additional information on setting up Kawa. This is highly recommended and is used my many Pace Students and Professors.

I just learned about a simple and free PC editor that you can use with Java. You can learn about CONTEXT and download it from links at http://www.skylit.com/javamethods/faqs/context.html.

Currently the best browser for Java is Netscape 4.0.6 or later. Earlier versions do not support new features of Java. Explorer 4 or later should also work.

If you use Java on a UNIX machine and develop with EMACS then you might want to get JDE, The Java Development Environment for Emacs. Actually this works with any emacs, not just on Unix.

On a Macintosh, you will need OSX and Java comes with it, along with an EMACS based environment.

 

Find a Project

Your project must be an Internet based, distributed application with an applet or application on client side together with a server application and perhaps a database on the server side. Projects must be approved prior to development. (About week 3) Write a proposal document for the project, giving a good explanation of the work to be done. The scope of the project must be estimated in this proposal with number of use cases to be covered, number of classes to be written and number of methods to be developed (all approximate). This document is to be posted on the web and its URL sent to the listserv. The scope document will be used as the basis for project approval. The proposal will also be delivered in bound hard-copy to the instructor. NOTE, this is not the time to decide what classes you will write, only an estimate of the number. If you try to decide what methods you will need at this point, you have entirely the wrong idea about the original analysis. An estimate of the number of methods is required.

These projects must be Java based on both the client and server side and must be backed by persistent data on the server side. Note that RMI projects blur the distinction between client and server and therefore the decision about where to store the permanent data.

Trivial projects and overly difficult projects will not be approved. Generally speaking, "textbook projects" will not be approved. This means things like ATM machines, which appear often as examples in books. Try to come up with something more interesting. Multi-player games are a good possibility. So are multi-user work spaces like a shared whiteboard. Even a chat-room might be a possibility if it had some interesting feature like an archive or the ability to post images as well as text. Note that E-Commerce systems are not recommended for this course. They have been tried in the past, but with less success than other projects. The main difficulty is in coming up with a firm specification for the work in just 3 weeks. Games are much easier, since most such games have firm rules that serve as specifications.

SPECIAL. If you want to work for a real client (not a team member) who can set specifications for your project and if you want to work according to the methods of EXTREME PROGRAMMING, then I will provide a different specification for the work to be done. This will not require producing a full design by midterm and will let you begin developing earlier. This is new this year and somewhat speculative. It will require working closely and continuously with the client, however.

Your project will need to emphasize some particular aspect of Internet programming. That is to say, you will need to include some advanced aspect in your project that will make it interesting. This could be a complex interface, a complex concurrent or distributed structure, complex graphics, a complex database or database interface or other element. Your initial project description must name this aspect and tell why this makes the project interesting. In what follows on this page, some topics are marked optional. While each of them is optional, not ALL of them are optional. Pick one or two to use in your project.

The listserv might be helpful initially in finding and scoping your project.

Design and Specify the Project

Before you begin to program you must develop a project design and document it with UML. (use cases + class diagrams +sequence diagrams+ CRC ) Present the design in class at mid-term with suitable graphics. The design is presented on-line and in bound hard copy to the instructor. You must first find the objects,then the classes, then the responsibilities. For the initial stages of this see the paper on OOP Design.

Here is a simple introduction to some object oriented design tools that you will want to use to document your project.

NOTE that design does not mean deciding on what variables you need and coming up with "getter" and "setter" methods for each of them. This is entirely the wrong idea about design. Read something like Wirfs-Brock to get a better idea.

Get Web Access

You will need access to a machine that you can use as a server. The instructor can give you an account on Sol if necessary. Sol also hosts an SQL database that you might use.
Build a course page for your group and inform the listserv as to location. You can use the information on the sol/webstart page to get you started. Here is a template that you can use for your home page design. It would be good if you could put a current photograph of each team member on your team's page like this.

Picture of instructor.

Here is your instructor in Barcelona in 1996 -->

I will eventually create a page on this site with links to all of the team pages so that you will be able to find each other's work easily. Note that these are maintained by the students, so they may disappear after the course ends.

Here are the Web Pages of the project groups from 1998.

Here are the Web Pages of the project groups from 1999.

Here are the Web Pages of the project groups from 2000

Here are the Web Pages of the project groups from 2001

 

NOTE that the preliminary designs an scope documents shown on these pages may not have been the ones originally submitted, but may have been reworked as the course proceeded. In particular, some of them show information NOT required and probably not available initially.

 

 

Learn Java

You must, of course, learn Java. If you know C++ well this should be very easy. The following will help. Included here are a number of papers that can be accessed from the instructor's home page.

When you write Java, use the Java Coding Patterns.

Java vs. C++ (http://csis.pace.edu/~bergin/)
Interfaces in Java
Model-View Paradigm in Java
GUI Programming in Java (Java 1.1)
Java I/O Explained
http://csis.pace.edu/~bergin/patterns/event.html (Java events)
http://csis.pace.edu/~bergin/patterns/SimpleDesignPatterns.html (Section on Client Server)
Java in a Nutshell. (Chapter 2-5 especially) This book is mostly for reference.
Core Java. (Volume 1 especially)
Java Tutorial (2ed.) Campione and Walrath, Addison Wesley, 1998.
Java Documentation, White papers, and Tutorial from Sun. These can be downloaded or viewed on-line.
Here is Sun's Java Tutorial
TheJDK comes with a debugger JDB. Here is how to use it.
Here is a glossary of Java terms.
Here is an elementary course on Java.

Here is another resource page for Java.

A number of O'Reilly's books are actually online: This used to be free, now you need to pay for the service, or buy one of their deluxe editions. See the (single) link below.
AWT Reference
Fundamental Classes
Language Reference
Exploring Java

Learn HTML (Hypertext Markup Language)

You only need to know a bit of this to present your project and documentation:

On-line resources
HTML HomePage
HTML Reference
Communicator Composer
Crash Course in HTML
(and more, but beware, the Java tutorial here is obsolete)
The Bare Bones Guide to HTML


Microsoft Word and WordPerfect can produce HTML documents automatically. Navigator Composer can also be used. Another good tool is RTFtoHTML which can be found on the web. Many of the instructor's web documents were produced from MS/Word files using this tool. An alternative is to use Adobe Acrobat for all but your applets.

I use the book: How To Use HTML 3, Scott Arpajian, Ziff Davis Press, 1996

This page was built with Dreamweaver by Macromedia. I also use Dreamweaver to manage my web site. My hardware platform is a Power Macintosh. The servers used are all UNIX machines from Sun Microsystems. I also publish documents using RTFtoHTML for documents written in MS/Word. Adobe Acrobat is also very helpful for publishing things such as spreadsheets and slide shows. If you use one of these tools you won't need to learn much at all of html.

Once you have a web page (html page) you need to publish it. You can find simple instructions for this at http://webpage.pace.edu/.

 

Learn Object-Oriented Design

The methodologies you will use are UML, Use-Case, CRC and Patterns.

My home page has a lot of material on understanding what OO is and how it differs from procedural programming. Just because you have programmed in Java or C++ does not necessarily make you an OO programmer or designer. It requires a certain mind set.

There are a number of on line tutorials that you can use to learn UML at http://oma.com/PDF/ Here is a local index to some of the papers, with explanations of some of the more important ones. Look especially for the UML Tutorial. You need the Adobe Acrobat Reader for these files. You can download it from Adobe.

Rational is the primary site for UML as they are developing it. UML is the Unified Modeling Language and it is the melding of three OO Design methodologies: Booch, Rumbaugh, and Jacobson. Here is their tutorial.

Use Case is a Jacobson technique for doing analysis. A use case is a script like specification of a single user carrying out a single task with a system.

CRC (Class Responsibility Collaboration) cards are an alternate design methodology. A lot of information is available on line. Use Alta Vista (below) to search for the quoted string "CRC cards". You can use a similar technique for other topics here.

Patterns are attempts to capture industry best practice in a specific problem domain in a set of rules of thumb that can be applied when a context is recognized. A pattern is a solution to a problem in a context. Here is an Introduction to Patterns by Jane Chandler from England.

Books on OOP design are:
Rebecca Wirfs-Brock, Brian Wilkerson, and Laura Wiener, Designing Object-Oriented Software, Prentice Hall, 1990. Highly recommended.
The CRC Card Book, David Bellin & Susan Suchman, Addison Wesley, 1997.
Using CRC Cards: An Informal Approach to O-O Software Development, Nancy M. Wilkinson, SIGS Books, New York, 1995.
Pattern-Oriented Software Architecture, Buschmann, Rohnert, and Meunier, John Wiley & Sons
Design Patterns : Elements of Reusable Object-Oriented Software; Gamma, Helm, Johnson, and Vlissides, Addison Wesley. This is the famous GOF (Gang of Four) book.
UML and C++, Lee and Tepfenhart, Prentice-Hall, 1997
Applying UML and Patterns, Larman, Prentice Hall, 1998

These books and others can be found at Amazon online bookstore.

You can find some additional resources here:
http://csis.pace.edu/~bergin/patterns/design.html
http://csis.pace.edu/~bergin/links.html Various papers
http://csis.pace.edu/~bergin

Spicy Item -->Here is an example of a complete OOP design of an ATM machine by Prof. Russell Bjork of Gordon College. Note, however, that this is not an Internet application.

Learn GUI Programming in Java 1.1 or later

http://sol.pace.edu/java/gui (Paper on GUI Programming in Java 1.1)
http://csis.pace.edu/~bergin/papers/ModelView.html (Paper on Model-View in Java)
http://csis.pace.edu/~bergin/Java/javaevent.html (Introduction to Java Events)
http://csis.pace.edu/~bergin/patterns/event.html (Paper on using Java events)

Core Java has a lot on this also starting in Chapter 7 of Volume 1.
Java in a Nutshell is a reference to the Java libraries you need to build Java 1.1 GUI programs.
The Java Tutorial has some material on this also.

Java GUI programming is event driven. Here is a story to give you and idea about the nature of events. Look here for the fundamentals of events in Java.

Note, importantly, that GUI programming uses an event driven model. This is not especially difficult except for one place where it seems non-intuitive at first. Prompting a user for input and then getting that input must be done very differently in an event driven system. Remember that the program does not control the flow of actions in event driven programming. The user controls what happens and in what sequence. The program can put a prompt in a text field (for example), but it cannot expect to be able to pick up the response with the next statement to be executed. The system must capture the user's response at some later time when the user generates a new event after entering the response. Here is how to handle this problem.

The Model-View-Controller (MVC) idiom is a way to successfully build programs with complex GUIs. It is a way to decouple the functional elements (Model) from the way it looks (View) and how the user interacts with it (Controller). Here is the tutorial online. Here is a zip file tutorial and the associated files. Thanks to Eric Lunt of Digital Knowledge Assets for allowing us to use this. Additional information on MVC can be found on my home page.

Learn Client-Server

The paper on simple patterns has a short section on Client Server.
Here is a slide show (pdf) on simple client server in Java.
See Core Java Volume 2 Chapter 5.

Present the Design of the Project (November 6)

At mid-term we will get together for you to show your design to the class. All team members MUST participate in this demonstration. It is strongly suggested that you practice the oral presentation as you will be given an individual grade on your presentation. Your initial design document needs to be available on the web for this demo. You will also present a bound hard copy to the instructor. This session will be very long. Plan on staying late.

Build the Midterm Exam Program

The mid-term exam will consist of an individual Java program to be built and submitted by e-mail to the instructor. This is NOT a team project and no collaboration of any kind is permitted. You will have 1 week to complete this project. It will not necessarily be an internet program. The purpose of this is to demonstrate your skill with the Java language and core libraries. The problem statement will be delivered via the listserv one week before the due date.

Pay attention to the Java Coding Patterns in the midterm and in your project.

Learn Java Socket/Port Programming

Core Java Volume 2, Chapter 3.
Java Distributed Programming Chapter 2
sol/java has a number of demonstrations of this, with source code available.
Here are some slides on Java Network Programming by Paul Tymann of RIT. And here they are in postscript so you can print them if you like

Learn Distributed Programming (optional)

Java Distributed Programming Chapter 3

Learn Concurrent Programming (optional)

Java Distributed Programming Chapter 4
Core Java Volume 2, Chapter 2

Learn RMI (optional)

Core Java Volume 2, Chapter 5
Java Distributed Programming

NOTE that RMI may not be runnable off of SOL for security reasons. If your project involves RMI you may need to set up a small LAN in the classroom for your demonstrations. Two laptops connected by ethernet is probably sufficient. You may also deploy your server on another public machine to which you have access. Firewalls will interfere with RMI

Learn Servlet Programming (optional)

NOTE that servlet programming may not be runnable off off SOL for security reasons. If your project involves RMI you may need to set up a small LAN in the classroom for your demonstrations. Two laptops connected by ethernet is probably sufficient. You may also deploy your server on another public machine to which you have access. Such a server needs a servlet aware web server.

Learn XML (optional)

If your client must share a lot of data with the server or the data is complex, then XML is the way to structure the data. Get the book Java and XML by Brett McLaughlin (O'Reilly) to see how. Note that Objects are an alternate way to pass complex data in Java.

Learn Java DB Programming (optional)

Core Java Volume 2, Chapter 4
Java Distributed Programming Chapter 7

If your project requires an data base you can use the SQL system on Sol or Microsoft Access if you have a PC permanently connected to the web that can act as server. The standard modeling tool for relational database is called Entity-Relationship modeling. Here is an introduction to Entity-Relationship. You may want to use some of these ideas to document your database. Here are some JDBC drivers that you may use to create your linkages to MYSQL on Sol. They are in a zip file.

If you intend to use MYSQL on the Pace computers or on your own machine, you can get a personal copy from http://www.mysql.com/. You should also get a copy of the book: MySQL & mSQL, Yarger, Reese, and King, O'Reilly & Associates, 1999, ISBN = 1-56592-434-7

Note that Serializable objects are an acceptable alternative to a database such as SQL.

Build the Project and Write its Documentation

(on line) Document the project (use cases, class diagrams, user manual, administrator's manual and source code. Your code should be documented with JavaDoc). You can document the project using HTML or Adobe Acrobat. Your code doesn't need to be on the web, but it can be. You may use code you find on the web or elsewhere, but all found code should be properly credited as to its source and developer.

IMPORTANT. See and use the Java Coding Patterns.

I suggest (strongly) that you develop the project incrementally using Piecemeal Growth. Get part of it working early and then add additional features. Work in pairs. Get the book Extreme Programming Explained by Kent Beck (Addison Wesley) and follow as many of its practices as you can.

You will need to be sure to give credit for those parts of your project that you didn't build yourself. You may use code you find in books or on the net (with permission of the authors, of course), but you must explicitly credit it. If you have collaborators outside the course, you must credit their help.

Present the Project (January 15)

on the web and in class along with bound hard copy and disk containing all source code and documentation, and database definitions if appropriate. All team members must participate in the oral presentation. It is strongly suggested that you practice the oral presentation as you will be given an individual grade on your presentation. This session will be very long. Plan on staying late.


Project Grading

Your grade will be computed as the average earned over 1000 possible points as follows:

100 Points Scoping Document (Team grade)
100 Points Midterm exam (Individual grade)
100 Points Design oral presentation (individual)
100 Points Design written document and web presentation (team)
200 Points Final oral presentation (individual)
400 Points Final written documents and web presentation (team)

The presentations in the middle of the course and at the end are to be on fixed dates. There is no provision for make-ups. You MUST be there on those dates ready with your presentation.

Note. Your code should not contain any features of Java 1.0 that are deprecated in Java 1.1. The compiler will warn you of this.


Course Frequently Asked Questions (FAQ)

You can find a growing list of questions and answers about this course at: http://csis.pace.edu/~bergin/Java/631nFAQ.html

Here is a related FAQ on Java. This one overlaps a bit with the above, but has additional information. http://csis.pace.edu/~bergin/Java/OOJavaFAQ.html


Sample Project

Here is a sample of a project that is too simple for this course, but shows many of the elements that you must include on your web site.


Alta Vista

The following will search the Alta Vista worldwide database for any information you would like. Thanks to Digital Equipment Corporation for providing this service.
Search and Display the Results

You may also link directly to the Alta Vista homepage: http://www.altavista.com . Go here for Alta Vista help.


Give yourself an edge. Think different.

Last Updated: September 25, 2001