COM1370, Computer Graphics, Summer 1998, Professor Futrelle

Course Information

The general information for my teaching this summer, covering both COM1370 and COM1204, can be found on a page devoted to this. The detailed syllabus is also available. Below is more specific information.

Classes: Classes meet in Sequence 2, 9:15-10:20am, Mondays, Wednesdays and Thursdays, in room 247CN.

Textbook: Computer Graphics, C version, 2nd edition, by Donald Hearn and M. Pauline Baker.

Programming Environment: Code Warrior C++ on Macintoshes in 129CN and 201CN. The alternative environment, for those interested, is Macintosh Common Lisp (see below).

Resources on Reserve in Snell Library: There are a number of items on reserve for this course, including various books about Macintosh graphics and interactive programming, and the most important Inside Macintosh Volumes.

On-line resources: The summer teaching information page lists these, but the ones of particular interest to us are the Inside Macintosh volumes and the Toolbox Assistant. For those who want to work in Lisp (MCL) the MCL documents are critical, especially as regards windows, menus, the mouse, and graphics drawing. All of Common Lisp the Language by Steele is on the Web in html form: Here is a local mirror of Steele's book that I grabbed from the CMU site (with Web Devil to my Mac and then ftp'd to Unix):

Macintosh Common Lisp (MCL): The College has a site license for MCL, and it is installed on all Macs. Lisp, and MCL in particular, offers great advantages for easy and rapid development of graphics and interactive systems on the Mac. Once you get into the swing of it, development is far easier than in C++, because MCL incorporates the basic interactive capabilities into the language, allowing you to skip using event loops, resource files, etc., at least for the reasonably simple graphics programs that we'll work on in this course. With Lisp, all compilation and linking is immediate and incremental and no header files are required. Lisp is a typed language but types are resolved at run time, not at compile time, so type declarations are not needed. Lisp (Common Lisp) was the first ANSI standard object-oriented language, well before C++, and has an excellent object system, called CLOS (the Common Lisp Object System). My students and I have done the bulk of their research work using MCL for the last five years, because it is both a powerful and easy-to-use language. The compilers for Lisp are very efficient and the running speed of Lisp can approach that of C, with far less development time and effort. So speak to me if you want to do graphics the easy way and learn interesting new things at the same time. Occasionally, I'll give some graphics examples in Lisp or run Lisp in class to demonstrate its ease of use. For you, the student, the bottom line is that you'll probably do better in this class using MCL than C++, because you'll be able to develop your programs faster and better in MCL, giving you a better chance of getting all your assignments done well.

Why Macintoshes for graphics? Answer: Because we have developed a lot of graphics software for the Macs and can most efficiently teach graphics on Macs. Although moving ordinary code across platforms is not too painful, developing graphics code on a distinct platform involves basically starting from scratch, since it is so system-dependent. If at some point the undergraduate lab machines are replaced by some other platform, then of course, graphics will be moved to the new platform. The Mac was the leader in interactive graphics systems for many years, and still is a huge player in the commercial graphics world. Apple's QuickTime system for video, etc., is the basis of the worldwide standard being developed in this area, and is used heavily on Macs and Wintel systems. I assume that all of our students are true professionals and are flexible enough to use whatever system they are presented with. Graphics programming environments vary a lot, including Wintel, Java, X windows, and the great variety of CAD programs, application builders, and graphics and animation packages. But the fundamentals of graphics that we teach in this course are applicable to all graphics on any systems, since they are based on mathematics, geometry, data structures, algorithms, and physics. The Macs just happen to be where we try out some of these ideas. Many application building tools do not expose you to any of the underlying computer science details of graphics and interaction, so we program at a lower level in this course to get at these details, not unlike the programming you do in system courses.