|Syllabus||Calendar||Homework Assignments||Coding examples||Daily Survey|
This is really two courses in one.
Half of the course is about the technical and software-engineering issues of implementing a graphical user interface. This includes language-independent techniques like model/view separation and other common software design patterns (e.g. Command, Active Object, Factory, Proxy, etc.), and Java-specific techniques such as Swing GUI components, Listeners, inner classes, multithreading, and networking.
The other half of the course is about how to design a good user interface: how to identify users and their goals, lay things out on the screen to be attractive, clear, and efficient, choose appropriate displays and controls, structure the navigation among different screens, specify and test a proposed user interface.
Every student will carry out several projects of increasing size during the semester, representing various phases of the development process: user interface design, software design, software testing, iterative improvement, etc. You may be called upon to implement the user interface specified by one of your classmates, or to serve as a "test-driver" for a program designed by one classmate and implemented by another.
Mondays 12-1 and 4-5, Tuesdays 10-4, Wednesdays 12-1, and Fridays 12-3.
The main textbook for this course will be About Face 2.0, by Cooper & Reimann. It's mostly about the "other half" of the course -- how a good user interface should look and behave, not how to make it behave that way. For the "techie" part of the course, I've ordered an optional textbook, Professional Java User Interfaces, by Marinilli, and I'll post links to some tutorials on the Web.
I haven't finished writing the syllabus yet. In the meantime, take a look at the last time I taught this course, in Spring 2005.
This course meets on Monday, Wednesday, and Friday from 9:00-9:50 AM in the Gallagher Lab, Swirbul Library.