CS4984 - Intro to GUI Programming & Graphics
Fall 2008, CRN 97649
MW 4:00pm, Architecture Annex 109

Class Materials URL: http://pixel.cs.vt.edu/courses/cs4984.html

Instructors

R.W. Ehrich, KW2 129, Office Hours: Tu, Th 4:00-5:00 in McB 636, or by appointment (1-5420)
D. Gracanin, KW2 135, Office Hours: Tu, Th 4:00-5:00 in McB 636, or by appointment (1-2060)
Shaimaa Lazem, Office Hours: Tu 8:30-12:30 in McB 106, or by appointment

Objectives

Computer graphics has become such a large and important field that it is difficult to do it justice in a single semester. Accordingly, computer graphics has been split into a two course sequence. Depending on one's perspective, the implementation of graphical human-computer interfaces is an issue both in HCI and in graphics. Accordingly, GUI implementation has been merged in this course with fundamental topics in computer graphics that will no longer be covered in the former CS 4204 course.

This course is the initial offering of CS 3744, Introduction to GUI Programming and Computer Graphics. It will become but is not now a prerequisite course for Computer Graphics 2 (CS 4204) and corequisite for Intro to HCI (CS 3724) in the undergraduate HCI track. Since the design of geometric models is fundamental to computer graphics, CS 2984/2114 will be a prerequisite. During the transition, CS1705 will be an acceptable prerequisite. The course also covers linear algebra and 2D geometry relevant to computer graphics and is intended to parallel and supplement the more theoretical development presented in the freshman mathematics courses.

The two principal components of the course are graphical interface development in Java Swing and OpenGL and two-dimensional computer graphics. The GUI part will cover basic event driven programming techniques and user interface design patterns as well as design and implementation of new user interface components. GUI components and categories (basic controls, information displays, containers, layouts) will be discussed to explain user interface design and implementation steps. Program assignments will use the Java Swing toolkit to apply the concepts discussed in the class.

The computer graphics part will cover coordinate systems and affine transformations, line and polygon geometry, rendering, curves and splines, structured graphics, texture mapping, and color. Program assignments will use the Java OpenGL bindings and will have interaction components implemented in Java Swing.

Since this is the first offering of this course and for the CS prerequisite course, substitutions for CS 2114 will be accepted with the permission of the instructor.

Grading

The semester grade will be based upon assignments issued in class (25%), two midterms (15% each), a comprehensive final examination (20%), and a final project (25%) based upon the semester's work. 25% credit per day will be deducted from late homework.

Homework

Homework assignments will be posted on the class web page and will be due by midnight on the assigned dates. NO LATE HOMEWORK MAY RECEIVE FULL CREDIT unless by prior approval. All work submitted for a grade must be the student's own work. If you have a question about the grading of an assignment or an exam, you should speak with your GTA within a week after the assignment is returned.

Exams

GUI Midterm, Wednesday, October 1
Graphics Midterm, Wednesday, November 19
Comprehensive Final, Tuesday, December 16, 3:25pm - (NOTE: Classes end Wednesday, December 10)

No missed exams will be accepted unless by prior approval. All exams are closed-book exams. The final covers all the material in the course.

Ethics

The Honor Code will be strictly enforced. It is a violation to represent joint work as your own or to let others use your work; always acknowledge any assistance you received in preparing work that bears your name. You are expected to work independently unless explicitly permitted to collaborate on a particular assignment. It is not a violation to discuss approaches to problems with others; however, it IS a violation to use wording, expressions, or code in your assignments that have been written by others without acknowledging the source.

Prerequisites

CS 2984/2114 (Software Design and Data Structures) and Math 1224 (Vector Geometry). CS 1705 will be acceptable in lieu of CS 2984/2114 this semester only.

Text

Optional References

Course Outline

Introduction to GUI programming10%
Brief history of GUI
GUI definition and characteristics
WIMP paradigm
An overview of Java Foundation Classes and Swing
Swing and Eclipse Integrated Development Environment
GUI widget/component structure
Containment hierarchy, containers and components
GUI layout principles and layout management
Using Swing components
Typical Swing GUI program

Event-driven programming15%
Events and event types
Event loop and event processing
Event-driven programming
Event listeners
Event frameworks
Concurrency
Custom events
Event handling in Java
Common event-handling problems

Creating user interfaces15%
GUI design patterns
Model-View-Controller pattern
Basic usability and accessibility issues
Interface-building tools
Swing GUI components and 2D graphics
OpenGL and GUI development

Pixels, Lines, Polygons, and Planes15%
Coordinate systems (physical and logical)
Right-handed and left-handed coordinates
Pixels and connectivity, pixel depth
Raster, frame buffer, single & double buffering
Showing a basic object in AWT and in OpenGL
Lines and line representations
Line intersections
Distance of point to line
Projection of point on line
Planes and plane representations
Plane - line intersections
Polygons: simple, convex, concave
Polygon edge orientations
Polygon interiors
Polygon area
Linear interpolation

Vector Geometry5%
Vectors vs lines
Perpendicular vectors
Vector sums and differences
Angle between vectors
Inner products
Cross products
Vector and affine spaces
Convex and affine sums
Coordinate frames

Transformations15%
Linear transformations
Homogeneous coordinates
Determinants
Matrix concatenation, inversion, transpose
Matrix equations vs simultaneous equations
Basis and change of basis
World, screen, and model coordinates
Transformation pipeline
2D viewing
Structured graphics, stacking

Curves and Tesselation10%
Triangulating a polygon
Bezier curves
B-splines

Scan Conversion and clipping10%
Bresenham algorithm
Antialiasing
Polygon scan conversion
Cohen-Sutherland clipping
Sutherland-Hodgman clipping

Color and texture5%
Color systems
Opacity and transparency
Specifying color
Texture mapping