CMSC 437
Graphical User Interface Programming


Tuesday & Thursday 5:30-6:45 PM
ACIV 015
Spring 1997


Instructor: Prof. Russell Turner
Office:ECS 213
Office Hours:Tursday & Thursday, 3-4 PM
Telephone:455-3965 (Office), 455-3500 (Department)
E-Mail: turner@cs.umbc.edu

Teaching Assistant: Ian Soboroff
Office:ECS 215
Office Hours:Tuesday & Thursday, 4-5:15 PM
Telephone:455-3554 (Office), 455-3500 (Department)
E-Mail: ian@cs.umbc.edu

Course Information

Textbooks

There are several other texts on reserve in the library; these and other helpful resources are listed under the Readings page.

Prerequisites

CMSC 341 and Math 221, i.e. an ability to program well in C using data structures, as well as math skills such as trigonometry, vectors, matrices, and analytic geometry. Highly recommended but not (yet) required is some background in object-oriented design/programming. This course is a parallel track to the CMSC 435 graphics course and can be taken before or after it.

Description

This is a practical, hands-on course in how to program interactive 2D graphical user interfaces. An in-depth introduction to the X11/Motif user-interface toolkit will be given, as well as an overview of the Java AWT. Graphical user interfaces are taken to mean not just standard widget sets but also a variety of interactive, pointer-based techniques that comprise the modern desk-top interaction metaphor. Therefore, this course will also cover some of the concepts and software architectures used to implement such applications. In particular, it will introduce some of the object-oriented design principles, patterns, and frameworks that have been used by graphical user-interface programmers over the years. In addition, it will briefly review some of the larger issues, history and future directions of programming graphical user interfaces.

Some time will be spent discussing user-interface (as opposed to software) design issues and building "good" interfaces, but this is not the primary focus of the course; students interested in these subjects are directed towards IFSM 498A and IFSM 760.

Note: This is the first time that this has been taught as an undergraduate-only course. The material on 3D interaction and virtual reality from previous semesters will from now on be covered in a separate graduate level course, CMSC637, in the Fall semester.

Projects

There will be four programming projects. One is meant to get you started with X/Motif programming; the next three build on each other to culminate in a final drawing editor application. Except for the first project, you are free to use either Java/AWT, or X/Motif. Although it is not required, we recommend that you use C++ or Java since so many of the concepts in GUI programming are object-oriented in nature. We also suggest that you use good software design principles, including some of those introduced in the course, so that you will be able to effectively re-use your code from each previous project.

Grading

There will be 4 projects worth 15 points each for a total of 60 points, a midterm exam and a final exam worth 20 points each. Attendance at lectures is not mandatory, but is highly advised since a good deal of material is not covered in the textbooks. The grading emphasis is on the programming projects, and a majority of the exam questions will be based on material directly related to the projects. Your final letter grade may be curved above the standard formula:
0-59 F
60-69 D
70-79 C
80-89 B
90-100 A
Under no circumstances will the grades be curved downward.

Project Submission and Grading

Projects will be submitted electronically using the submit utility. Late submissions will be penalized by subtracting out 10% of the project's value per day, pro-rated to fractions of days. Projects are due by midnight of the due date. Each project will be graded 70% on user functionality and 30% on sofware design and documentation. Commented grading forms for each project will be sent by e-mail to the individual students, and we will periodically send out summaries of grades to date.

Extra Credit

Some projects may include options for achieving extra credit. These additional features are usually important and interesting aspects of an applications' design, but which are slightly advanced and would be out of place as project requirements. Examples of typical extra credit features are undo commands and context-sensitive help screens.

To receive any extra credit, all base functionality of a project must be implemented; extra credit portions of a project can not count in place of required features. Extensions will not be given for completion of extra credit. Finally, we reiterate that grades will not be curved downward, and you will never be penalized for not doing extra credit!

Exams

The exams will be closed-book and closed-notes. The midterm exam will be in class on Thursday, March 20th. The final exam, on Thursday, May 15th, at 6:00 PM, will be comprehensive and will therefore cover material from the entire semester.

Resources

You will have several resources available to you for this course. In addition to the lectures, the UCS Silicon Graphics Machines on which you will be doing your projects, and the textbooks, there will be sample code from the books (~ian/pub), class notes, instructor and TA office hours, WWW pages, a newsgroup, and some reserve readings at the library. You should also look at the on-line documentation available on the SGIs; several references are available through insight, and there are manpages for all X and OpenGL functions. For more complete and up-to-date information about the course resources, see the course web page at http://www.cs.umbc.edu/~ian/guipS97 or via my home page.

Academic Honesty

All projects must be completed by your own individual effort. You should never have a copy of someone else's project either on paper or electronically and you should never give a copy of your project, either on paper or electronically, to another student. Copying from other student's exams during examinations is not permitted and will be dealt with harshly. In all other respects, you are encouraged to help each other study and work on the projects. You are also permitted to "re-use" code from the book examples (only), so long as you attribute it.


Last Updated: 28 January 1997
Ian Soboroff -- ian@cs.umbc.edu