Undergraduate Graphical User Interface Course
Charles Welty, University of Southern Maine  (welty@usm.maine.edu)

Presented at the NSF CCLI Showcase,
SIGCSE (Special Interest Group on Computer Science Education) 2000,
Austin, TX.  March 9 - 11, 2000.

Graphical user interfaces have become more common and more easily built. Languages like Java are available to build user interfaces using the now common object-oriented, event-driven programming model. Texts covering the general field of human computer interaction (HCI) as well as the more specific area of graphical user interfaces (GUIs) are also in great supply. In addition, curricula for such courses have been generated by the ACM (SIGCHI) and Carnegie-Mellon University.

Large, research-oriented schools have generally adopted courses in human computer interaction and graphical user interface design. Smaller schools have not been taking as much advantage of the established infrastructure as they might. Previous work by the author has found that 85% of graphical user interface courses are taught at schools with Carnegie classification of doctoral II or above.

We propose offering a course in the design and implementation of graphical user interfaces that will be practical to offer at smaller schools. We are specifically targeting schools with Carnegie classification of Master's and Baccalaureate. Students in the course will implement GUIs following the design principals derived from HCI research as well as the specific guideline literature that is also available. Planning for and executing usability studies with participants from the proposed user population will also be part of the course.

An important aspect of the course will be its interdisciplinary nature. Faculty in graphic art as well as in technical writing will be participants in the course. This aspect of the course is meant to show computer science students that expertise from other disciplines is necessary in the design of graphical systems.

FAQs about this project

Q1: What is a smaller school?
A1: Smaller schools have many fewer faculty members, course offerings, and student choices of courses. There may be about 5 to 7 faculty members, where 5 is the minimum for CSAB accreditation. Also, students at smaller schools often start a career directly after receiving their Bachelor's Degree as opposed to going on to graduate school.

Q2: Why do these factors (fewer faculty, etc. from Q1) have on Human-Computer Interaction courses?
A2: A Computer interaction course has not been seen as a being mainstream upper-level computer science courses on a par with database systems, architecture, operating systems, etc. Thus, in a school with limited offerings, the more traditional courses are offered instead of the HCI courses.

In addition to this, many recommended HCI curricula specify a sequence of several courses, such as a human factors course, a GUI design course, and an implementation course. Even smaller schools that can offer an HCI course may not have the resources to offer the recommended sequence.

Finally, the career-oriented nature of the students means they want a course with considerable practical content. A course covering the various issues in HCI is academically valid, but often does not seem practical students. When the choice of courses is limited, students can be extremely irritated if a seemingly more practical course is not offered in order to present a less practical course.

Q3: How does the course you propose address the issues of limited resources?
A3: Our course combines the human factors material with design and implementation of actual user interfaces. Thus, we have only 1 course, in keeping with the tradition established by courses in databases, architecture, operating systems, etc. The course will use a production language (such as Java or C++) with inherent practical application.

Q4: How can a single GUI design and implementation course cover the breadth and depth of a subject that is covered in several courses at larger schools?
A4: It can't. Few, if any, undergraduate courses cover an entire field in full depth. This course will be a challenging, but limited treatment of the HCI material and GUI design.

Q5: Won't a lot of class time have to be spent on the language used for the GUI implementation?
A5: The initial offerings of the class show that students with the required background can learn a new language (or a new set of libraries for a language) quite quickly. Students are juniors in computer science with a second course in data structures as the prerequisite.

They learn from a set of comprehensive sample programs (prepared by the instructor and available on the Web at http://www.cs.usm.maine.edu/~welty/cos368/sampleSwing/. It has been found that these programs combined with a good text are sufficient for the students to build reasonable interfaces in a semester. Perhaps 3 lectures are devoted to language material. Implementation questions do arise which are dealt with in class, often more by fellow students than by the instructor.

Q6: If students learn the programming language primarily on their own, what do you do in class?
A6: Ninety percent of class time is spent on HCI material and design guidelines. We have not used a text for this material in the previous offerings. Web-based lecture notes form the core of each class with discussions leading from the notes. The notes are available at http://www.cs.usm.maine.edu/~welty/cos368/368rdassF99.htm. All exams are entirely based on the HCI and GUI design material. The projects test their implementation skills.

Q7: Isn't a text necessary for the HCI and GUI design material?
A7: It may be, but we have avoided using a text for several reasons. First, no text could be found that has all the elements desired for the course. HCI books cover that subject in great detail, but have little to no GUI design material. GUI design texts give lots of examples of the right and wrong ways to do things, but have little about the HCI motivation behind their guidelines. Having all exams based on the HCI and GUI design material motivates the student to study this material thoroughly.

Q8: In what way is the course "interdisciplinary".
A8: This course does not assume that the computer science students taking it have all the necessary background to really design and build GUI interfaces. We have a faculty member from graphic arts come in and explain what graphic artists know and do. He can give specific examples of the knowledge needed. The lecture he gives is not meant to teach the computer science student all about graphical design, but to let the student know that there are people with vast backgrounds in these issues who need to be part of any design team.

Another person is brought in who brings technical writing expertise. Again, the purpose is to show what a person with this background can bring to a product, not to try to make our students technical writers.

Another person brings in practical experience from the HCI world with building systems from paper prototypes and use of ethnographic studies, questionnaires, "thinking aloud", and other iterative design techniques.

Q9: Where can I read more about these subjects?
A9: See  http://www.depaul.edu/~asears/hci/readings.html

Q10:  Can I have a copy of your course syllabus?
A10:  See http://www.cs.usm.maine.edu/~welty/cos368/368f99sy.htm

Q11:  Do you have any samples of student work?
A11:  See http://www.cs.usm.maine.edu/~welty/cos368/sigcse/studentWork

Q12: Where is this page located?
A12: http://www.cs.usm.maine.edu/~welty/sigcse2000/