CS 6456
Principles of UI Software

Spring 2000
College of Computing 101
TT 4:35-5:55



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 2D UI toolkits and systems that have been developed over the years.A major component of the class will be a group project that extrapolates from the principles presented for 2D GUIís and applies them to other UI paradigms.


Blair MacIntyre
239 College of Computing
Office Hours: 1-2 Tuesday and 2-3 Wednesday (in 239 CoC)

Teaching Assistant

Rob Kooper
259C College of Computing (Augmented Environments Lab)
385-1104 (Lab phone)
Office Hours: 3-4 Thursday and 2-3 Friday (in 259 CoC, GVU lab on purple couch)


         CS 6750 or PSYC 6750: Human-computer Interaction.

         Extensive programming experience, preferably in Java.Must be very comfortable with reasonably complex data structures and object-oriented software.


Here's a link to the git.cc.class.6456 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.

         Windows systems


Here's a link to the automatically recorded notes from class. Note: there is no audio or video recorded with the notes.


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.

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

O'Reilly & Associates.

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

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

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/cs6456_00_spring/ (this link should return to this page)


Grading will be based on

         Assignments and project (60%)(a mix of programming and written questions)

         Midterm (20%)

         Final exam (20%)

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.



A significant portion of your grade will come from a group project.This project will be a research project in which you will apply what you have learned in the lectures on 2D GUIís to another UI paradigm.The project will have 4 components:

         Group formation and area survey.You will select your UI area early in the semester, based either on your prior interest, on presentations the instructor will do, or on discussions with the instructor and the TA.You will submit a short description of your team and UI area.

         You will be responsible for doing an extensive survey of this area for the first half of the semester (while we are discussing 2D UIís), in parallel with the other class activities.You should also be thinking about how the material covered applies to your chosen area.You will present this information to the class midway through the semester.

         Initial project description.Shortly after we finish talking about 2D UIís (and after your area presentation), you will submit a short initial document describing your expected project outcomes and progress.

         Final project presentation.You will submit a paper describing your findings and present them to the class.

The exact content of the project will be between the instructor and each group.This may include building prototypes or mockups of applications, designing an API that solves an important UI problem for that area, etc.


Additional lectures (TBA) will cover issues related to other UI paradigms (beyond the 2D GUI).


Here is an initial list of topics.A more complete one will appear on the web page when it is available (this week).

         Introduction (1)

         Architecture and Organization of UI Software (1)

         Introduction to Non-2D UI Paradigms (2)

         Window Systems (2)

         Interaction Techniques (2)

         Toolkits (2)

         Constraints (2)

         Building Interactive Objects (2)

         Higher Level Tools (2)

         Animated Interfaces (2)

         Initial project presentations 1 (2)

         Final project presentations 2 (2)

         Other topics (as determined by class/project group interest), Guest lectures, etc.