The requirements for ECSE 6964-01 are everything in 4750-01 plus
an extra research paper.
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: 61156, 64636.
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.
- My course gives you the math and programming skills to create the next generation replacements for the higher level tools that other courses use.
- OpenGL is the low-level assembly language of computer graphics. It gives you a more direct control of the HARDWARE. 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.
- 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.
- Only OpenGl small enough to make available on smartphones.
To provide students with a foundation in graphics applications programming.
- to develop a facility with the relevant mathematics of computer graphics, e.g.,
- 3D rotations using both vector algebra and quaternions, and
- transformations and projections using homogeneous coordinations.
- to learn the principles and commonly used paradigms and techniques of computer graphics, such as
- the graphics pipeline,
- Splines and NURBS,
- ray tracing,
- visibility algorithms.
- 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." - Wikipedia 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.
Other courses might be a better fit if:
- You don't like programming.
- You don't like documenting your programs.
- You don't like math.
- You don't like reading.
- You don't like writing exams at the official scheduled times. The final exam may be as late as Dec 20.
OTOH, here are some reasons that you might prefer to take a course from me.
- I teach stuff that's fun and useful.
- 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 :-).
- 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.
- I keep the course up-to-date and relevant.
- 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.
- 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.
- 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.
- 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.
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.
- Mon & Thurs, 4:05-5:20pm, in Sage 4101 (lectures).
- Wed 6-7:30, in Sage 5101 (lab/recitation/lecture).
Wed will not always be used. Typical uses:
- To make up a missed class.
- For student presentations at the end.
- To review before a test.
- For TA meetings.
I intend no class activities outside the scheduled times, except for a final exam review, a day or two before the exam.
You may miss classes. However
- You will miss iclicker points. However all the iclickers together are only 5%.
- You are also still responsible for knowing what happened.
- However, important announcements will be posted on the web.
- Except when some equipment fails, I post an copy of everything that I write in class.
- I may base exam questions on student questions in class.
- If you're scheduled to present something, say a term project summary, then you can't miss that.
You may use computers etc in class if you don't disturb others.
I welcome short questions, if the answers are also short.
You are welcome to put copies of exams and homeworks in test banks, etc, if they are free to access. However I also put everything online for free.
-
There will be a midterm exam in class on Thurs Oct 11.
-
If you have special needs, give me the memo by the week before, so that I can schedule someone to proctor you.
-
The exam may contain some recycled homework questions.
-
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.
(The exam can't be open book because some student share books
and others use an online text.)
-
As this chart shows, there is no correlation between the time taken to write the exam and the resulting grade.
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 might type material with a static CMS like nikola or blogging
tool, sketch figures with xournal or draw them with inkscape, and do the
math with mathjax. Your preferences are probably different.
- For the latter part of the course, most of your homework time
will be spent on a term project.
- The project must be written in WebGL.
- It may use higher level packages on top of WebGL, provided that you are still programming.
- It must have programming; just selecting things from a menu
and creating a nice scene is insufficient.
- It must be interactive and have 3D graphics.
- You will implement, demonstrate, and document something at least vaguely related to Computer Graphics. Here are some ideas:
- A tutorial program to demo some idea in this course, such as quaternions, which I might use in future years.
- A 3D game.
- A psychophysics experiment to test how well users can match colors.
- A physical simulation of 3 body orbits.
- A 3D fractal or julia set generator.
- An L-systems generator for random plants (as in botany).
- Something in stereo using Google Cardboard.
- 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.
- You may combine this with work for another course, provided that both courses know about this and agree. I always agree.
- 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).
- You will produce a 3 minute video of your project to show in class, and then answer questions for one minute. You will send your video to the TA a few days in advance; she will show the video.
- You may demo it to Lingyu in one of the last few labs. A good demo will help; a bad demo hurt.
- 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.
- For the video showing in class, there will be a signup sheet; sign up early to get your first choice.
Some important dates
When |
What |
Oct 29 |
term project title - team - 100 word summary |
Nov 12 |
brief progress report. |
Nov 26 |
brief progress report. |
Dec 6 |
term project videos due to Lingyu. |
Dec 10 and 12 |
term project videos shown to class. |
Dec 12 |
term project due |
Dec 12 |
for ECSE 6964-01: extra research paper due |
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:
Pnpoly.
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.
- Some winners of The International Obfuscated C Code Contest
(IOCCC) implement graphics projects in
amazingly short programs. Note the beautiful formatting of many programs.
-
28 line ray-tracing program.
-
63 line interactive color auto racing program.
-
60 line interactive flight simulator.
-
8 line flying spheres program. However its graphics is pretty primitive.
-
73 line missile command game.
-
72 line Othello game, which beats me.
-
31 line 1st person maze walker, with perspective display.
-
115 line interactive fractal program, that puts up 2 X windows.
- An implementation showing
- interaction and
- 3D graphics.
- A video showing it running.
- A user guide showing how to use it.
- An implementation manual showing major design decisions.
- A class presentation of the video followed by 1 minute of questions.
Grading
Video |
|
project clearly described |
10 |
good use of video or graphics |
10 |
neat and professional |
10 |
Project itself |
|
Graphics programming with good coding style |
10 |
Use of interactivity or 3D |
10 |
A nontrivial amount of it works (and that is shown) |
10 |
Unusually creative |
10 |
Writeup |
|
describes key design decisions |
10 |
good examples |
10 |
neat and professional |
10 |
Total |
100 |
A 10-minute demonstration to the TA is optional. If you do, she will give me a modifier of up to 10 points either way. I.e., a good demo will help, a bad one hurt.
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)
-
Final exam F2014, Final exam F2014 solution,
-
Final exam F2013, Final exam F2013 solution,
-
Final exam F2012, Final exam F2012 solution,
The required final exam might be as late as Dec 21. Do not
make travel plans that conflict with the exam. E.g., do not buy
airplane tickets and then wait until the last minute to tell me.
For ECSE 6964-01 students: In addition to everything else, a 5-page research paper, formatted as for an conference on a topic related to computer graphics. LaTeX is preferable as it is the standard for these conferences.
Note that 5 formatted pages contain more words than you might realize.
This will be weighted into the other components: this paper 1/3, everything else 2/3.
Iclicker questions will be posed in most classes. The questions are intended to be easy. Please bring your iclickers.
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.
Relative weights of the different grade components
Component |
Weight |
iClicker questions |
5% |
All the homeworks together |
23% |
Midterm exam |
24% |
Term project |
24% |
Final exam |
24% |
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.
Grade cutoffs:
Percentage grade |
Letter grade |
>=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.
- We will drop the lowest homework grade. That will handle excused absences, unexcused absences, dying relatives, illnesses, team trips, and other problems.
- Late homeworks will not be accepted.
- If you miss the midterm because of an excused absence, we will use your final exam grade also as your midterm grade.
- 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.
- If your term project is late, you will be offered an incomplete and the project will be graded in Jan 2018.
- We'll post homework grading comments on LMS. We'll return graded midterm exams in class.
- If you disagree with a grade, then please
- report it within one week,
- in writing,
- emailed to the TA, with a copy to the prof.
- 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.
- It is not allowed to wait until the end of the semester, and then go back 4 months to try to find extra points.
- 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.
- Appeal first to the TA, then to the prof, to another prof
acting as mediator if you wish, and then to the ECSE Head.
- Please state your objection in writing.
After the midterm, and before the drop date (Oct 24, 2016), we will compute an estimate of your performance to date.
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. E.g., if you tell me that you had to miss a class because of family problems, then I may forward that information to the Dean of Students office.
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 the TAs, or contact a third party, such as Prof Mike Wozny, the ECSE Dept head.