RESOURCES FOR UNDERGRADUATE GRAPHICAL USER INTERFACE IMPLEMENTATION COURSES.

CCSCNE '98 (Consortium for Computing in Small Colleges Northeastern Regional Conference, 1998)
Sacred Heart University (Fairfield, CT)
April 24, 1998

Charles Welty
Computer Science Department
University of Southern Maine
Portland, ME 04104-9300
phone: (207) 780-4240
email: welty@usm.maine.edu
 

ABSTRACT
It has been estimated that 48% of the code and 50% of the implementation time required in new applications are directly related to the user interface (Myers and Rosson, 1992). Our research shows that most undergraduate courses that consider graphical user interfaces (GUIs) have no implementation component. Most undergraduate programs (85%) that include GUI implementation are offered at the Doctoral II Carnegie classification or above. Appropriate Web and print references and other materials given in this paper will help faculty at smaller institutions offer such courses.
 

INTRODUCTION
Graphical user interfaces have made computer applications available to a wide segment of the population. Today's interfaces consume 48% of the code and 50% of the implementation time required in new applications (Myers and Rosson, 1992). Very few undergraduate courses are now addressing this aspect of programming. Many schools do offer courses in human-computer interaction that utilize readings and paper projects to study interfaces. New, general purpose, object-oriented languages such as C++ and, especially, Java now make it feasible to actually build user interfaces in an undergraduate course. Many hours of thorough Web searching has found 120 courses considered as human-computer interface courses. Only 13 (11%) fit the criterion of being an undergraduate course with an implementation component.

The wide spread use of graphical user interfaces implies that more courses are needed at the undergraduate level that cover graphical user interface design and implementation. Few small schools offer such a course at present. In fact, few schools in the country teach the undergraduate GUI implementation course envisioned here. Specifically, Table I shows the number of schools that offer such a course according to their Carnegie Classifications. Table II contains the base listings of the courses themselves. There is no evaluation of the sites listed in Table II. Given the wide range of courses listed here and the even wider possible interests of faculty who may utilize these sites, we are leaving the evaluation to those accessing these pages. Also, this list is probably far from complete. Readers are encouraged to contact the author with additional links for further dissemination and inclusion on the author's web page.
 
Carnegie Classification Number of Schools
Research I 5
Research II  4
Doctoral I 1
Doctoral II 1
Master's I 2
 Table I Number of schools offering GUI implementation classes, grouped by Carnegie Classification.

Table I shows that 85% of courses offered are at the Doctoral II level or above. No schools offering GUI implementation courses at the undergraduate level were found with Carnegie classification below Master's I.

Independent of the graphical user interface content of the course, most of these courses give students an opportunity to use the object-oriented, event-driven paradigm in their language. Topics such as inheritance, polymorphism, code-reusability, events, etc., will necessarily be integrated into the course. This will help these students in their other computer science courses and with their future use of event-driven, object-oriented languages for building systems other than graphical user interfaces.

Undergraduate programs in small schools prepare students for both employment and graduate study. Many students have employment as their focus. A traditional human computer interface course, without a major implementation component, has not seemed a good match for this body of students. Not until the advent of C++ and Java has it been possible to teach a course that would be of benefit to all students in these programs. As mentioned above, students not only design and build interfaces but they will also enhance their various programming skills for future employment.

With a small program, limited faculty, and a restricted set of courses, many computer science departments do not have the resources to offer courses that, while they have educational merit, will not appeal to a large segment of its student population. This new graphical user interface course has both merit and appeal. We are convinced that it is now time to offer this course at our schools.

People with expertise other than computer science are needed to build successful graphical user interfaces. Faculty members from a school's graphical design faculty can give invaluable insight into the non-computer science aspects of GUIs. Graphical designers bring much needed expertise to the building of graphical user interfaces. Many art programs have digital imaging capabilities with faculty and students willing to participate in this course. This course can also involve faculty from a school's technical writing program. Most computer science courses depend solely on computer expertise to build a project. These courses help students to see that people in other fields, especially the ‘soft’ fields of art and language, can be of invaluable help. In general, more expertise is needed to build a successful system than that supplied by the computer scientist. This course will give our students valuable insights and appreciation into the role that people from these other disciplines can play in the creation of graphical user interfaces.
 
 
 
 
 
 
 
 
School 
(Carnegie Classification) 
Course Number Course Title URL Faculty Member
Ball State University 
(Doctoral I)
CS 345 Graphical User Interfaces http://www.cs.bsu.edu/~peb/cs345/ Prof. Paul E. Buis
Brigham Young University 
(Research II)
CS 456 CS 456 http://issl.cs.byu.edu /docs/CS456/Syllabus96.html Prof. Dan Olsen 
Carnegie-Mellon University 
(Research I)
15-499A Introduction to User Interface Programming http://www.cs.cmu.edu/afs/cs /user/dolsen/www/15-621/index.html Profs. Brad A. Myers 
and Dan Olsen
Millersville University of Pennsylvania 
(Master's I)
CSCI 425 Human-Computer Interaction http://natasha.millersv.edu/dtui/index.html/ Prof. Blaise Liffick
Rensselaer Polytechnic Institute 
(Research II)
66-460 Introduction to Graphical Human-Machine Interfaces http://www.cs.rpi.edu/courses/spring97/GHMI Prof. Bowden Wise
Stanford University 
(Research I)
CS 247a Human Computer Interaction Design Studio http://www-pcd.stanford.edu/hci/courses/cs247a.html Terry Winograd, Bill Verplank <verplank@ 
interval.com>(with others 
from Interval Research).
Tufts University 
(Research I)
COMP 106 Object-Oriented Programming for Graphical User Interfaces http://www.eecs.tufts.edu/~jacob/106/ Prof. Robert J. K. Jacob
University of 
Maryland 
(Research I)
CMSC 434 Human Factors in Computer and Information Systems http://www.inform.umd.edu/TT/ 
Schedules/Classes/spr97/CMSC434/ 
syllabus.html
Prof. Ben Shneiderman
University of Minnesota 
(Research I)
CSCI 5111 User Interface Design, Implementation and Evaluation http://www.itlabs.umn.edu/classes/Spring1998/ 
csci5111//
Prof. Joseph Konstan
University of Oklahoma 
(Research II)
CS 3053 Graphical User Interfaces http://www.cs.ou.edu/~cs3053 http://www.ecn.ou.edu/~cs3053 Prof. John M. Canning
University of Oregon 
(Research II)
CIS 443 User Interfaces http://www.cs.uoregon.edu/classes/cis443/ Prof. Sarah Douglas
Worcester Polytechnic Institute 
(Doctoral II)
CS 3041 Human Computer Interaction http://cs.wpi.edu/~ifc/courses/CS3041/ (also ~dcb and ~matt) Prof. I. F. Cruz 

Table II Undergraduate GUI Implementation Courses

This course must have design content to inform the interfaces that are implemented. The Web pages listed in Table II and other resources given below will help in the design process. The course could also expose students to user-centered and task-centered design (Lewis and Rieman, 1993) using prototypes and interactive design. These will be new design paradigms for most of our students. Brief exposure to ethnographic studies would also broaden the students' background.

Few faculty in computer science have experience building GUIs. The resources included in this paper are meant to help faculty with limited experience to teach such a course. All copyrights, explicit and implied, should be complied with in using any of this material.
 

GUI IMPLEMENTATION COURSE RESOURCES (PRINTED MATERIAL)
While entire technical societies (ACM Special Interest Group on Human Computer Interaction), conferences (Conference on Human Factors in Computer Systems, 1982 through 1997, sponsored by ACM SIGCHI), and journals (ACM Transactions on Computer Human Interaction) have considerable emphasis on graphical user interfaces, few articles have been published on their implementation in undergraduate courses. On the other hand, there is a plethora of material available to support such a course as the following paragraphs show.

One of the few papers on undergraduate GUI implementation courses (Pausch, 1992), emphasizes the problems faced by undergraduates in building user interfaces. They present an interface building kit (SUIT, Simple User Interface Toolkit) of their own and have made it available. While this system is a simple platform for building interfaces, its use does not prepare students for building real systems. In 1992, students did not have C++ in their repertoire, so C was the basis of SUIT. Now, students do know C++ and can use systems based on the object-oriented model, using either C++ or Java.

There are quite a few older systems such as Tcl/Tk (Ousterhout, 1994), Garnet (Myers et al, 1990), and Andrew (Palay et al, 1988). Most course bypass these in favor of the more general, flexible, modern systems listed above. Using Tcl/Tk may be the fastest way to build an interface, but does not meet our general requirement that the language enhance the students' programming skills.

Although many schools have undergraduate courses in human computer interaction, they have generally followed the model of graduate courses. They often consist of reading papers and, perhaps, presenting a paper project. This type of class has considerable academic merit and has become accepted. A set of texts has been published to support this type of class. These include (Baecker, et al., 1995), (Newman and Lamming, 1995), (Zetie, 1995), (Eberts, 1994), (Preece et al., 1994), (Dix, et al, 1993), (Barfield, 1993), (Hix and Hartson, 1993), (Lewis and Rieman, 1993), (Mayhew, 1992), (Adler and Winograd, 1992), (Shneiderman, 1998), and (Laurel, 1990). While these courses could include building an actual interface, most texts contain more than enough material to support a course with no time remaining for implementation.

Two of these texts could be used in an undergraduate GUI implementation course. They are (Zetie, 1995) and (Lewis and Rieman, 1993). They focus on graphical user interfaces and are succinct enough for students to read them quickly and then apply the ideas to actual interfaces. Other such texts may appear in the future.

Several other texts stand out as useful background material for interested students. These are (Cooper, 1995), (Borenstein, 1991), and (Norman, 1988). These texts are entertaining, opinionated, and thought provoking. Norman, especially, has become a staple in many varieties of human computer interaction courses. A book for people seriously interested in the graphical design of GUIs is (Mullet, 1995). These books are excellent candidates for library purchase.

Usually the basic required text in this course is a Java language text that has some emphasis on graphical user interfaces. Many of these are now available. Candidates include (Deitel and Deitel, 1998) and (Cornell and Horstmann, 1997). The publishing industry has discovered Java and many more texts are available or on the way. There are also a variety of C++ texts. If Amulet were used, the Amulet manual (Myers, 1996a) would be used to augment a C++ text.

Graphical user interface implementation is also supported by a variety of texts that will be useful in the library. These include (Collins, 1995), (Lee, 1993), and (Bass and Coutaz, 1991). Interface guidelines such as (Microsoft, 1995), (Apple, 1992a,b), and (OSF 1991), have also been published and will be useful library references.
 

GUI IMPLEMENTATION COURSE RESOURCES (ADDITIONAL ONLINE MATERIAL)
The courses listed in Table II are excellent sources of information on undergraduate GUI implementation courses. Some of the most recognized names in user interfaces have put their courses on the Web. Unfortunately, the Web resources in Table II will probably be soon out of date.

A very promising system from academe is Amulet V3.0, a much changed version of Amulet V2.0 (Myers, 1997; Myers, et al, 1996a, b). This system is C++ based and run on PC, Macintosh, and UNIX systems. Amulet V3.0 is especially attractive due to its direct manipulation capability. Information about and manuals for Amulet V3.0 are available on the Web at http://www.cs.cmu.edu/~amulet/.

The World Lecture Hall ( http:/www.utexas.edu/world/lecture/ ) is an excellent, up to date, Web resource with links to a variety of computer science courses including GUI courses.

Some Web sites of more general interest are listed in Table III.
 
 GUI and HCI Web Sites http://cs.fit.edu/courses/cse4257/sites/sites.html
Human-Computer Interface http://www.usernomics.com/hci.html
Gary Perlman's Home Page http://www.acm.org/~perlman/
HCI Reading List (Sears, 1997) http://www.depaul.edu/~asears/hci/readings.html
ACM SIGCHI Home Page http://www.acm.org/sigchi/
Table III Other, more general, online resources for GUI courses.

Most of these online resources contain links to other resources. They are the first strands that can be followed into a significant web of material.

GUI IMPLEMENTATION COURSE RESOURCES (SOFTWARE)

The availability of commercial software for this course is a primary reason for its being teachable at the undergraduate level. At this time, Java is probably the primary language considered for the course. Symantec Café and Microsoft J++ both have visual building tools allowing interfaces to be sketched out fairly easily. Microsoft Visual Basic probably has the easiest interface building system. Visual Basic does keep the programmer in the event-driven, object-oriented world, without requiring the level of expertise required if Java or C++ is used. On the other hand, most computer scientists do not consider Visual Basic to be an implementation language. It will not give students generalizable skills.

We only considered the use of C++ with Amulet V3.0. The use of Microsoft Visual C++ with Microsoft Foundation Classes (MFC) seems overly complex, considering the availability of Java and Amulet V3.0. For students with considerable C++ expertise, using Visual C++ with MFC could be a possibility.

The future of Java is difficult to predict at this time. Microsoft and Sun may have incompatible products in the future.

In general, it does seem that commercial and/or academic software for GUIs will continue to be available.
 

SUMMARY
Resources are plentiful for undergraduate GUI implementation courses. These resources exist both in standard print media and on the Web. Actually, the very nature of these courses leads to their having documentation on the Web. In some cases, entire courses with syllabi, notes, assignments, and projects are available.

The purpose of this paper is to present material to help faculty members who are considering offering GUI courses. The resources represented here will have various life spans. Some will be out of date tomorrow and others may be around for years. It is hoped that these resources will be of aid to others.

Faculty knowing of other relevant resources are encouraged to contact the author. Any additional resource citations will be placed on the author's Web page.
 

REFERENCES
Adler, Paul S. and Terry A. Winograd. Usability: Turning technologies into tools. Oxford University Press, 1992.

Apple Computer, Inc. Macintosh Human Interface Guidelines. Addison-Wesley, 1992.

Apple Computer, Inc. Human Interface Guidelines: The Apple Desktop Interface. Addison-Wesley, 1992.

Baecker, Ronald M.; Jonathan Grudin, William A. S. Buxton, and Saul Greenberg. Human-Computer Interaction: Toward the Year 2000, 2nd ed., Morgan Kauffman, 1995.

Barfield, Lon. The User Interface: Concepts & Design. Addison-Wesley, 1993.

Bass, Len and Joelle Coutaz. Developing Software for the User Interface. Addison-Wesley, 1992.

Borenstein, Nathaniel S. Programming as if People Mattered. Princeton University Press, 1991.

Collins, Dave. Designing Object-Oriented User Interfaces. Benjamin/Cummings, 1995.

Cooper, Alan. About Face: The essentials of user interface design. Programmers Press, IDG Books Worldwide, 1995.

Cornell, Gary and Cay S. Horstmann. Core Java, 2nd edition. SunSoft Press (a Prentice-Hall title), 1997.

Deitel, H.M. and P.J. Deitel. Java: How to program, 2nd edition. Prentice-Hall, 1998.

Dix, Allen; Janet Finlay, Gregory Abowd, and Russell Beale. Human-Computer Interaction. Prentice-Hall, 1993.

Eberts, Ray E. User Interface Design. Prentice-Hall, 1994.

Hix, Deborah and H. Rex Hartson. Developing User Interfaces: Ensuring usability through product & process. Wiley, 1993.

Laurel, Brenda (ed.). The Art of Computer Interface Design. Addison-Wesley, 1990.

Lee, Geoff. Object-Oriented GUI Application Development. PTR Prentice-Hall, 1993.

Lewis, Clayton and John Rieman. Task-Centered User Interface Design: A practical introduction. Shareware available via anonymous ftp from ftp.cs.colorado.edu.

Mayhew, Deborah J. Principles and Guidelines in Software User Interface Design. Prentice-Hall, 1992.

Microsoft Corp. The Windows Interface Guidelines for Software Design. Microsoft Press, 1995.

Minasi, Mark. Secrets of Effective GUI Design. Sybex, 1994.

Mullet, Kevin and Darrell Sano. Designing Visual Interfaces. SunSoft Press, a Prentice-Hall title, 1995.

Myers, Brad A. and Richard G. McDaniel, Robert C. Miller, Alan S. Ferrency, Andrew Faulring, Bruce D. Kyle, Andrew Mickish, Alex Klimovitski and Patrick Doane. "The Amulet Environment: New Models for Effective User Interface Software Development." IEEE Transactions on Software Engineering, Vol. 23, no. 6. June, 1997a. pp. 347-365

Myers, Brad A. and Richard G. McDaniel, Robert C. Miller, Alan Ferrency, Ellen Borison. "The Amulet User Interface Development Environment (video abstract)." CHI'97 Conference Companion: Human Factors in Computing Systems. Atlanta, GA. March 22-27, 1997b. pp. 214-215.

Myers, Brad A.; Alan Ferrency, Rich McDaniel, Robert C. Miller, Patrick Doane, Andy Mickish, and Alex Klimovitski. The Amulet V2.0 Reference Manual. Carnegie Mellon University School of Computer Science Technical Report, no. CMU-CS-95-166-R1 and Human Computer Interaction Institute Technical Report CMU-HCII-95-102-R1. February, 1996.

Myers, Brad A.; and Mary Beth Rosson. "Survey on User Interface Programming." Human Factors in Computing Systems, pp. 195-202. Proceedings SIGCHI ’92, Monterey, CA, May, 1992.

Myers, Brad A.; Dario Giuse, Roger B. Dannenberg, Brad Vander Zanden, David Kosbie, Ed Pervin, Andrew Mickish, and Philippe Marchal. "Garnet: Comprehensive support for graphical, highly interactive user interfaces." IEEE Computer 23(11), pp. 71-85, November, 1990.

Newman, William M and Michael G. Lamming. Interactive System Design. Addison-Wesley, 1995.

Norman, Donald A. The Design of Everyday Things. Currency, Doubleday, 1988.

Olsen, Dan R. User Interface Management Systems. Morgan Kaufmann, 1992.

OSF (Open Software Foundation). OSF/Motif Style Guide, Release 1.1. Prentice-Hall, 1991.

Ousterhout, John K.. Tcl and the Tk Toolkit. Addison-Wesley, 1994.

Palay, Andrew, et al. "The Andrew Toolkit: An Overview." Proceedings of the USENIX Technical Conference, 1988.

Pausch, Randy; Matthew Conway, and Robert Deline. "Lessons learned from SUIT, the simple user interface toolkit." ACM Transactions on Information Systems, Vol. 10, No. 4 (Oct. 1992), pp. 320-344.

Preece, Jenny Yvonne Rogers, Helen Sharp, David Benyon, Simon Holland, and Tom Carey. Human-Computer Interaction. Addison-Wesley, 1994.

Sears, Andrew. HCI Reading List. Available on the Web at URL: http://www.depaul.edu/~asears/hci/readings.html. August 18, 1997

Shneiderman, Ben. Designing the User Interface: Strategies for effective human-computer interaction, 3rd. edition. Addison-Wesley, 1998.

Zetie, Carl. Practical User Interface Design. McGraw-Hill, 1995.