ECSE-4750 Computer Graphics
Electrical, Computer, and Systems Engineering Dept.
Rensselaer Polytechnic Institute
Troy NY 12180 USA
Fall 2009

# Updated Catalog Description

ECSE-4750 Computer Graphics

Introduction to Interactive Computer Graphics, with an emphasis on applications programming. Objects and viewers, and the synthetic camera model. Graphics architectures, the graphics pipeline, clipping, rasterization, and programmable shaders. Input and interaction. Geometric objects, homogeneous coordinates, and transformations. Viewing, hidden surface removal, frame and depth buffers, compositing, and anti-aliasing. Shading, light and materials, texture mapping, ray tracing, and radiosity. Intellectual property concerns. Extensive programming with the OpenGL API and C++. Prerequisite: ECSE-2610 or equivalent. Fall term annually. 3 credit hours

# Why Take This Course?

All the data being produced by cheap sensors is useless unless it can be understood by people. Complicated machines are useless unless they can be easily controlled. This course will help you do both. The key is graphics and visualization. We don't just teach useful platform-independent tools. We also teach the underlying math and algorithms used by all tools so that you can design better tools.

# Overall Educational Objective

To provide students with a foundation in graphics applications programming.

# Learning Outcomes

1. to develop a facility with the relevant mathematics of computer graphics, e.g.,
1. 3D rotations using both vector algebra and quaternions, and
2. transformations and projections using homogeneous coordinations.
2. to learn the principles and commonly used paradigms and techniques of computer graphics, e.g.,
1. the graphics pipeline, and
2. Bresenham algorithm for speedy line and circle generation.
3. to gain a proficiency with OpenGL, "a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics."[^http://en.wikipedia.org/wiki/Opengl^] OpenGL is the most widely used platform-independent API, used on applications from games to virtual reality, implemented on platforms from mobile phones to supercomputers.
4. to be introduced to some other widely used, freely available, platform-independent tools that are at different levels of abstraction, possibly including:
1. The widely used Qt cross-platform application and UI framework. "Develop applications and user interfaces once, and deploy them across Windows, Mac, Linux/X11, embedded Linux, Windows CE and S60 (coming soon) without rewriting the source code."
2. VisIt, the "free interactive parallel visualization and graphical analysis tool for viewing scientific data on Unix and PC platforms", developed at Lawrence Livermore National Labs.
3. Blender.
4. parts of the Google API.

Note: This course will use SW and platforms that are freely available for education, do not require license fees, and are not encumbered by DRM.

# Why Not To Take This Course

Since you're spending a lot of money to take this course, you need to know some keys to success (or the alternative) in it.

1. You don't like programming.
2. You don't like documenting your programs.
3. You don't like math.
5. You don't like writing exams at the official scheduled times. The final exam may be as late as Dec 22.

# Prerequisites

1. This is a senior CSYS course, and assumes a moderate computer maturity, represented in the catalog by ECSE-2610 (Computer Components & Operations). You should know some HW, but if you don't have that specific course, don't worry.
2. Since there is programming in C or C++, you also must know some high level language, which you can translate into a knowledge of some C. If you don't know what a pointer is, then drop this course and take Computing Languages first. A good review book on C is Kelley & Pohl, ''A Book on C''.
3. Computer Graphics also assumes that you know, or be able to learn, some basic linear algebra, up to the level of what an eigenvalue is.
4. If you're uncertain about taking this course, then, by all means, talk to me, or to previous people in it. If there is one specific fact that is unfamiliar, such as eigenvalue, then there's no problem at all.
5. To help you decide, check out the Fall 2008 version of this course, which is 80% the same.
6. If you need a form signed to add the class, pin it by my door, 6026 JEC. I'll use your phone or email on the form to tell you to pick it up. Welcome.

# Instructors

## Professor

W. Randolph Franklin. BSc (Toronto), AM, PhD (Harvard)

I've been doing graphics related programming since the 1960s, and have been teaching versions of this course since 1982. I've been at RPI since 1978, apart from several absences, including a year at Berkeley, 3 months at Genoa, and shorter times at Laval University in Quebec City, the Commonwealth Scientific and Industrial Research Organization in Canberra, and the National University of Singapore. I also spent 2 years 7 months as Director of the Numeric, Symbolic, and Geometric Computation Program at the National Science Foundation, recommending how to spend about $30M of your tax dollars (thanks!). My most recent research on representing terrain elevation, and compressing it, and siting observers and planning paths on it, was largely supported by the Defense Advanced Research Projects Agency. DARPA people are crazy. My main worry is that I'm not crazy enough for them. I also like to examine terrain on foot; in summer 2008 I walked 164km, including 11km up, from Chamonix to Zermatt, in 12 days. I spent July 2009 visiting universities in Brazil, with a few days kayaking down a tributary of the Amazon, sleeping in a hammock tied to trees, and hiking for hours through the jungle.  Office Jonsson Engineering Center (JEC) 6026 Phone +1 (518) 276-6077 Email frankwr@rpi.edu Web http://wrfranklin.org/ Office hours After each lecture, usually as long as anyone wants to talk. Also by appointment. Informal meetings If you would like to lunch with me, either individually or in a group, just mention it. We can then talk about most anything. Preferred communication medium Email. Please write from an account showing your name, preferably @rpi.edu ## Teaching assistant Kalyana Sundaram Venkataraman, venkak2@rpi.edu ## Possible guest lecturers TBD # Course homepage That will contain: 1. Announcements 2. One line summaries of the classes 3. Links to homeworks etc and solutions. Fall 2008 (80% the same): http://www.ecse.rpi.edu/Homepages/wrf/pmwiki/ComputerGraphicsFall2008 # Reading material ## Textbook As listed on the RPI Bookstore site:  Book: INTERACTIVE COMPUTER GRAPHICS...OPENGL - 9780321535863 Author: ANGEL Edition: 5TH Pub: AW Required / Optional / Choice: Required New Price:$119.25 	Used Price: \$89.50


Angel's web site for his text is http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/FIFTH_EDITION/

I am not listing an OpenGL book this year because there is so much free info on the web. Nevertheless, there are several good OpenGL books, if you have the money. Some good (and cheap) ones are:

1. OpenGL : A Primer (2nd Edition) (Paperback) by Edward Angel.
2. OpenGL Super Bible by Wright

## My Notes on Various Graphics Topics

These will supplement the text.

## Assorted online material

There is a lot of good, free, online material about OpenGL and graphics in general. I'll mention some of it; Google can find more.

## Class-Only Online Material

Material that for copyright reasons is restricted to the class is here. Log in with user name 4750. I will announce the password in class.

# Computer Systems Used

The course material is basically platform-independent. (A typical difference would be the procedure for compiling a program.) I use linux, and can help you with problems in that. You may use any system you wish that works. The TA may be able to help you with Windows problems. RPI students should be competent in more than one platform.

# Times & Places

## Lectures

Tues & Fri, 2-3:20pm, in Lally 104.

You are not required to attend class, but are responsible to knowing what happened. Important announcements will be posted on the course website. However, I may base exam questions on student questions in class. Also, students may be expected to present some topics in class.

## Labs

Wed 4-5:20 in J-ROWL 2C22.

The lab time is for

1. the prof to make up missed lectures,
2. the prof and TA to present extra material,
3. the students to get help from the TA.

There will not be special lab exercises apart from the regular homeworks.

# Course calendar

1. The course calendar, listing classes, assignments, etc is maintained on google, with Calendar ID: e40dor6ojh6bfjanmfnn3tj348@group.calendar.google.com.
2. I will update this as the semester progresses.
3. Many calendar programs, such as Mozilla Thunderbird, interface with Google calendar. You can display Google calendars together with Thunderbird calendars as one.
4. The titles of all events on this calendar will start with CG. This will be useful if you are displaying several calendars together.

## Components: Midterm Exam

1. There will be a midterm exam in class, on Wed Oct 7.
2. The Tues Oct 6 class will be devoted to a review.
3. The exam may contain some recycled homework questions.
4. Here are several old exams, with some solutions. This year's topics will be slightly different, but will be largely the same. OTOH, since there are a finite number of electrons in the universe and they say that recycling is good, I'll recycle many of these questions.
5. I'll discuss other answers in the review, or you may figure out answers on your own.
6. As this chart shows, there is no correlation between the time taken to write the exam and the resulting grade.
7. You may bring in any printed material, but no computers. You may not share the material with each other during the exam. No collaboration or communication (except with the staff) is allowed.

## Components: Homeworks

There will be a homework approximately every week. You may do the homework in teams of 2, and hand in one solution per team.

## Components: Term Project

1. For the latter part of the course, most of your homework time will be spent on a term project.
2. You may do it in teams of up to 3 people. A team of 3 people would be expected to do twice as much work as 1 person.
3. You may combine this with work for another course, provided that both courses know about this and agree. I always agree.
4. You may build on existing work, either your own or others'. You have to say what's new, and have the right to use the other work. E.g., using any GPLed code or any code on my website is automatically allowable.
5. You will implement, demonstrate, and document something vaguely related to Computer Graphics.
6. You will give a 5 minute fast forward talk or video in class.
7. You may demo it to the TA in one of the last few labs. A good demo will help; a bad demo hurt.
8. The schedule is google calendar.
1. Oct 23: title, team members, 100 word summary.
2. Nov 6: brief progress report.
3. Nov 20: brief progress report.
4. Dec 8 or 9: 5 minute talk in class. There will be a signup sheet; sign up early to get your first choice.
5. Dec 11: final project report including code, video, documentation.

### Deliverables

1. An implementation showing dynamic interactive or 3D graphics.
2. An optional video showing it running. However, if you don't do this, then everything else must be really good.
3. An implementation manual showing major design decisions.
4. A 5 minute talk in class.

### Ideas

Anything vaguely related to Computer Graphics is ok.

1. A tutorial program to demo some idea in this course, such as quaternions, which I might use in future years.
2. A 3D game.
3. A psychophysics experiment to test how well users can match colors.
4. A physical simulation of 3 body orbits.
5. A 3D fractal or julia set generator.
6. An L-systems generator for random plants (as in botany).
7. Get an idea from Pittsburgh's CS 1566: Introduction to Computer Graphics Class Project Repository

## Components: Final Exam

There will be a final exam on a date set by the Registrar. You may bring in any printed material, but no computers. You may not share the material with each other during the exam. No collaboration or communication (except with the staff) is allowed. The final exam will contain material from the whole course, but more from the last half.

## Weights and Cutoffs

The relative weights of the different grade components are as follows.

ComponentWeight
All the homeworks together25%
Midterm exam25%
Term project25%
Final exam25%

Even if the homeworks be out of different numbers of points, they will be normalized so that each homework has the same weight, except that the lowest homework will be dropped, as described below.

The grade cutoffs will be no worse than as follows.

>=94.5%A
>=89.5%A-
>=84.5%B+
>=79.5%B
>=74.5%B-
>=69.5%C+
>=64.5%C
>=59.5%C-
>=54.5%D+
>=49.5%D
>=0%F

However, if that causes the class average to be lower than the prof and TA feel that the class deserves, based on how hard students appeared to work, then the criteria will be eased.

## Missing or Late Work

1. We will drop the lowest homework grade. That will handle excused absences, unexcused absences, dying relatives, illnesses, team trips, and other problems.
2. You may hand in the homeworks on paper in the lecture or lab on the due date, or email a PDF file.
3. Late homeworks will not be accepted.
4. If you miss the midterm because of an excused absence, we will use your final exam grade also as your midterm grade.
5. If you miss the final exam because of an excused absence, you may demonstrate your knowledge of the 2nd half of the course at an individual oral makeup exam.
6. If your term project is late, you will be offered an incomplete and the project will be graded in Jan 2010.

1. When we return a graded homework or exam to you, please report any errors disagreements or appeals within one week to the TA, with a copy to the prof.
3. When we report grades to you, please report any missing grades within one week to the TA, with a copy to the prof.
4. It is not allowed to wait until the end of the semester, and then go back 4 months to try to find extra points. It is especially not allowed to wait until the end of the following semester, and then to try this.
5. We maintain standards (and the value of your diploma) by giving the grades that are earned, not the grades that are desired. Nevertheless, this course's average grade is competitive with other courses.
6. Appeal any grade by talking first to the TA, then to the prof, then to any other prof in ECSE acting as a mediator, and then to the ECSE Head.

## Mid-semester assessment

After the midterm, and before the drop date (Oct 17), we will email you your performance to date.

1. See the Student Handbook for the general policy. Specifics for this course are as follows.
2. You may collaborate on homeworks, but each team of 1 or 2 people must write up the solution separately (one writeup per team) using their own words. We willingly give hints to anyone who asks.
3. The penalty for two teams handing in identical work is a zero for both.
4. You may get help from anyone for the term project. You may build on a previous project, either your own or someone else's. However you must describe and acknowledge any other work you use, and have the other person's permission, which may be implicit. E.g., my web site gives a blanket permission to other people to use it for nonprofit research or teaching. You must add something creative to the previous work. You must write up the project on your own.
5. However, writing assistance from the Writing Center and similar sources in allowed, if you acknowledge it.
6. The penalty for plagiarism is a zero grade.
7. You must not communicate with other people or machines or use electronic aids like computers and PDAs during exams. That includes not exchanging books and notes during the exam. You may use as many paper books and notes as you can carry, wheel, or drag into the room.
8. The penalty is a zero grade on the exam.
9. Cheating will be reported to the Dean of Students Office.
10. The penalty for handing in the answer for a slightly different question that was on last year's homework or exam, because you copied but didn't even see that the question was different this time, is a zero and our scornful laughter.
11. Ditto for writing an exam answer that was more appropriate for the version of the exam handed out to other people in the room.

# Other related RPI programs and groups

1. Computer Graphics at RPI. You are welcome to combine my course with other graphics courses in other departments. We work together to avoid excessive overlaps.
2. Rensselaer Center for Open Source Software. Some of their projects are graphics-related.
3. Rensselaer's Games and Simulation Arts and Sciences (GSAS) Major. The difference between us is that my course is a technical, engineering, course.

# Student feedback

Since it's my desire to give you the best possible course in a topic I enjoy teaching, I welcome feedback during (and after) the semester. You may tell me or write me. .

# Course survey

Near the end of the semester you will be asked to fill out an online survey. If you feel that you got value for your money, I'd appreciate that you give the course a high score. Thanks.

[^#^]