Contents (hide)

1.   1.  Course content
2.   2.  Instructors
1.   2.1  Professor
2.   2.2  Teaching assistant
3.   2.3  Possible guest lecturers
3.   3.  Course websites
1.   3.1  Homepage
5.   5.  Computer systems used
6.   6.  LMS
7.   7.  Times & places
8.   8.  Assessment measures, i.e., grades
1.   8.1  Midterm exam
2.   8.2  Homeworks
3.   8.3  Term project
4.   8.4  Final exam
5.   8.5  Iclickers
6.   8.6  Correcting the Prof's errors
7.   8.7  Extra bonuses
8.   8.8  Weights and cutoffs
9.   8.9  Missing or late work
10.   8.10  Grade distribution & verification
11.   8.11  Mid-semester assessment
12.   8.12  Early warning system (EWS)
10. 10.  Other related RPI programs and groups
11. 11.  Student feedback

# 1.  Course content

## 1.1  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. Prerequisite: ECSE-2610 Computer Components & Operations, or ''CSCI-2500 Computer Organization, or equivalent. Fall term annually. 3 credit hours''

CRN: 65175

## 1.2  Why take this course?

To understand and control the universe.

The massive data sets being produced by cheap sensors are useless unless they 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.

## 1.3  How this course relates to other graphics courses at RPI

OpenGL is the low-level assembly language of computer graphics. It gives you a more direct control of the HW. Higher level tools, like Blender, build on top of OpenGL. Higher level concepts, like ray tracing, are implemented in OpenGL.

OpenGl is preferable to DirectX because OpenGl is open, vendor-neutral, and OS-neutral.

As the OpenGL standard evolves, OpenGL is becoming lower level. On the one hand, there are tools for very efficient programming. On the other hand, the hello world program gets longer and longer.

The problem with very high level tools, like Blender, is that they restrict what you can do if what you want is outside the Blender model. You would use OpenGL to create Blender's replacement. Also, only OpenGl small enough to make available on smartphones.

## 1.4  Overall Educational Objective

To provide students with a foundation in graphics applications programming.

## 1.5  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, such as the graphics pipeline.
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.

## 1.6  Interested in taking this course?

If you lack specific prereqs but have a good computing background, then you are still welcome. Come to the first class with the paperwork. We always find room for everyone.

## 1.7  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). Here are some indications that other courses might be a better fit.

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 18.

OTOH, here are some reasons that you might prefer to take a course from me.

1. I acknowledge that you are simultaneously taking several courses, and so try to make the workload fair. E.g., if you're taking 6 3-credit courses, then you should not be required to spend more than {$\frac{168}{6}$} hours per week per course :-).
2. I try to base exam questions more on important topics that occupied a lot of class time, and which are described in writing, often on this wiki.
3. I keep the course up-to-date and relevant.

## 1.8  Prerequisites

1. This is a senior CSYS course, and assumes a moderate computer maturity, represented in the catalog by either listed prereq. If you don't have either specific course, talk to me.
2. You also must know some high level language, such as C++, sufficient to learn Javascript. One of many good online tutorials is W3Schools JavaScript Tutorial.
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.

# 2.  Instructors

## 2.1  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 (Italy), and shorter times at Laval University in Quebec City (Canada), the Commonwealth Scientific and Industrial Research Organization in Canberra (Australia), 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!). A recent funded research project was (together with Cutler and Zimmie) modeling how levees fail when overtopped during a flood. Google Scholar thinks that I've co-authored 40 papers that each have been cited at least 10 times. Another recent completed research project was 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 was that I wasn't crazy enough for them. In the summer of 2013, I was sponsored by FAPEMIG, the science funding agency of the state of Minas Gerais in Brazil to spend a month in Brazil working with researchers at various universities. I also like to examine terrain on foot; in summer 2008 I walked 164km, including 11km up, from Chamonix to Zermatt, in 12 days (the Haute Route). I spent July 2009 visiting universities in Brazil, with a few days kayaking down the Urubu R, a tributary of the Amazon, sleeping in a hammock tied to trees, and hiking for hours through the jungle. Last July I hiked the Zion Virgin River Narrows slot canyon top-down. I've climbed 109 of the NE111 peaks (the 115 4000' peaks in the northeast).  Office Jonsson Engineering Center (JEC) 6026 Phone +1 (518) 276-6077 (forwards) Email mailto: mail@wrfranklin.org Sending from a non-RPI account is fine (and is what I do). However, then please write from an account showing your name, at least in the comment field. A subject prefix of #CG is helpful. GPG is welcomed. 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 legal. Preferred communication medium Email. ## 2.2 Teaching assistant 1. Shen Wang, wxaxnxgxsx1x4@rxpxix.xexdxu (remove the xs). 2. Office hours: Tues and Fri at 3 in the Flipflop lounge, JEC 6037. 3. Come near the start of the time; if there is no one there he may leave. 4. If you need more time, or a different time, then write, and he will try to accommodate you. 5. He'll also attend the lab. ## 2.3 Possible guest lecturers 1. TBD # 3. Course websites ## 3.1 Homepage This current page: http://www.ecse.rpi.edu/Homepages/wrf/pmwiki/ComputerGraphicsFall2014/ has lecture summaries, syllabus, homeworks, etc. Fall 2013 (80% the same): http://www.ecse.rpi.edu/Homepages/wrf/pmwiki/ComputerGraphicsFall2013 ## 3.2 Google calendar The course calendar, listing classes, assignments, due dates, TA office hours, etc is maintained on google at Google calendar . You may display it together with other Google calendars or import into into various other calendar programs, like Thunderbird. 1. I will update the calendar as the semester progresses. 2. The titles of all events on this calendar will start with CG. This will be useful if you are displaying several calendars together. ### RCS files We'll be studying OpenGL called from JavaScript and displayed in a web browser. To make these files also easily accessible w/o having to go through a web browser, I'll use AFS, There are several ways to access the files: 1. Through a web browser: http://homepages.rpi.edu/~frankwr/ECSE-4750/ 2. If logged in to RCS, such as rcs.rpi.edu: /home/56/frankwr/public_html/ECSE-4750/ 3. If logged in to another linux system with an AFS client: /afs/rpi.edu/home/56/frankwr/public_html/ECSE-4750/ 4. On an MS Windows machine: https://dotcio.rpi.edu/services/file-services/mapping-network-drive-rcs-using-openafs-client # 4. Reading material ## 4.1 Textbook Interactive Computer Graphics: A Top-Down Approach with WebGL, Seventh Edition, Edward Angel; Dave Shreiner. A digital copy can be rented for$56 from http://www.coursesmart.com/IR/1407631/9780133575378?__hdv=6.8.

This is the Amazon site.

This is the textbook author's site.

I made the change because the new book covers WebGL, which is more portable, and because it has better supplementary material. Also, this book is widely used by other colleges. The tradeoff is that it is more expensive, which is unfortunate.

## 4.2  My notes on various graphics topics

These will supplement the text. I'll link them in to the lecture notes at the appropriate times.

## 4.3  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.

## 4.4  Class-only online material

If there is material that for copyright reasons is restricted to the class, it will be stored here. Log in with user name 4750. I will announce the password in class when the first material is posted.

# 5.  Computer systems used

This course will use platform-independent OpenGL computer graphics written in Javascript and displayed with any major browser, including smart phones.

You will need to be able to create web pages with extensions .js and .html (or .htm) on some server. I recommend RCS, but any other publicly accessible server is acceptable. On RCS, I have some files in http://homepages.rpi.edu/~frankwr/ECSE-4750/ . They contain files from Angel and files I modified or wrote.

(In general, I like SW and platforms that are freely available for education, do not require license fees, and are not encumbered by DRM. Those tools do have their place, and should be used when appropriate. Nevertheless, sometimes commercial tools are better than the equivalent free ones. Some examples include Powerpoint, Excel, Photoshop, Matlab, and Mathematica.)

FYI Here is how one part of the federal government views the security of various operating systems, specifically what is required for a private laptop to be allowed on their network. A Windows PC must have current patches, service packs, antivirus definition files, and a recent scan. A linux PC must only not dual-boot Windows (or all the preceding also apply).

# 6.  LMS

RPI LMS will be used only for you to submit homeworks and for us to distribute grades.

Announcements and the homeworks themselves will be available on this website.

# 7.  Times & places

1. Mon & Thurs, 4-6pm, in Ricketts 211 (lectures).
2. Wed 6-7:30, in Walker 6113 (lab/recitation).

Wed will not always be used. Typical uses:

1. To make up a missed class.
2. For student presentations at the end.
3. To review before a test.
4. For TA meetings.

If you miss a class, you may miss iclicker points. You are also still responsible for knowing what happened. Important announcements will be posted on the web. However, I may base exam questions on student questions in class. Also, students may be expected to present some topics in class.

# 8.  Assessment measures, i.e., grades

## 8.1  Midterm exam

1. There will be a midterm exam in class on Thurs Oct 9, except for force majeure. (That means an unexpected big event, such as RPI being closed that day.)
2. If you have special needs, give me the memo by the week before, so that I can schedule someone to proctor you.
3. The Wed Oct 8 lab will be a review.
4. The exam may contain some recycled homework questions.
5. 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.
If you prepared answers to all the questions on all the old tests, then you'd do well this semester. However, you would also deserve to do well since you'd know the material.
6. I'll discuss other answers in the review, or you may figure out answers on your own.
7. As this chart shows, there is no correlation between the time taken to write the exam and the resulting grade.
8. You may bring in one 2-sided 8.5"x11" paper with notes. You may not share the material with each other during the exam. No collaboration or communication (except with the staff) is allowed. (new)

## 8.2  Homeworks

There will be a homework approximately every week. You are encouraged to do the homework in teams of 2, and submit one solution per team, on LMS, in any reasonable format. The other term member should submit only a note listing the team and saying who submitted the solution.

"Reasonable" means a format that the TAs and I can read. A scan of neat handwriting is acceptable. I would type material with a wiki like pmwiki or blogging tool, sketch figures with xournal or draw them with inkscape, and do the math with mathjax. Your preferences are probably different.

## 8.3  Term project

1. For the latter part of the course, most of your homework time will be spent on a term project.
2. You are encouraged 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 (because of my Creative Commons licence).
5. You will implement, demonstrate, and document something vaguely related to Computer Graphics.
6. You will give a 5 minute fast forward Powerpoint talk in class. A fast forward talk is a timed Powerpoint presentation, where the slides advance automatically.
7. You may demo it to either TA in one of the last few labs. A good demo will help; a bad demo hurt.
8. The schedule is:
1. Oct 15: title, team members, 100 word summary.
2. Oct 29: brief progress report.
3. Nov 12: brief progress report.
4. Dec 1, 3 or 4: 5 minute fast-forward powerpoint talk in class. There will be a signup sheet; sign up early to get your first choice.
5. Dec 4: final project report including code, video, documentation.

Submit stuff on RPILMS as a tarball or zipfile containing any reasonable format of files or links to files. Each team should make only one substantive submission. The other term members should submit only a note listing the team and saying who made the real submission.

### Size of term project

It's impossible to specify how many lines of code makes a good term project. E.g., I take pride in writing code that is can be simultaneously shorter, more robust, and faster than some others. See my 8-line program for testing whether a point is in a polygon here.

According to Big Blues, when Bill Gates was collaborating with around 1980, he once rewrote a code fragment to be shorter. However, according to the IBM metric, number of lines of code produced, he had just caused that unit to officially do negative work.

### 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. A user guide showing how to use it.
4. An implementation manual showing major design decisions.
5. A 5 minute talk in class.

Fast forward presentation
project clearly described10
good use of video or graphics10
neat and professional10
Project itself
Graphics programming with good coding style10
Use of interactivity or 3D10
A nontrivial amount of it works (and that is shown)10
Unusually creative10
Writeup
describes key design decisions10
good examples10
neat and professional10
Total  100

Notes:

1. In addition to the above list, rules violations such as late submission of the powerpoint file, or a project that is seriously off-topic will have an effect.
2. A 10-minute demonstration to a TA is optional. If you do, he will give me a modifier of up to 10 points either way. I.e., a good demo will help, a bad one hurt.

### 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).

## 8.4  Final exam

There will be a final exam on a date set by the Registrar. You may bring in two 2-sided 8.5"x11" sheets of paper with notes. You may not share bthe 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. (new)

The required final exam might be as late as Dec 17. Do not make travel plans that conflict with the exam. If your parents still plan your life w/o telling you, then tell them.

Do not ignore the previous paragraph, buy airplane tickets, then wait until the last minute to say that you can't write the final exam. That didn't work the last time that it was tried.

Do not ignore the previous two paragraphs, buy airplane tickets, wait until the last minute to say that you can't write the final exam, and then after I say, no, have your mother tell me that you cannot write the final. That one also hasn't worked yet.

## 8.5  Iclickers

Iclicker questions will be posed in most classes. The questions are intended to be easy. Please bring your iclickers.

## 8.6  Correcting the Prof's errors

Occasionally I make mistakes, either in class or on the web site. The first person to correct each nontrival error will receive an extra point on his/her grade. One person may accumulate several such bonus points.

## 8.7  Extra bonuses

Constructive participation in class, and taking advantage of office hours may make a difference in marginal cases.

## 8.8  Weights and cutoffs

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

ComponentWeight
iClicker questions5%
All the homeworks together23%
Midterm exam24%
Term project24%
Final exam24%

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.

>=95.0%A
>=90.0%A-
>=85.0%B+
>=80.0%B
>=75.0%B-
>=70.0%C+
>=65.0%C
>=60.0%C-
>=55.0%D+
>=50.0%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.

## 8.9  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. Late homeworks will not be accepted.
3. If you miss the midterm because of an excused absence, we will use your final exam grade also as your midterm grade.
4. 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.
5. If your term project is late, you will be offered an incomplete and the project will be graded in Jan 2015.

## 8.10  Grade distribution & verification

1. We'll post homework grading comments on LMS. We'll return graded midterm exams in class. Please report any errors disagreements or appeals within one week to the TA, with a copy to the prof.
2. From time to time, we'll post your grades to LMS. Please report any missing grades within one week to the TA, with a copy to the prof.
3. 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 ask what you may do to raise your grade.
4. 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.
5. Appeal first to the TA, then to the prof, then to any other prof in ECSE acting as a mediator (such as Prof Wozny, the curriculum chair), and then to the ECSE Head. It is preferable to state your objection in writing.

## 8.11  Mid-semester assessment

After the midterm, and before the drop date (Oct 17, 2014), we will compute an estimate of your performance to date.

## 8.12  Early warning system (EWS)

As required by the Provost, we may post notes about you to EWS, for example, if you're having trouble doing homeworks on time, or miss an exam.

1. See the Student Handbook for the general policy. The summary is that students and faculty have to trust each other. After you graduate, your most important possession will be your reputation.
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 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, exchange notes, or use electronic aids like computers and PDAs during exams.
8. The penalty is a zero grade on the exam.
9. Cheating will be reported to the Dean of Students Office.

# 10.  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.

# 11.  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 or a TA, or contact a third party, such as Prof Wozny, if you wish anonymity.