LMU | CMSI 371/671
COMPUTER GRAPHICS
Syllabus • Summer, 2002
Ray Toal
rtoal@lmu.edu
Doolan 110
310.338.2773
Mondays and Wednesdays
7:10 p.m. – 10:10 p.m.
Doolan 219
3 semester hours

Objectives

To master the principles of the art and science of computer graphics and become proficient in the design and programming of interactive and multimedia systems. The emphasis is on learning how to architect and write graphics software, rather than on learning how to use existing tools to create images, film, or business presentations. Students will become proficient in basic linear algebra and and OpenGL programming, while gaining valuable exposure to other technologies such as Java Swing.

Prerequisites

Mastery of a high-level programming language such as Java, C++ or C#; expert knowledge of data structure and algorithm design; some familiarity with object oriented programming, computer hardware, and operating systems; ability to document, demonstrate and explain one's own software; willingness to participate actively in class discussions.

Readings

It's best to have one textbook about Computer Graphics and another that shows you how to write graphics programs. Here are two:

A couple of programming assignments will be in Java; if you do not have a Java text you might think about getting one. You probably already know about Java in a Nutshell, but to learn Java you might want Core Java or Eckel's Thinking in Java. The most thorough text on Java graphics is Geary's Graphic Java (now a four-volume set!), but O'Reilly has a more compact Java Swing book. Sun's Java Tutorial is online, and its trail on Swing is excellent.

One of the most famous texts in Computer Graphics, which everyone should probably be aware of is:

Some of its material seems dated, but there might be a new edition some day.

By far most of the code examples and assignments will be written in OpenGL using the GNU C++ compiler so they can run on Windows or Unix. Since breadth in education is important, however, we may briefly look at a Microsoft proprietary library for Windows programming called MFC. The on-line help with Visual Studio is decent; if you want a text for MFC there are literally hundreds to choose from. You may want to familiarize yourself with Microsoft's DirectX for further study as it will not be covered in this course.

There are also several texts that teach you how to use OpenGL specifically on Windows. You might even want to pickup a textbook on VRML or Java3D. I don't have any particular recommendations; however, if you do choose to get a textbook make sure it covers the latest version of VRML, or its successor Web3D.

You should also attent LA SIGGRAPH meetings. Please read their calendar of events.

Additional papers and readings will be assigned throughout the course (including my own course notes, practice problems, and sample code). If you have projects or papers to work on, you'll have to find some additional readings on your own. Use judgment when researching on the web; a fair amount of information is often wrong, and much of the so-called sample code is especially atrocious. Regardless, you must take the time for effective self-study that includes practicing the craft of programming.

Assignments and Grading

You'll have several homework sets containing in-depth theoretical questions and non-trivial programming problems, and quizzes and a final exam with less difficult material. There will be a required term project with an accompanying paper and presentation. To help prepare you to meet industry expectations for college graduates, most assignments will take the form of open source software products. Unless otherwise specified, you are required to keep all work in your CVS repository and prepare all homework solutions with LaTeX document preparation system. Exams will cover material from lectures not previously assigned for homework: don't whine about this.

Generally, coursework may be done in groups of no more than two students; however, while only one solution set is turned in per group, both students are responsible for understanding all of its content and may be asked at any time for an oral explanation of any solution. Collaboration with other groups is fine but must be limited: you may share ideas and approaches but nothing resembling a solution (not even pseudocode). You must also acknowledge any help received. Academic dishonesty may result in expulsion; be certain your work meets the standards set forth in the LMU Honor Code.

Your final grade will be weighted as follows:

Homework sets
35 pts.
 
Paper, Project, Presentation
15 pts.
 
Midterm
20 pts.
 
Final Exam
30 pts.
 

Letter grades are figured according to the usual scale: 90% or more of the total points gets you an A, 80% a B, 70% a C, and so on. These are minimal requirements; for example, if you get 82 points you are guaranteed a B- or better, though you might still get an A since 82 may be the top score.

Homework is due at the beginning of class; late assignments are docked 30% per class. Missing class just to get an assignment done on time will not be tolerated; the only good excuses for missing class are excellent surf conditions, family problems, sickness, and personal emergencies. Skipping class just puts your fellow students at an advantage: we often spend class time going over things that will be "on the exam".

Your programming style will play a huge part in determining your score on the programming assignments. I will not hesitate to assign D's or F's to working programs which are poorly structured, under-commented, have poor identifier names and abbreviations, contain inappropriate hard-coded values, or are not easily maintainable. Appearance of the grading policy in this syllabus constitutes fair warning of the consequences of poorly written code.

Topics and Tentative Schedule

University Links

All students will want to acquaint themselves with the useful information found in the following sources: