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

Last update 2007-07-11, latest changes marked in red

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

Summer semester 2007

Lecture: Thu 3.15 – 4:45 p.m., I117, starting March 22nd
Lab (mandatory): Thu 9:45 a.m. – 1 p.m., I220, every 14 days in two interleaved groups A and B
Tutorial (optional): Thu 5 – 6:30 p.m., I117 or 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 enough 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 consider 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 weights of 20%, 40%, and 40%, respectively.

Schedule

Thu, 15 Mar

I'm off to meetings at CeBIT. To compensate for that, there are an additional final lecture and lab instead, see below.

Thu, 22 Mar

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

Thu, 22 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, 22 Mar

Tutorial B: modeling with Cinema 4D

Thu, 29 Mar

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

Thu, 29 Mar

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

Thu, 29 Mar

Tutorial A: modeling with Cinema 4D

Thu, 19 Apr

Lab A: Assignment 1 (Event-driven programming)

Thu, 19 Apr

Vector graphics; Bézier curves, B-spline curves; file formats (EPS, PDF, SVG, Flash, XPS a.k.a. Metro)

Thu, 19 Apr

Tutorial B: modeling with Maya

Thu, 26 Apr

Lab B: Assignment 1 (Event-driven programming)

Thu, 26 Apr

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

Thu, 26 Apr

Tutorial A: modeling with Maya

Thu, 3 May

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

Thu, 3 May

Introduction to XNA Game Studio and the Xbox 360

Thu, 3 May

Tutorial B: modeling with Blender

Thu, 10 May

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

Thu, 10 May

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

Thu, 10 May

Tutorial A: modeling with Blender

Thu, 17 May

Legal holiday

Thu, 24 May

Lab, Groups A: Assignment 2 cont'd

Thu, 24 May

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

Thu, 24 May

Tutorial B: texturing with BodyPaint 3D

Thu, 31 May

Lab, Groups B: Assignment 2 cont'd

Thu, 31 May

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

Thu, 31 May

Tutorial A: texturing with BodyPaint 3D

Thu, 7 Jun

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

Thu, 7 Jun

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

Thu, 7 Jun

Tutorial B: animation with Cinema 4D

Thu, 14 Jun

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

Thu, 14 Jun

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

Thu, 14 Jun

Tutorial A: animation with Cinema 4D

Thu, 21 Jun

Lab, Groups A: Assignment 3 cont'd

Thu, 21 Jun

3D animation: keyframing, function curves, procedural/behavioral animation

Thu, 21 Jun

Tutorial B: animation with Maya

Thu, 28 Jun

Lab, Groups B: Assignment 3 cont'd

Thu, 28 Jun

1 p.m., room 122: 3D animation (cont'd): hierarchical animation, inverse kinematics

Thu, 28 Jun

Tutorial A: animation with Maya Presentation of the Bachelor's Projects in Digital Media

Thu, 5 Jul

Lab, Groups A: assignment 3 due

Thu, 5 Jul

Other 3D rendering APIs; global illumination effects (shadow mapping, ray tracing, radiosity and friends)

Thu, 5 Jul

Tutorial A+B: animation with BlenderMaya

Thu, 12 Jul

4 - 5:30 p.m., room 117 Outlook: Hot topics in research

Sun, 15 Jul

Assignment 3 due