The Big Picture: "Concepts, techniques, structures, and strategies for implementation of interactive software."

The goal of this course is to provide you with an understanding of:

  1. How to implement 2D GUI interfaces effectively.
  2. The commonly used structure of window systems and toolkits that enable programmers to build and maintain complex applications.
  3. How to apply these ideas to non-2D interfaces. As time permits, the course will touch on issues related to various non-2D interfaces.

The graduate and undergraduate versions of this class are being taught together. The classes will be largely similar, although the graduate students will have additional assignments and slightly different tests (in other words, those registered for 6456 will do more work and be graded differently).

Blair MacIntyre
Office: 239 College of Computing (for the first few weeks, after that I will move to the Centenial Research Building 383)
Office Phone: 404-894-5224
Office Hours: Tue/Wed 1-2 (in CCB119 or the area around the commons)

The prerequisites for this course are in the catalog. In practice, they mean that I expect that students are

The syllabus to the course will be here.

Here's a link to the newsgroup.

(for you to print before class)

We will try to make the notes that will be used in class available before 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. The notes will be linked into the syllabus on the line for that days lecture.

Here's a link to the automatically recorded notes from class. To access the notes, your user id is your name (in the format FirstLast) and your password is your student id number. There will be no audio or video recorded with the notes.

There is no required text for the class. There is one optional text, which you can buy and read over the course of the semester as supplemental material:

This book is a good introduction to user-interface software programming, but does not cover much of the material in the course at a level we would like. I will not assume you have read the book, but it is a fairly easy book to read and provides additional information that may be useful to many of you (e.g., there is a good chapter on graphics for those who haven't take the Computer Graphics course).

Because there is no good textbook available, we will read numerous research papers from academic conferences, in particular from the ACM User Interface Software and Technology (UIST) and ACM Computer Human Interaction (CHI) conference. When looking at the reading list below, you will probably notice that most of the papers listed are quite old in "computer time" (over a decade, in some cases); since the techniques and approaches on which current toolkits are built was the subject of research a decade or more ago, the best descriptions of these techniques is the papers that describe that research.

Here are two papers you should start reading immediately, and you should read by the end of the second week of class.

Here are some of the papers we will read, in no particular order:

Course notes will be available online, hopefully at least a few hours before each class. These will follow the lectures given in class.

Grading will be based on a combination of programming assignments and tests. The breakdown is approximately the following:

Unless otherwise stated, all of the programming assignments must execute on the Solaris or Windows workstations in the CCB teaching cluster. We will be using Java and the Java Foundation Classes (in particular, the Swing Components) for the first few programming assignments, and will therefore try to keep the programs as platform independent as possible, allowing them to be executed on Solaris, Linux, Windows (NT, 98, 2000), and the Macintosh. Some of the later assignments will require Windows, and may use other hardware.

You will write 4-5 programs for this course. Documentation/code clarity will count as 20% of the grade for each program. The other 80% of the grade will be based on the program's ability to handle various requirements that will be specified when the assignment is given.

Compiling and executing without errors is considered minimal competency for any program; you cannot obtain a passing grade if your program does not compile. 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 (I encourage you to do this, in fact), and are welcome to help each other with issues not central to the assignments (ie. Java and Swing issues, Unix or NT problems, etc.). 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. If in doubt, ask.

Some information on The Java Foundation Classes, and the Swing Components, can be found on the JavaSoft Swing web pages. You might want to look at the Getting Started with Swing tutorial and the Swing Architecture document if you haven't used Swing before.

When you get stuck with your code, here are some resources to look at:

Programming assignments count for 50% of your final grade. Most programming assignments may require many hours of coding. Familiarity with Java and programming on Unix workstations will be needed to finish the programming assignments. Do not start the night before, or you will likely be late turning in your assignment.

The online version of the assignments have links to them here. The assignments for this course will center around the theme of browsing collections of images; the tentative titles of the assignments are listed below (where the links to them will eventually appear). We will also post some selected sample solutions from the assignments submitted. In general, we try to select samples that cover the basic assignments and the options.

There will probably be no formal homework that needs to be turned in for this course for those registered for 4407. I will probably have the graduate student write a paper at the end of the semester.