Prof. Bederson CMSC 498B - Developing User Interfaces - Spring 2002
Home
Contact

Schedule
Homework
Grades
Links

 

This course will introduce students to implementation issues for graphical user interfaces. The goal is to understand the basic software architectures that govern the development of modern graphical user interfaces. Students will write programs in Java and C#. In addition, the basic principles of 2D computer graphics will be covered. 

The goal of this course is to understand the basic mechanisms in interface systems, and not just the details of one specific system. Because of this we will only spend a limited amount of time on particular systems. Students will be taught general concepts and then introduced to the way in which each system implements those concepts. It will be up to the student to find out the details necessary to complete the programming assignments. As a result of this course, students will be able to learn new interface toolkit systems and effectively develop the interface portions of applications.

Visit the Class Wiki

Text: Developing User Interfaces by Dan R. Olsen Jr., Morgan-Kaufmann, 1998.

Other Texts available in CS Library (3164 AVW):

  • Introducing .NET by Conard et. al., Wrox Press Ltd., 2000.
  • Introducing Microsoft .NET by Platt, Microsoft Press, 2001.

Prerequisite: CMSC 434 (Intro to HCI), CMSC420 (Data Structures)

Approximate Course Content:

  • Basic 2D Computer Graphics
    • Coordinate systems
    • Rendering models
    • Image models
  • Programming Systems
    • Java - JDK1.3
    • Emacs
    • C# - Visual Studio.NET
    • Style guidelines
  • Project 1: Graphics - Draw contents of a folder w/ images (Java and C#)
  • Event Handling
    • Windowing systems
    • Main event loop
    • Event dispatching and handling
    • Inter-object communication
  • Project 2: Text Selection (Java)
  • Interaction
    • Model-View-Controller Architecture
  • Widget Toolkits
    • Devices
    • Look & Feel
    • Widgets (Buttons, Scrollbars, Text boxes, etc.)
    • Layout (fixed position, layout managers, struts and springs)
  • Project 3: Build new widget - double-headed scrollbar? (C#)
  • Intermediate 2D Computer Graphics
    • Shape geometry
    • Transformations
    • Homogeneous coordinates
    • Viewing transforms
    • Interacting with geometry (bounds, picking)
  • Project 4: Game - Asteroids? (Java)
  • Design Patterns for Standard Interactions
    • Cut, copy, paste
    • Undo/Redo
    • Macros
  • Project 5: File explorer (C#)
  • Performance Issues
    • Hardware acceleration
    • Display lists, compilation
    • Toolkits vs. custom solutions
  • Web Deployment
    • Applets and ActiveX
    • Server-based applications (asp)

Programming Assignments

There will be approximately 5 individual programming assignments throughout the course. In addition, there will be substantial reading assignments and possibly occasional other exercises.  Each programming assignment will get graded on correctness, and in addition, will also be graded partly based on usability, visual design, and coding style.

Machines

All assignments can be done on the machines of your choice, but the language (and version) will be specified. You are welcome to do the work on a home computer if you have one.  You will get a special WAM account for this class, and can use any WAM machine on campus for your Java work, although you will have to use the Microsoft Lab in 3452 AVW for your C# work (or your home machine).

Grading

All assignments are due at the beginning of the class on the day that they are due. The paper part (if any) must be turned in at class, and the electronic part (if any) must be submitted by the time of the beginning of class. Late assignments will be strictly penalized. Exceptional circumstances will be considered only if discussed with me in advance. All late assignments will have points deducted as follows:

-20% Up to 24 hours late
-50% Up to 48 hours late
-100% More than 48 hours late

Your final grade will be computed using the following contributions:

60% Programming Projects
20% Midterm
20% Final Exam

In addition, you must pass both exam components and assignment components to pass the course.

Academic Honesty

All independent assignments/exams must be done on your own. If you are found to cheat by inappropriately sharing your solution with other students, copying others work, etc. you will get an immediate F for the course, and your case will be sent to the university’s Office of Judicial Programs.