Foundations of Computing -- Spring 2001

Jon Jacky

Spring quarter we will study networked applications and experiment with building some ourselves, using the Java programming language.

In seminar we will learn about working in the computing field. We will also consider issues that can arise when systems are placed into use: reliability, safety, usability, security, and social and economic effects.

We may consider other topics based on students' and instructor's interests.

Lecture and Seminar: Tuesdays and Thursdays 5:30 -- 7:00 pm, L1612

Laboratory: Tuesdays and Thursdays 7:30 -- 9:30 pm, ACC lab (L2610 in the Computer Center).

Our last class meeting on Thursday evening, June 7, will be a potluck. Here is a sign-up sheet for contributions (contact Sandy McDonald to add yours).

Check here for recent announcements

Schedule

Textbooks
Other books
Software
Online tutorials, documentation, code, etc.
Other readings and links

Lab worksheets
Sample programs
Quizzes

Last revised May 31, 2001. Use your browser's Reload or Refresh button to get the latest version.

Back to course page.


Schedule

Here is a detailed but still provisional week-by-week schedule.


Textbooks

We will use the two Java books that were assigned earlier:

On to Java, 2nd edition, Patrick Henry Winston and Sundar Narasimhan, ISBN 0201385988, Addison-Wesley, 1998, 379 pages. About $25.

Java Network Programming, Second edition, Elliotte Rusty Harold ISBN 1-56592-870-9, O'Reilly and Associates, 2000, 731 pages, about $40

We will read this book on the computer industry:

High Stakes, No Prisoners, Charles Ferguson, ISBN 0-609-80698-X, Random House, 1999, about $15


Other books

Here are some good books about the history of the Internet and Web. They cover the same story as in Ferguson's Chapter 2 but in much greater depth. What seems inevitable and obvious now required extraordinary vision, ingenuity, and cooperation sustained over several decades.

Where Wizards Stay Up Late: The Origins of the Internet, Katie Hafner and Matthew Lyon, Simon and Schuster, 1996. Also in paperback. Mostly about creating the Arpanet in the 60's and 70's, based on interviews with the original builders. Briefer material on more recent history.

Weaving the Web: The Original Design and Ultimate Destiny of the World Wide Web by its Inventor, Tim Berners-Lee, HarperSanFrancisco, 1999. Like it says in the title.

There are zillions of Java books. Besides the assigned textbooks, I've found this to be the most useful.

Java in a Nutshell, 3rd ed., David Flanagan, O'Reilly, 1999, 640 pages, about $30. Starts with a 230-page textbook-style introduction to Java which complements On to Java nicely, then has a 400-page reference on most of the packages in the Java platform (but not including the graphical user interface packages AWT and Swing, which are in another Nutshell book).

I wish we had more time to spend on design. This book is the best place to start.

The Inmates are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity, Alan Cooper, SAMS, 1999. About $15 in paper. Argues that programmers are the wrong people to design most computer-based products, but they usually end up doing it anyway. Proposes a new discipline, interaction design. Provides lots of anecdotes and practical advice on design, business, software engineering, and project management. Here's the first chapter.

Here are some other network books I considered before I chose Java Network Programming. They provide some useful material but aren't very technical and don't have any programming examples.

Networked Applications: A Guide to the New Computing Infrastructure, David G. Messerschmitt, 1999, Morgan Kaufmann, About $40. Good topic coverage but no technical examples, exercises or projects.

Not Just Java, Peter Van der Linden, About $40. Covers many of the same topics as Messerschmitt, very heavy on the pro-Java, anti-Microsoft advocacy, a few light technical examples but no exercises or projects.

Middleware, Daniel Serain (translated by Iain Craig), ISBN 1-85233-011-2, Springer UK, 1999, about 250 pages. Good but very brief coverage of many topics, but no exercises or projects.


Software

You can write Java programs in the ACC lab, telnet to grace.evergreen.edu from home, or install Java on your own computer. Java software is available for free on the Internet.

Sun's Java site has tons of software and documentation. The software we will use in this course is called Java 2 SDK, Standard Edition, Version 1.3 (also called the Java 2 Platform, Standard Edition, or J2SE). You can download it for Windows or Linux here. Be warned it is huge -- about 25 MB -- so it could take hours to download over a phone line.

There is an article about Java on Macintosh here. Apple's own Java site is here.


Online tutorials, documentation, code, etc.

The documentation at Sun's Java site is indexed here. It provides the complete text of several (expensive) books, including the Java language specification itself. The most useful links for our purposes are these tutorials:

and these reference materials:

Sun's SDK includes a lot of demonstration Java code that you can study and run. On grace it is under /usr/local/java/jdk1.2.2/demo, in my Linux distribution it is under /usr/java/jdk1.3/demo, and in my Windows distribution is it under C:\jdk1.3.0_02\demo.

The Sun site does not provide the Java platform source code in convenient form. They say you probably don't need it. If you sign a license agreement you can download it.


Other readings and links

These are pertinent and interesting but too long, too deep, or too digressive to assign.

Week 3: Networks

Week 4: Objects and references

Week 4: Networks


Lab worksheets


Sample programs

On grace you can copy these programs from the directories under /usr/users4/fofc/java. Or, you can save them from this web page (the files are named .txt here - you'll have to rename them to .java).


Quizzes

Here are the weekly quizzes and solutions.


Jon Jacky, jackyj@evergreen.edu