CS 6395
Principles of UI Software

Spring 1999
College of Computing 101
TT 1:35-2:55


Description

This course is designed to introduce the principles underlying interactive software and to provide experience with user interface implementation. We will discuss the principles behind various strategies, techniques, and tools that make the development of quality UI software faster and easier. Examples will be drawn from the various toolkits and systems that have been developed over the years.
Instructor
Blair MacIntyre
blair@cc.gatech.edu
239 College of Computing
894-5224
Office Hours: 3-4 Tuesday and 1-2 Wednesday (in 239 CoC)
Teaching Assistant
Doug Bowman
bowman@cc.gatech.edu
388 CRB
894-5104
Office Hours: Monday 3-4 CRB 388, Thursday 11-12 CCB Commons

Prerequisites

Newsgroup

Here's a link to the git.cc.class.6395 newsgroup.

Online Notes (for you to print before class)

In this section, there will be links to the notes that will be used in class. These files will be Adobe Acrobat files, which you should be able to view and print from a web browser that has the Acrobat plugin. (sorry, this was not captured) Here's a link to the automatically recorded notes from class. Note: there is no audio or video recorded with the notes.

Textbook

There is no required textbook for this class. If you want a book to read for additional information, you could look at Dan R. Olsen, Jr., "Developing User Interfaces", Morgan Kaufmann Publishers, Inc., San Francisco, 1998, ISBN: 1-55860-418-9. In addition, you may find it useful to get a book on the Java programming language. Numerous such books are available. Depending on your background and experience learning programming languages, you might want to consider either a tutorial or reference-style book. Several books that have been recommended include: David Flanagan, and Mike Loukides, "Java in a Nutshell: A Desktop Quick Reference", O'Reilly & Associates; ISBN: 156592262X.

David Flanagan ,"Java Examples in a Nutshell : A Tutorial Companion to Java in a Nutshell"

O'Reilly & Associates, 1997, ISBN: 1565923715.

Ken Arnold and James Gosling, "The Java Programming Language", Addison-Wesley Pub Co, 1997, ISBN: 0201310066.

James Gosling, Bill Joy, and Guy L. Steele, "The Java Language Specification", Addison-Wesley Pub Co, 1996, ISBN: 0201634511.

In addition, a brief tutorial on Java for C/C++ programmers can be found here.

For this class you will need to have access to a Java system on some platform. You can use the CoC computers, or you can download the latest version of the system (JDK 1.2, aka the Java 2 SDK, Standard Edition, v 1.2) directly from Sun. It is free and can be found at: http://java.sun.com/products/jdk/1.2/.

Extensive on-line documentation from Sun can be found at http://java.sun.com/products/jdk/1.2/docs/index.html.

The API docs for all classes can be found at http://java.sun.com/products/jdk/1.2/docs/api/overview-summary.html.

An online tutorial for Swing can be found at http://developer.java.sun.com/developer/onlineTraining/GUI/Swing1/index.html

Another page to look at is http://www.cc.gatech.edu/classes/cs4812_99_winter/swing/index.htm

Web page

The class will use the web, the class page will be located at http://www.cc.gatech.edu/classes/cs6395_99_spring/ (this link should return to this page)

Grading

Grading will be based on

Programming Assignments

All programming assignments should be done using the CoC Solaris machines. You are free to work on any machines you want, but they must work on these Solaris machines. I anticipate most assignments will use the Java programming language with the Java Foundation Classes (i.e. the Swing UI toolkit). However, I may require you to use other toolkits and languages for some assignments (to be determined).

You will write 2-4 programs for this course (we'll see as we go along). Documentation/code clarity will count for part of the grade for each program. The remaining portion of the grade will be based on the program's ability to handle various requirements that will be specified when the assignment is given.

Late programs will be penalized 25% per day late. Weekends count as two days. Programs that are more than 2 days late will not be graded. You may discuss high-level design strategies and specifications of the assignments with other students in this class. However, your programs and homework are to represent your own work. All coding and detailed design decisions are to be made without consultation with others.

We will include links to online versions of the assignments as they are handed out. We will also make sample solutions available.

For this project, you are to pick a window system or toolkit that we have not discussed in class and evaluate/discuss it in relation to what we have discussed in class. (i.e., we discussed various ways of looking at window systems and toolkits, and examples of existing ones). I want these discussions to go into some depth, not be superficial! Learn as much as you can about the system and report on it.

Two phases:

Some possibilities: http://www.berlin-consortium.org/ Subarctic (http://www.cc.gatech.edu/gvu/ui/sub_arctic/)

GIMP (link?)

Motif, OpenLook (somewhat boring, as they sit on X)

BeOS (http://www.be.com)

MacOS, Windows95

Syllabus

Additional lectures (TBA) will cover issues related to other UI paradigms (beyond the 2D GUI).
 
Tuesday
Thursday
March 30
Intro
April 1
Architecture and Organization of UI Software
April 6
Window Systems (1)
8
Window Systems (2)
13
Interaction Techniques (1)
15
Interaction Techniques (2)

ASSIGN #1 Out

20
Toolkits (1)
Papers: Artkit, Foley and Geiskens, Ascente
22
Pen-based Input
Papers: Igarashi (UIST 97&98, SIGGRAPH 99)
27
Toolkits (2)
29
MIDTERM

ASSIGN #1 In

May 4
Constraints
Paper: Eval/vite

ASSIGN #2 Out

6
Constraints (2)
Paper: DeltaBlue
11
Building Interactive Objects (1)
Papers: Interviews, A New Model for Input

ASSIGN #2 (Preliminary) In

13
Building Interactive Objects (2)
ASSIGN #3 Out
18
cancelled
20
cancelled
25
Higher Level Tools
Papers: Cardelli, Olsen, Sukaviriya & Foley & Griffith
27
Higher Level Tools
Papers: Foley & Kim, Szekely & Luo & Neches

ASSIGN #2 (Final) In

June 1
Animated and Interactive Interfaces
Papers: 6 of them.  Cognitive Coproc, Morphic, Cartoon Animation, Animation Support for UI Toolkits, Fluid Docs, Pacers
3
TBA

ASSIGN #3 In