From the online course list: "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.

As time permits, the course will also touch on issues related to non-2D GUI interfaces.

Blair MacIntyre
Office: 239 College of Computing
Office Phone: 894-5224
Office Hours: 11-12 Wednesday and 12:30-1:30 Teusday (in 239 or 259C CoC)

The prerequisite for this course is

In practice, this means 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 audio, but no video, recorded with the notes.

There is one required text for the class:

This book is a good introduction to user-interface software programming, but does not cover all the material in the course. Therefore, we will read numerous research papers from conferences, in particular from the ACM User Interface Software and Technology (UIST) 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 that have been assigned so far:

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:

All programming assignments must execute on the Solaris workstations in the CCB teaching cluster. However, we will be using Java and the Java Foundation Classes (in particular, the Swing Components) for all of the programming assignments, and will therefore try to keep the programs as platform independent as possible, allowing them to be executed on IRIX, Solaris, Linux, Windows (NT, 98, 2000), and the Macintosh. You should be able to log into any of the Solaris, Linux or NT machines in the teaching clusters: all Solaris and Windows NT machines support Java.

You will write 4-5 programs for this course. All programs must be written in Java. 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 on the published test data is considered minimal competency for any program. 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. Your programs must run on the Solaris/SPARC machines (the UltraSparc's in the Baird lab, for example), using jdk1.2.2 (/usr/local/jdk1.2.2).

You may discuss high-level design strategies and specifications of the assignments with other students in this class, and are welcome to help each other with issues not central to the assignments (ie. Java, Swing, 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.

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, you will 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. If there are, we will have online links to the homework and the solutions here.