Programming and Interactivity on the WWW

Course Leader: Patrick Doherty, IDA




>Winners of the 1996 IDA JAVA CUP!!

The results are in. (Drumbeats)....and the winners are: Click here!

Latest News



Course Description

The primary goal of this course is to introduce you to the Java Programming language and its use in developing executable content on the WWW. The course is project oriented in the sense that we expect you to learn the language by implementing two relatively sophisticated applet/applications. We tried to choose two projects that force you to use most of the important features of the language and left the specification sufficiently vague in order to give you as much artistic and creative freedom as possible. The course also includes a series of seminars of an introductory nature which cover most of the Java language and its libraries. In addition, if we have time, we will also discuss recent trends, alternatives, and developments in the area.



Course Schedule

During the first four weeks of the course, 8 -10 hours of seminars will be given on mondays and tuesdays. Although the Sparc PULs are booked from 8-18 on thursday's and fridays, you will basically have unlimited access to a Sparc machine during the duration of the course. The basic strategy is to provide you with a static crash course in the Java language via the seminars which will be given in a traditional manner and then to let you loose to experiment with the language, do the labs and browse on the WWW for Java related information.

Below is a brief schedule and outline of the topics we expect to cover. The schedule should be viewed as preliminary since we are not yet sure exactly how much time will be needed to cover each of the topics.


Week 29

Monday

10-12: Getting Started with Java: A Guided Tour. -- Course Introduction, Internet, WWW, Java, Applets/Applications, API.
13-15: Object-Oriented Programming with Java (I). -- Abstraction and Encapsulation: Java classes and data, objects, constructors, Static classes, this, super.

Tuesday

10-12: Object-Oriented Programming with Java (II). -- Inheritance and Polymorphism: accessing variables and methods, overrriding, variable shadowing.
13-15: Object-Oriented Programming with Java (III). -- Inheritance Revisited: Abstract classes, class modifiers, Interfaces, callback methods. Encapsulation Revisited: Packages, how the compiler works, data hiding, class and variable visibility, access modifiers.


Week 30

Monday

10-12: Object-Oriented Programming with Java (IV). -- Dynamic runtime facilities, run-time typing, run-time extensibility, Instanceof, casting, object wrappers, Class class, class loaders.
13-15: The Abstract Window Toolkit (I). -- Introduction to the AWT package. GUI, Components, Containers, Panels, Event Handling, Layout Managers.

Tuesday

10-12: The Abstract Window Toolkit (II). -- Graphics, Image handling, ImageObserver, MediaTracker, ...
13-15: Java Statements and Utilities. -- Control statements, basic data types, arrays, vectors, enumerations, stacks.


Week 31

Monday

10-12: Exceptions and Error Handling.
13-15:
Threads. -- Creating threads, thread states, scheduling threads, Runnable Interface.

Tuesday

10-12: Applets.
13-15:
Threads and Applets.


Week 32

Monday

10-12: Networks
13-15:
Java Security

Tuesday

10-12: Networks and Java Security


Week 33

No Seminars.


Week 34

Project Evaluations. During the latter part of week 34 and week 35, participants should provide us with a demonstration of the last two labs which includes an oral presentation.


Week 35

Monday

10-12: Summary and Recent Developments

Project Evaluations.

Winners of the best 5 applets/applications will be notified at the end of week 36.



Course Labs

The course will consist of a series of four (possibly 5) labs:

IMPORTANT MESSAGE!! - For completion of the course you need only complete labs 1 and 2 and either lab 3 or 4. Since we are dropping one lab, you will of course be expected to put more effort into the mini-project you choose. Those of you that still want to complete all four labs are welcome to. Completion of both projects (lab3,4) will result in a VG or 5, provided I can push this through with the administration!

The first two labs are relatively well specified. The latter two are loosely specified and should be considered moderately sized projects. The goal is to do as much as possible, not the minimum necessary to pass the course!

Lab assistants will be physically present during the lab periods on thursdays and fridays to answer questions and help out. Remember that you are expected to do a lot of reading in the course books in advance, so questions should be of a non-trivial nature! Hopefully we can answer them!

The Lab Environment

The locations for doing the labs are PUL1-5, building E++, bv. These rooms are reserved for this course from monday-friday, 8-18. In practice, you can use any of our student sparc machines whenever you like as long as you do not interrupt other courses or activities.

45 student accounts have been set up for the course. Each of you will get an account and will receive a password for the account on friday, july 12, during upprop.

In order to get the proper path accesses to our WWW related software at IDA, you simply need to add a module to your .login file. Currently, there is a line in the file which looks like this:

module add default

Modify it so it looks like this:

module add default misc/www

Many of the experiments we will be doing involve applets opening sockets and sending information back to the server on the machine from which they were loaded. For security reasons, many browsers make it difficult, if not impossible, to open certain paths of communication between applets, applications, browsers, etc. To simplify the experimentation, we have set up a simple script which starts your own www server on the workstation you are using. Click here for details!



Course Exam

In order to pass the course, successful completion of the four labs is necessary. There is a possibility that an oral exam regarding the contents of the first four labs may be necessary. This will be dependent on the quality and creativeness of these labs.

The course will also include a friendly Best Applet Competition based on the Game Applet and Business Enterprise Labs. The creators of the best five Applets will win a Sun Java T-shirt each.

We have been notified by the summer school course organizers that since the grades will only be determined by completion of labs that we can only give the grade "godkand" or 3. If the projects are of a collectively high quality, I will try to argue for a "v„lgodk„nd" or 4. Sorry for the inconvenience to those of you who are advocates of grade distinctions.

Lab1 Results

Lab2 Results

Lab3 Results



Course Slides

You can view the course slides in minature version by accessing the HTML sides listed below. These slides have some minor errors in them which will be fixed at a later date.In addition, certain diagrams based on the course books and some examples from other sources are not explicitly stated as coming from those books or sources. I will try to construct a credit list at a later date.

Course Introduction
Getting Started
Object-Oriented Programming with Java (I)
Object-Oriented Programming with Java (II)
Object-Oriented Programming with Java (III)
The Abstract Window Toolkit (I)
The Abstract Window Toolkit (II)
Simple and Complex Datatypes
Exceptions
Threads
Applets
Network Programming with Java
Security Issues
Summary and New Develpments (which are probably old by now!)



Course Books

You are expected to read the course books from front to back covers one or more times. These are arguably three of the better books out for the moment, although new books are being published every week!

Java Sourcebook: A Complete Guide to Creating Java Applets for the Web
Ed Anuff
John Wiley & Sons, Inc., 1996.
ISBN 0-471-14859-8

One of the first good introductory books published by an employee of HotWired magazine. Provides a well-rounded introduction to the WWW, Java's role in the larger scheme and a reasonable amount of concrete code and examples to describe Java itself and possible applications.

Java in a Nutshell: A Desktop Reference for Java Programmers
David Flanagan
O'Reilly & Associates, Inc., 1996
ISBN 1-56592-183-6
More Info!

An excellent desktop reference with a complete description of the Java API 1.0. It includes a number of compact but excellent introductory chapters on Java essentials. Part II contains the Java API description with excellent cross references and indexes for finding different methods, classes, who calls what, etc.

Core Java
Gary Cornell and Cay S. Horstmann
Sunsoft Press, A Prentice Hall Title, 1996
ISBN 0-13-565755
More Info!

In my opinion, this is currently the best book for solid examples of intermediate level program code and describes a lot of the problems and solutions for those problems that arise when doing serious Java programming. The book assumes some familiarity with programming in general and is classified as a book for advanced programmers, although I'd place it at the intermediate level. In addition, it contains the SunSoft CD provided with all books in this series which includes the JDK for different platforms and a number of useful auxiliary applications.

Although not course books, I'd also highly recommend:

Just Java
Peter van der Linden
Sunsoft Press, A Prentice Hall Title, 1996
ISBN 0-13-565839-X
More Info!

Java for C/C++ Programmers
Michael C. Daconta
John Wiley & Sons, Inc., 1996.
ISBN 0 471-15324-9



Some Useful Links

JavaSoft: The Java Division of Sun Microsystems
Gamelan: An excellent Applet Archive.
Digital Expresso: Summaries of the Java Newsgroups.
Java World: An online Java Magazine.
The Java Applet Rating Service.
A Java Page provided by our Lysator friends.
The New AWT Tutorial be Nelson Wu.
The JavaSoft Tutorial (Stored locally on our IDA server).
The Java API 1.0 (Stored locally on our IDA server).
Core Java Book Source Code



Faculty

Patrick Doherty (Course Leader)
Department of Computer and Information Science
University of Linköping
S-581 83 Linköping, SWEDEN
Phone: +46 13 28 24 26
Telefax: +46 13 28 26 06
Room: FOA A1.291

email: patdo@ida.liu.se


Lena Wigh (Course Administrator)
Department of Computer and Information Science
University of Linköping
S-581 83 Linköping, SWEDEN
Phone: +46 13 28 17 56
Telefax
Room: E 1tr F 490

email: lenwi@ida.liu.se


Lars Karlsson (Course Assistant)
Department of Computer and Information Science
University of Linköping
S-581 83 Linköping, SWEDEN
Phone: +46 13 28 24 28
Telefax: +46 13 28 26 06
Room: FOA A1.287

email: larka@ida.liu.se


Marcus Bjäreland (Course Assistant)
Department of Computer and Information Science
University of Linköping
S-581 83 Linköping, SWEDEN
Phone: +46 13 28 19 95
Telefax: +46 13 28 26 06
Room: FOA A1.281

email: marbj@ida.liu.se


Joakim Gustafsson (Course Assistant)
Department of Computer and Information Science
University of Linköping
S-581 83 Linköping, SWEDEN
Phone: +46 13 28 23 05
Telefax: +46 13 28 26 06
Room: FOA A1.2851

email: joagu@ida.liu.se