CS4984 - Intro to GUI Programming & Graphics
Fall 2008, CRN 97649
MW 4:00pm, Architecture Annex 109
|
|
|
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
- Ammeraal, L. and Zhang, K., Computer Graphics for Java Programmers,
Wiley, 2007.
Optional References
- Bruce, K., Danluk, A.P., and Murtagh, P., Java, an Eventful Approach,
Prentice Hall, 2005.
- Liang, Y.D., Introduction to Java Programming, Prentice Hall, 2009.
- Schreiner, D., Woo, M., and Neider, J., OpenGL Programming Guide, Addison Wesley,
2007.
Course Outline
| Introduction to GUI programming | 10% |
- 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 programming | 15% |
- 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 interfaces | 15% |
- 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 Planes | 15% |
- 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
-
- 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
-
- 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 Tesselation | 10% |
- Triangulating a polygon
- Bezier curves
- B-splines
| Scan Conversion and clipping | 10% |
- Bresenham algorithm
- Antialiasing
- Polygon scan conversion
- Cohen-Sutherland clipping
- Sutherland-Hodgman clipping
-
- Color systems
- Opacity and transparency
- Specifying color
- Texture mapping