September 8, 2005
Thirty years ago, graphics was a specialty field within computer science, of interest only to developers of video games (at the low end) and powerful CAD/CAM packages (at the high end). But with the release of the Apple Macintosh and then Microsoft Windows, graphical user interfaces became common for computers at all levels. And the widespread availability of microcomputers and workstations with sufficient processing power has brought formerly high-end drafting, painting, simulation, and animation capabiilities within the reach of home and small-business users. The field of computer graphics has become mainstream, and an essential part of the training of a computer scientist.
This course will cover a wide range of topics within computer graphics, from both a mathematical and a practical point of view. Students are expected to be comfortable programming in the C or C++ language, and to have completed a course in linear algebra and matrices (although we'll review those topics briefly).
This is not a theoretical course; it is a very practical, hands-on course. To learn the stuff I expect you to learn, you must spend a lot of time on the computer trying things. Every time you read about a new OpenGL feature, or hear me describe one in lecture, try it in a program. Invent new ways to use it, beyond what I or the textbook have described. Play with it. Although I'll assign several specific graphics programs to write and turn in, I expect you to have written, debugged, run many more than that by the end of the semester, since that's the only way to check how much you really understand.
We'll use the textbook Interactive Computer Graphics, by Edward Angel, for reading and homework assignments. We'll get through approximately 400 pages of the text this semester, an average of 20 pages per class meeting. Please keep up on the reading! You are responsible for everything in the reading assignments, whether or not I discuss it in a lecture.
There will be several homework assignments and a final exam, each worth approximately 20% of the semester grade. Most homework assignments will be programs to write or modify, but there may be some writing assignments as well (e.g. ``Discuss the pros and cons of such-and-such technique'', or ``Develop a detailed design document for such-and-such program before you start writing source code''). Most likely, the first two homework assignments will be specific; the third will be a project of your choice, and the fourth will consist of enhancing the third. Start thinking about projects you'd like to do, and discuss them with me.
Exams must be taken at the scheduled time, unless arranged in advance or prevented by a documented medical or family emergency. If you have three or more exams scheduled on the same date, or a religious holiday that conflicts with an exam or assignment due date, please notify me in writing within the first two weeks of the semester in order to receive due consideration. Exams not taken without one of the above excuses will get a grade of 0.
Programs are not abstract works of art, they are supposed to run and solve real problems. So if I get a program that doesn't compile or run, or a program that has little or nothing to do with the problem I assigned, I will give it a zero, no matter how much time you put into it. Don't bother turning in a program you haven't tested yourself.
The Adelphi University Code of Ethics applies to this course. Look it up on the Web at http://academics.adelphi.edu/policies/ethics.php .
Most of the assignments in this class are to be done individually. You may discuss general approaches to a problem with classmates, and you may copy a few lines, or a short function or two, with attribution, from either the textbook, my examples, or your classmates, but I expect the majority of each program you turn in to be your own work.
All work on an exam must be entirely the work of the one person whose name is at the top of the page. If I have evidence that one student copied from another on an exam, both students will be penalized.
This class meets every Tuesday and Thursday from 9:25 to 10:40 PM, except on University holidays or if I cancel class. All dates in the schedule of topics are tentative, except those fixed by the University; if some topic listed here as taking one lecture in fact takes two lectures to cover adequately, or vice versa, the schedule will shift, and I'll try to keep the Web page updated.
All reading assignments are from the Angel textbook unless stated otherwise. I expect you to have read the specified chapters in the textbook before the lecture that deals with that topic; this way I can concentrate my time on answering questions and clarifying subtle or difficult points in the textbook, rather than on reading to you, which will bore both of us. Please read ahead!