CS193k Advanced Java
Welcome to the home page for CS193k -- Advanced Java Applications. I'm adding new material at
the top, and leaving the old material below so you can get
a preview.
Now our web page is over here.
The basic plan with 193k is to explore and build projects in a few advanced
areas of Java. The likely topics are: GUIs with Swing MVC, heavy threading, and RMI.
We just might be able to fit in a fourth topic, in which case I would probably go
for either optimization, understanding the class file format, or maybe JDBC.
Not surprisingly, there is no single book that covers all those things in depth.
For that reason and because the online resources are so good, there is
no required text for 193k. If you want a book, the one that provides the
most complete background on our topics is Mastering Java by John Zukowski.
It's a $50 1244 page tome.
The material here is for
last year's 98-99 version of the course. This year will be mostly
similar but a bit different. Check out the syllabus (Handout #1)
in the handouts directory for course information. I'll be updating
this site for the Spring 99-00 version of the class a couple
weeks before it starts. In the meantime, look at last year's materials
to get a sense of the course.
- Mitch's hours are Wed 10-12 in Sweet hall
- Julia's hours are Tues 5-7 in Sweet hall
- There are special extra hours Tues or Thurs 4-10 in Sweet hall in weeks where something is due
- Nick's regular hours are Mon, Wed 3-5, but in fact he is generally around in the afternoon every day but Thursday.
Course materials...
My favorite online Java resources...
- sun docs -- the front of their site is cluttered with Sun marketing stuff, but there's is lots of actual content too.
- Java FAQ -- The comp.lang.java FAQ -- maintained by Peter van der Linden -- great!
- Bruce Eckel's Java Book, Thinking in Java, in a free online form
- Javaworld -- lots of Java articles
Course Summary
The basic idea with CS193k is to pick a few applied areas of Java technology and explore them in moderate depth. This is not a basic Java course, and we won't really spend time reviewing Java or OOP basics (see Prerequisites below). For each topic area, we will cover how to use it, what it's good for, related implementation and language issues, and then we'll have a non-trivial assignment. My plan for the topics has firmed up to...
- JFC (a big topic) / Serialization / Beans / Reflection -- these all go together. Use Java to build portable, dynamic, library based GUIs.
- Threading -- work through some heavy threaded code. Use a natively threaded VM. Hopefully locate a multi-processor to use. Work through the deprecation of stop().
- Distributed Computing / RMI -- play around with distributed computing. 1-1 Client/server, or for more fun, 1-many.
- Implementation and performance-- look at the state of the art in VM implementation issues. This is more of a lecture topic than part of a specific homework. We could also have a "Lessons drawn from the short history of Java" section.
- Servlets -- cool CGI replacement technology. We probably won't cover these, they will be done in CS183i instead.
Peparation and Prerequisites
To prepare for the course, bone up on your basic Java. Look at the Java tutorial tracks below. Any Java book would be fine review. Our text is Mastering Java 1.2 (recommended but not required).
Course Facts
- Platform: we will aim for the Java 2 standard, but actually a 1.1 VM can be made to work for most purposes. You can write the code on the platform of your choice, but we will test it against the Solaris VM. You will need a leland account to do your submissions.
- Homeworks: there will be a small number of homeworks -- basically one project for each technology area. This is a 2-unit course. It will be much more work than a typical 1-unit seminar. However, it should be less work than a typical 3-unit CS course. The homeworks themselves will be non-trivial, however they're won't be too many of them.
- Prerequisites: there are two ways that you can get into CS193k...
- You already know basic Java and OOP. For example you have taken CS193j Introduction to Java
-or-
- You have a deep enough OOP background that you can pick up the Java on your own as we go. For example, if you have survived CS108 Object Oriented Systems, you will do fine in CS193k. You should check out the
Java tutorial at Sun. Do the two tracks: Language Basics and Essential Classes.
- Logistics : all printed class materials will be available on the web. Digital versions of the videos may also be available. All submissions will be electronic.
- Grading: 60% homeworks, 40% final exam. There will not be a midterm. Remote students may take the final exam remotely.
- Lecture: meets once per week for one hour twenty minutes. I believe the lecture time is on Tuesday afternoons.
- Instructor: Nick Parlante -- I generally do OOP and Internet courses, so CS193k is a natural project for me.
Running Java 1.2 At Stanford
For the Swing homework, there are two ways to go. (1) If you code against a 1.2 VM, Swing is built in. (2) Everything will work on a 1.1 VM, but you need to have swingall.jar in your $CLASSPATH. Swingall.jar may be downloaded from sun.
- on leland -- to access Java 1.2 on leland, the current official technique is to place /usr/pubsw/apps/jdk1.2/bin at the very front of your path. In my .cshrc file, that lead to a line which looked like...
set path=( /usr/pubsw/apps/jdk1.2/bin $site_path ...
- on the Mac -- there is no 1.2 VM, however you can use 1.1 fine. The campus Codewarrior folders should be set up for this -- use the "Java MRJSwing Application" stationery which I created specifically to let you write 1.2 programs. MRJ 2.1 (the VM) should be installed, and there should be a folder called "1.2 additions" in the MRJ libraries folder in the extensions folder. The 1.2 additions contains files that need to be added to the 1.1 functionality, such as swingall.jar. By convention, the various patches, files etc. needed to build the CodeWarrior compiler folder are kept in the CS108 folder on catacombs.
FAQ
- Will CS193k be on digital video? A: Looks like the answer is no.
- Will the homeworks be little toys? A: No, the homeworks should be realistic, cool, realizations of the latest Java technology. They're just won't be more than three or four of them.
- What about books? A: There is no required text. If you want one big book for the whole course, get Mastering Java -- it is a very up-to-date and complete guide for Java 2. Its explanations are competent. It includes explanations of Java basics, JFC, threads, beans, and RMI. It's $50 and 1200 pages long. Just Java is a shorter guide to Java 2. It includes JFC and threads, but not RMI. In any case, I will provide handouts to fill in details, and you can use on-line resources for much of the Java documentation.
That's what I have figured out so far, pleae feel free to email me at nick.parlante@cs.stanford.edu with any questions. Also, check out the progress at the
CS Education Library project. My teaching CS193k will probably result in more Java stuff at the library to balance out the current C emphasis.