CMSC 437/691C
Graphical User Interface Programming


Tuesday & Thursday 5:30-6:45 PM, ACIV 150
Fall 1996


Instructor: Prof. Russell Turner
Office:ECS 213
Office Hours:TBA
Telephone:455-3965 (Office), 455-3500 (Department)
E-Mail: turner@cs.umbc.edu

Teaching Assistant: Ian Soboroff
Office:ECS 215
Office Hours:Monday & Wednesday, 5-6 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 435 / 635 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 using X Windows and OSF/Motif, and OpenGL. Motif is the standard GUI toolkit for Unix, while OpenGL is an emerging 2D and 3D graphics rendering standard. Graphical user interfaces are taken here 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 techniques used to implement such applications. In addition, it will briefly review some of the larger issues, history and future directions of programming graphical user interfaces. While the primary emphasis of the course is on 2D interfaces, there will be a short introduction to some of the 3D capabilities of OpenGL as well as a discussion of 3D interaction and virtual reality. Some time will be spent discussing 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.

Projects

There will be five 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; and the last uses OpenGL to introduce you to 3D graphics programming. Although it is not required, we recommend that you use C++ rather than C since so many of the concepts in GUI programming are object-oriented in nature. We also suggest that you use good software design principles, so that you will be able to effectively re-use your code from each previous project.

Grading

There will be 5 projects worth 12 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
Graduate and undergraduate courses will be curved seperately. 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.

Exams

The exams will be closed-book and closed-notes. The midterm exam will be in class on Tuesday 10/15. The final exam, on Tuesday 12/17 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.gl.umbc.edu/~ian/guipF95 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: 3 September 1996
Ian Soboroff -- ian@cs.umbc.edu