Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

Last update 2008-07-01, latest changes marked in red

Computer Graphics
Required subject for the bachelor's program Medienformatik
Required optional subject for the bachelor's program Digitale Medien
6 credits

Summer semester 2008

Lecture: Thu 1.30 – 3:00 p.m., I117, starting 27 March
Lab (mandatory): Thu 9:45 a.m. – 1 p.m., I220, every 14 days in two interleaved groups A and B
Tutorial (optional): Thu 3:15 – 4:45 p.m., I220, every 14 days in two interleaved groups A and B
See below for the detailed schedule.

If you plan to attend this course, please send me (Jörn Loviscach) an e-mail so that I can compile a mailing list. Excellent students may use this course to prepare a poster for a scientific conference. Please contact me in advance if you want to do so.

Syllabus: This course presents an overview of basic algorithms and methods in the field of computer graphics (GUIs, 2D, 3D, animation), presented in their current implementations as mirrored in APIs, development tools, and application software. Secondary objectives of this course are to deepen the students' understanding of what constitutes good software design and to improve their skills in debugging. The lectures will be given in English with a translation of more complex parts into German.

Prerequisites: foundations of analysis and linear algebra; basic software development skills in a language such as Java (programs involving five or more proprietary classes, file I/O, and threads)

Lecture notes: available online the day before the lecture, see the folder next to this HTML page

Recommended books: There is a plethora of great free material on the Web. If you look for a comprehensive book, try out Shirley et al.: Fundamentals of Computer Graphics, Second Edition, ISBN 1-56881-269-8 (the best book I know on this topic) and Brill & Bender: Computergrafik, ISBN 3-446-22150-6. For questions concerning programming style consult McConnell: Code Complete 2, ISBN 0735619670.

Lab: The assignments for the lab are both a vital learning method of this course and its sole method of grading. They can (and should) be worked on in teams of two persons. You may work on your own, but not in a team of three or more persons or more. In the lab, I'll talk with you about your solution, not only to give hints but also to check the contribution of each member of a team.

I recommend that you collect information from everywhere. But I expect everybody to understand the program he or she submits. Any material (text, code, images, sounds, etc.) that you did not create on your own has to be clearly declared as such. In the assignments, you will achieve a better grade with self-developed material, even though in later business and research practice you would of course strive to reuse somebody else's work.

Attendance to the lab is mandatory, with the typical exemptions such as illness. Note that most of the work has to be done at home nonetheless (6 credits = 180 hours of work). You may also use the computer graphics lab when there are no classes.

Assignments are to be submitted via e-mail. According to the regulations, you need to include source code and executable files plus substantial documentation:

I prefer to receive the documentation in lean HTML or PDF. It is ok to use hand-drawn diagrams; you may practice using drawing programs elsewhere. If you cannot do without some kind of word processor, I recommend OpenOffice.org or (even better) some form of LaTeX.

I'll grade every assignment with zero to three points, namely the lowest point number resulting from the following categories:

Points

Solution of Problem

Structure

Naming

Comments

Documentation

0

vital part missing

spaghetti

muddled

virtually no comments

important part(s) missing

1

mostly complete, but for instance erroneous behavior in important exceptional cases

some logical problems, no defensive programming

partially confusing

every class and every non-trivial method explained with comments that are automatically extractable (in the context of C# that means XML)

mostly complete, but for instance not covering important problems or gaps

2

complete up to minor gaps

basically object-oriented, basic defensive programming

comprehensible

in addition: explanations of code that cannot be understood on first linear reading (If there are no difficult-to-read passages in the code, that's even better!); do not comment every single line

virtually complete

3

complete

clean classes built using design patterns; defensive programming; instrumented code (e.g., asserts, exceptions, log files)

self-explanatory

in addition: comments describing vital algorithms in brief

exhaustive

If you achieve three points in every category and if your solution clearly exceeds the original task in features, structure, or documentation, you are awarded four points instead.

If you achieve one point for every assignment, your total mark will be 4.0 (sufficient). If you achieve four points for every assignment, your mark will be 1.0 (excellent). The results of the three assignments will enter the final grade with equal weights.

Schedule

Thu, 27 Mar

Lab A: introduction to C#, .NET, Windows Forms, WPF, and Visual Studio .NET

Thu, 27 Mar

Visual Computing in a nutshell: GUIs, image manipulation/processing, 2D vector graphics, modeling, animation, behavior, rendering (z-buffer, ray tracing, etc); human visual system; color spaces

Thu, 27 Mar

Tutorial B: modeling with Cinema 4D

Thu, 3 Apr

Lab B: introduction to C#, .NET, Windows Forms, WPF, and Visual Studio .NET

Thu, 3 Apr

Event-driven programming; 2D graphics programming with GDI+ and WPF in .NET; double buffering

Thu, 3 Apr

Tutorial A: modeling with Cinema 4D

Thu, 10 Apr

Lab A: Assignment 1 (Event-driven programming)

Thu, 10 Apr

Vector graphics; Bézier curves, B-spline curves; file formats

Thu, 10 Apr

Tutorial B: modeling with Maya

Thu, 17 Apr

Rescheduled to 10 July, see below. I'm off to the Eurographics conference.

Thu, 24 Apr

Lab B: Assignment 1 (Event-driven programming)

Thu, 24 Apr

Bitmap graphics; developing Paint.NET plug-ins; antialiasing, interpolation

Thu, 24 Apr

Tutorial A: modeling with Maya

Thu, 1 May

Labor Day

Thu, 8 May

Lab A: Assignment 2 (Bitmap Filter); Assignment 1 due

Thu, 8 May

Introduction to XNA Game Studio

Thu, 8 May

Tutorial B: modeling with Blender

Thu, 15 May

Lab B: Assignment 2 (Bitmap Filter); Assignment 1 due

Thu, 15 May

Data flow on a GPU; z-buffer; using pre-built shader programs; Linear perspective, homogeneous coordinates, composition of transformations, matrices

Thu, 15 May

Tutorial A: modeling with Blender

Thu, 22 May

Lab A: Assignment 2 cont'd

Thu, 22 May

Lighting; diffuse and specular reflection; normals; Gouraud and Phong interpolation

Thu, 22 May

Tutorial B: texturing with BodyPaint 3D

Thu, 29 May

Lab B: Assignment 2 cont'd

Thu, 29 May

3D modeling: explicit surfaces, parametric primitives, representation via vertex and index buffers, Boolean operations

Thu, 29 May

Tutorial A: texturing with BodyPaint 3D

Thu, 5 Jun

Rescheduled to 7 July, see below. I'm off to the NIME conference.

Thu, 12 Jun

Lab A: Assignment 3 (3D); Assignment 2 due

Thu, 12 Jun

3D modeling (cont'd): spline surfaces; subdivision surfaces; metaballs and other implicit surfaces; voxels; points (point-based rendering)

Thu, 12 Jun

Tutorial B: animation with Cinema 4D

Thu, 19 Jun

Lab B:Assignment 3 (3D); Assignment 2 due

Thu, 19 Jun

Texturing: color, bump, displacement, etc.; uv editing; MIP mapping; alpha blending

Thu, 19 Jun

Tutorial A: animation with Cinema 4D

Thu, 26 Jun

Lab A: Assignment 3 cont'd

Thu, 26 Jun

Animation: keyframing, function curves, procedural/behavioral animation

Thu, 26 Jun

Tutorial B: animation with Maya

Thu, 3 Jul

Lab B: Assignment 3 cont'd

Thu, 3 Jul

Animation (cont'd): hierarchical animation, inverse kinematics

Thu, 3 Jul

Tutorial A: animation with Maya

Mo, 7 Jul

11 a.m. - 12:30 p.m., room 122 Global illumination effects (shadow mapping, ray tracing, radiosity and friends); some topics in computer graphics research

Mo, 7 Jul

1:30-4:00 p.m., room 122 (with William Joel) Workshop on Cartoonized User Interfaces

Tue, 8 Jul

11 a.m. - 12:30 p.m., room 122 (Talk by William Joel) Animated Canvases: NPR Techniques in Computer Animation

Tue, 8 Jul

2:00-4:30 p.m., room 122 (with William Joel) Workshop on Cartoonized User Interfaces

Wed, 9 Jul

1:30-4:00 p.m., room 122 (with William Joel) Workshop on Cartoonized User Interfaces

Sun, 27 Jul

Assignment 3 due