Prof. Bederson CMSC 427 - Syllabus
Home
Contact
Syllabus
Homeworks
Grades
Links

Class Texts:

Interactive Computer Graphics: A top-down approach with OpenGL, 2nd Edition by Edward Angel ISBN: 020138597X  [Addison-Wesley, 1999].

Learn Microsoft Visual J++ 6.0 Now by Ingalls and Jinguji  ISBN: 1572319232 [Microsoft Press, 1998] (Free for registered students - donated by Microsoft)

Recommended Further Readings:

Opengl 1.2 Programming Guide, 3rd Edition : The Official Guide to Learning Opengl, Version 1.2
by Mason Woo, et. al. [Addison-Wesley, 1999].  (the "red book")

Opengl Reference Manual, 3rd Edition : The Official Reference Document to Opengl, Version 1.2
by Dave Shreiner [Addison-Wesley, 1999].  (the "blue book")

Electronic Resources:

Class Home Page: http://www.cs.umd.edu/~bederson/classes/cmsc427
Class Mailing List: cmsc427@cs.umd.edu

A Warning to the Consumer:

This is a very programming intensive course. In addition to the midterm and final exams, there will be regular written and programming assignments including one group project. Some will be very hard and/or time intensive.  In addition, this class requires that you do all your programming in Java, and we will not learn Java in class.  We will touch on the basics, but you will be expected to learn Java on your own.

Prerequisites:

MATH 240 (Linear Algebra) and either CMSC 420 (Data Structures) or CMSC 251 (Algorithms). Knowledge of Java programming or the willingness to learn it on your own. We will be using plenty of algebra, linear algebra (vectors, matrices, dot products, cross products, etc.) and a little trigonometry. The programming environment that will be required is Java on Windows with Microsoft Visual J++ and OpenGL.  You are not expected to know Java coming into this class, but you will be expected to learn it on your own.

Requirements:

There will be a midterm and a final exam. There will be several programming and written assignments. In addition, there will be a final group project. Your group will define the details of the final project which I will only generally specify. Your final grade will be computed using these contributions:

30% Homeworks
20% Final Project
20% Midterm
20% Final Exam
10% Participation/Attendance

Collaborations:

All class work (except for the group project) is to be done independently. You are encouraged to discuss class material, homework problems, and general solution strategies with classmates, but when it comes to formulating/writing/programming solutions you must work alone. Instances of academic dishonesty will be dealt with harshly.

The final project will be a group project. I will assign groups with your input.  Each group will have 3-4 people, and it is up to each group to figure out the best way to work together. This will certainly include group meetings and a lot of discussion amongst yourselves. You may choose to have individuals write different sections of code which are merged together, or have some groups of people write code together. In addition to the group submission, each group member will have to turn in a (private) evaluation of the group as a whole as well as an evaluation of each group member.

Programs:

Each assignment will be evaluated electronically, but you must also turn in a paper write-up. This write-up should include a brief description of what you did, how you did it, and any instructions on running or using your program. You should include a description of an overview of your code to explain its structure. Finally, include a description of any design trade-offs you made. I will describe how to electronically submit your source code and executables before the first assignment is due.

There is more to a program than just getting it to work. As important as its correctness is its usability, design, efficiency, and readability. This is always important, but all the more so for this class since you will be working with groups. Programs will be graded as described below.

It is very good programming practice to document and organize your programs in such a way that you will be able to pick them up in the future and read them. At least as important for this class is that the grader be able to read them. Your grade will depend partially on your program's comments and readability. Because this is a graphics class, the visual presentation of your program is part of your success. If you write a graphics program that implements the algorithms correctly, but have small ugly examples with a bad user interface, this will count negatively. Each program will be graded according to this plan:

Comments and Readability

20%

Graphical output and interface

20%

Correctness

60%

Computing Facilities:

Programming assignments will be carried out on Windows machines running Microsoft Visual J++ 6.0.  You will have access to the new Computer Science teaching lab in 4140 AVW.  This has 18 new Windows machines on the WAM network.  You may also be able to use other WAM PCs around campus.  In addition, registered students will be given a free copy of Microsoft Visual J++ (donated by Microsoft) to install on their home PC.

All class assignments must be written in Java for Visual J++ 6.0.   (Disclaimer: I decided to use Microsoft Visual J++ first in the new CS lab, and then Microsoft offered to donate the books and software.  I am requiring its use for ease of grading and sharing between groups.)

Schedule (approximate)

(Week 1)
Feb 1, 3

Introduction

History, graphics systems, Java

READ: Angel - Chapter 1
Mount - Graphics Systems & Models
Visual J++ - Ch. 1, 2, 3

(Week 8)
Mar 28, 30

Lighting

=> DUE: Hw #7 (Mar 28)

Form final project groups (Mar 30)
DON'T MISS CLASS

READ: Angel - Chapter 6
Mount - Shading, Lighting & Viewing in OpenGL

(Week 2)
Feb 8, 10

Rasterization, antialiasing

=> DUE: Hw #1 (Feb 8)

READ: Angel - Chapter 7
Mount - Scan conversion of lines, polygons
Visual J++ - Ch. 4, 5

(Week 9)
Apr 4, 6

=> Midterm (Apr 4)
Apr 6: Guest Lecture - Prof. Dave Mount

(Week 3)
Feb 15, 18

Clipping, color basics, dithering

=> DUE: Hw #2 (Feb 15)

READ: Visual J++ - Ch. 8, 9, 10

(Week 10)
Apr 11, 13

Hidden surface removal

=> Project Proposal Due (Apr 11)

READ: Mount - Hidden surface removal

(Week 4)
Feb 22, 25

OpenGL

=> DUE: Hw #3 (Feb 22)

READ: Angel - Chapter 2, 3
Mount - Intro to OpenGL
Magician Programmer's Guide
Visual J++ - Ch. 11

(Week 11)
Apr 18, 20

Surface mapping

READ: Angel - Chapter 9
Mount - Surface Mapping

(Week 5)
Feb 29, Mar 2

Geometry, Coordinate Systems

=> DUE: Hw #4 (Feb 29)

READ: Angel - Chapter 4
Mount - Geometry, Coord Systems

(Week 12)
Apr 25, 27

Curves

=> Proj. Midpoint Due (Apr 25)

READ: Angel - Chapter 10
Mount - Curves & Surfaces

(Week 6)
Mar 7, 9

Transformations, Animation

=> DUE: Hw #5 (Mar 7)

READ: Mount - Affine Transforms, Angles

(Week 13)
May 2, 4

Ray-tracing, Radiosity

READ: Mount - Ray Tracing

(Week 7)
Mar 14, 16

Perspective, Hierarchies

=> DUE: Hw #6 (Mar 14)
=> DUE: Grad Proposal (Mar 16)

READ: Angel - Chapter 5, 8
Mount - Perspective

(Week 14)
May 9, 11

=> Final Project Due (May 9)

Final Project Presentations in 4140 AVW

March 20 - 26
Spring Break

 (Week 15)
May 16

Review for Final

Saturday, May 20
10:30 - 12:30 Final Exam