CMSC 437
Graphical User Interface Programming
Tuesday & Thursday 5:30-6:45 PM
ACIV 015
Spring 1997
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
- Young, Douglas A. The X Window System Programming
and Applications with Xt, OSF Motif Edition, Second Edition, PTR Prentice
Hall;
- Geary, David M., and McClellan, Alan L. Graphic Java,
SunSoft Press.
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