CSE 328: FUNDAMENTALS OF COMPUTER GRAPHICS (SPRING SEMESTER, 2007)

INSTRUCTOR: PROFESSOR HONG QIN ( qin@cs.sunysb.edu), Computer Science Building , Room 2426, 631-632-8450

LECTURES: Monday & Wednesday, 2:20 PM--3:40 PM, Earth & Space Building, Room 069

OFFICE HOURS: Monday & Wednesday, 11:00 AM--12:30 PM, or by appointment!

TEACHING ASSISTANT: The TA' s name will be announced later (E--mail: To be announced later). Please note that, you can click on the TA's name (To be announced later) to access the TA's homepages which will direct you to his/her CSE 328 TA help information on OpenGL programming and answers to questions related to course programming assignments/projects and announcements about any additional office hours. Besides our course website here, we encourage students to visit the TA's websites for questions about course assignments/projects and any other important announcements that are not shown here.

TA OFFICE HOURS: To be announced later (Most likely, it will be sometime on Tuesday and Thursday, Computer Science Building , Room 2210)

Detailed step-by-step instructions on how to submit your homework (including help information on OpenGL programming and lab environment)

CREDITS: 3

SPECIAL ANNOUNCEMENT: Please NOTE THAT, if you have satisfied the prerequisites (CSE219 and CSE220, or permission of instructor). Anyone with the prerequisites is invited to register. Please see Professor Hong Qin in his office during his office hours if you are interested in registering for this course for the spring semester. If you miss the office hours, please send emails to Professor Hong Qin in order to make an appointment!


COURSE SYNOPSIS:

This undergraduate course will cover the basic concepts, mathematical foundations, fundamental theory and algorithms, software techniques, hardware and system issues, and application examples of computer graphics. The main topics will center on modeling and rendering. Finally, if time permits, we shall give a brief overview of various advanced graphics research topics.

PREREQUISITES:

  1. Computer science background: data structures, programming languages (such as C).
  2. Mathematics sophistication: calculus, linear algebra, analytic geometry.

REQUIRED TEXTBOOK:

  1. Computer Graphics with OpenGL, 3rd Edition, Donald Hearn and M. Pauline Baker, Prentice Hall, 2004.

RECOMMENDED (OPTIONAL) TEXTBOOKS:

  1. OpenGL Programming Guide, 5th Edition: The Official Guide to Learning OpenGL, Version 2.0, Addison-Wesley, 2006.
  2. OpenGL Reference Manual, 4th Edition: The Official Reference Document to OpenGL, Version 1.4, Addison-Wesley, 2004.

OTHER SUPPLEMENTAL REFERENCES:

  1. Computer Graphics: Principles and Practice, 2nd Edition in C, James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes, Addison-Wesley, 1990 (Reprinted with corrections, July 1997).
  2. Introduction to Computer Graphics, J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, and R.L. Philips, Addison-Wesley, 1994.
  3. Interactive Computer Graphics: A Top-Down Approach with OpenGL, Edward Angel, Addison-Wesley, 1997 (Reprinted with corrections, January 2000).
  4. OpenGL Programming Guide, Jackie Neider et al., Addison-Wesley, 1993.
  5. OpenGL Reference Manual, Addison-Wesley, 1992.
  6. Principles of Digital Image Synthesis, Andrew S. Glassner, Morgan Kaufmann (two volumes), 1995.
  7. 3D Computer Graphics, Alan Watt, 3rd Edition, Addison-Wesley, 2000.

LECTURES:

Primary material of this course will come from the required textbook. In addition, material from recent articles or relevant reference books will be presented. Numerous slides and video tapes on graphics will be shown. Students are advised to attend the class and follow the lecture notes closely.

GRADING SCHEMES:

This course emphasizes a ``hands-on'' approach to both the better understanding of graphics theory/algorithms and the effective use of graphics techniques. Each student is required to complete assignments. The assignments involve both analytic problems as well as programming projects using parts of graphics packages. The programming projects will be done in C and OpenGL. You are expected to be a competent programmer in C in this course. The assignments and projects are counted as 40% of the final grade. The other 60% of the final grade will be based on a midterm exam (20%) and a final exam (40%). All the problem sets, projects, and exams are mandatory. All assignment submissions will be due at the beginning of the class.

The work submitted should be your own. Late assignments will be penalized 25% per day. Furthermore, because a primary goal of the course is to teach professionalism, any academic dishonesty (e.g., plagiarism) will be viewed as a serious academic offense, thus as an evidence that the above goal has not been achieved and will be grounds for receiving a grade of F. (Please refer to CEAS Procedures and Guidelines Governing Academic Dishonesty (1/81) for details.)

Machine failure should not be a reason to delay assignment due dates unless there is a major catastrophe, which will be announced by the instructor. Considering the possibility that machine failure may happen and then contention for machines will occur, my advice to all of you is that you please start the projects as early as possible.

OTHER ANNOUNCEMENTS:

Some special events such as graphics video demonstration and visitors' research presentation in graphics may be held during this semester. The instructor will make announcements here when such events happen.

Other important announcements relevant to this course such as the change of assignment due dates or exam dates will also be posted here whenever necessary.

Please pay attention to these announcements as we will be updating them on the daily basis.

COMPUTER FACILITIES:

The programming assignments will make use of Unix and PC facilities. In particular, we will use the Windows NT Transaction lab. at Department of Computer Science (Rm. 2114 and Rm. 2126). You should be able to access the website of NT Transaction lab for frequent asked questions about the lab facilities and other relevant programming issues. You should have a NT account at CS Department. Students with access to PCs at home with the compatible computing environment will likely be able to work on some or all of the assignments at home.

Our system manager has already set up your account. Please refer to this document that explains how to get your user ID. You can also find a similar document at the website of NT Transaction lab. If you still have problems in accessing our facilities in the Transaction lab, please email to ntadmin@cs.sunysb.edu.

OPENGL PROGRAMMING GUIDE AND ENVIRONMENTS:

NT Transaction lab on the second floor of Computer Science Building is available for CSE 328 students to conduct their course assignments and projects. If you need a NT account, please talk to the instructor! Most of OpenGL examples appeared in various reference books are available on-line. The system manager of our Transaction lab has managed to download OpenGL examples from several publicly-available websites and put them under appropriate directories in order to help CSE 328 students to access OpenGL examples electronically and easily. Please note that, these examples are located in H:\courses\cse328\pkg directory. In general, they come from different sources. In particular, the directory: "H:\courses\cse328\pkg\Opengl examples\Edward Angel second edition" contains all the examples and source codes that have been downloaded from Edward Angel (who is the author of a book entitled : Interactive Computer Graphics A Top Down Approach with OpenGL Second Edition)'s web site (the ftp site is ftp.cs.unm.edu under pub/angel/BOOK in case you are interested in getting more information regarding his book and examples in the first edition, etc.); the directory: "H:\courses\cse328\pkg\Opengl examples\sgi\opengl11" contains OpenGL examples and source codes appeared in the book (OpenGL Programming Guide Version 1.1); the directory: "H:\courses\\cse328\pkg\Opengl examples\sgi\opengl12" contains OpenGL examples and source codes appeared in the book (OpenGL Programming Guide Version 1.2). The ftp site of SGI OpenGL examples is ftp://sgigate.sgi.com/pub/opengl/, in case you are interested in getting more information.

Please note that, the current OpenGL version in the NT translab is V1.1! Other important and relevant software programming resources currently available at the NT Transaction lab include: Windows NT 4.0, Microsoft Internet Explorer 5.5, Netscape Communicator V 4.7, Microsoft Visual C++ 6.0 SP3, Microsoft Office 2000 SR-1, and much more! For details, please consult with the website of NT Transaction lab.

There are many websites that can help you to be familiar with OpenGL programming techniques in particular and computer graphics technology in general. One great place for all sorts of general information is the Official OpenGL Web Site: http://www.opengl.org. This Website contains software, documentation, FAQs, and news! It is a good place to start any search for answers to your OpenGL questions. Please note that the two OpenGL programming books (A. Programming Guide; B. Reference Manual) contain many sample examples of OpenGL. These sample codes along with Mark Kilgard's OpenGL Utility Toolkit (GLUT) can be obtained freely via anonymous ftp (file-transfer protocol): ftp://sgigate.sgi.com/pub/opengl/opengl12.tar.Z or ftp://sgigate.sgi.com/pub/opengl/opengl12.zip, depending on which decompression/extraction tools you are currently using in your computer. For the Windows/NT/X version of GLUT, you can check out the following Web page for the details: http://www.xmission.com/~nate/glut.html. In addition, Nate Robins of University of Utah has written a suite of tutorial programs that demonstrate fundamental OpenGL programming concepts and techniques. You can get the source code for these tutorials at: http://www.cs.utah/edu/~narobins/opengl.html. The above Websites mostly contain information regarding OpenGL Version 1.2. For OpenGL Version 1.1, the source code samples can be found via anonymous ftp too: ftp://sgigate.sgi.com/pub/opengl/opengl/opengl1_1.tar.Z, to uncompress and extract the files from this tar archive, please use the following commands: umcompress opengl1_1.tar, tar xf opengl1_1.tar. Other detailed information about OpenGL and its technical resources (including programming books) can also be found from SGI OpenGL home website.

For detailed OpenGL compiling instructions, please refer to the TA's homepage: http://www.cs.sunysb.edu/~ybao. Please note that, you can also find other useful resources and course help info. regarding OpenGL environments such as GLut header file and DLLs as well as FAQs. You should be able to find out a lot of helpful information regarding how to use OpenGL in my TA's website. Please make sure that you visit these places regularly as new and important information will be updated frequently!

COURSE TOPICS AND ORGANIZATION:

Introduction and Motivation

  • Overview, definition
  • Graphics history
  • 2D and 3D graphics
  • Graphics programming
  • Graphics software and hardware systems
  • User-computer interface
  • Various application examples and areas

Graphics System Hardware

  • Hardware, display devices, I/O peripherals
  • Vector and raster graphics system
  • Interaction techniques

Fundamental Mathematics and Geometry

  • Basic mathematics relevant to graphics
  • Coordinate systems
  • Points, lines, planes, and normals
  • Triangles and polygons
  • Geometric primitives
  • Curves, and surfaces
  • Solid and volumetric models
  • 2D and 3D geometric transformation
  • Parallel and perspective projection
  • Data structures

Scene composition

  • Coordinate system
  • 2D and 3D geometric transformation
  • Object hierarchies
  • Viewing and clipping
  • Parallel and perspective projection
  • Object and image order rendering

Rendering

  • Rendering pipeline
  • Scan-conversion: lines and polygons
  • Shading/lighting (illumination models)
  • Human vision
  • Color perception and color models
  • Basic optics
  • Visibility

Image-based techniques

  • Sampling
  • Filtering
  • Anti-aliasing
  • Image analysis and manipulation

Others

  • Animation
  • Transparency and shadows
  • Texture mapping
  • Ray tracing, radiosity
  • Image-based rendering and modeling
  • Advanced modeling techniques
  • Case studies
  • Software packages

LECTURE NOTES:

This course syllabus is also available on-line at the CSE328 course website. The instructor is working hard to put all the course material on the course website! Lecture notes of this course will be divided into many small files. I will put them here along the progress of this course. Note that these notes are intended only as a guide. I will be presenting additional material in class (figures, slides, etc.) not contained in these files.

PROGRAMMING ASSIGNMENTS:

Assignment Zero (0%). This is mainly a reading assignment. However, the last part requires you to write a very simple program for you to get familiar with OpenGL and our lab environment. The primary goal of this assignment is to (1) learn fundamental concepts and important applications in graphics, and (2) better prepare students in CSE 328 for the upcoming programming assignments!

Assignment One (10%, due at 2:10pm on Monday, March 5, 2007)!

Assignment Two (10%, due at 2:10pm on Wednesday, March 28, 2007)!

Assignment Three (15%, due at 2:10pm on Monday, April 23, 2007)!

SPECIAL NOTES:

If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Disabled Student Services office (DSS) in the ECC building (where the Computer Store used to be), Telephone number: 632-6748v/TDD. DSS will review your concerns and determine with you what accommodations are necessary and appropriate. All information and documentation of disability are confidential.