CSE 328 FUNDAMENTALS OF COMPUTER GRAPHICS: Concepts, Theory, Algorithms, Techniques, and Applications (Spring Semester, Jan – May 2018)


INSTRUCTOR: PROFESSOR HONG QIN (qin@cs.stonybrook.edu; or qin@cs.sunysb.edu), The NEW Computer Science Building, Room 151, 631-632-8450 (office phone)

LECTURES: Tuesday & Thursday, 5:30 PM-6:50 PM, OLD COMPUTER SCIENCE BUILDING, RM. 2120!

OFFICE HOURS: Tuesday & Thursday, 2:20PM-4PM, or by appointment!



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, rendering, interaction, and animation. Finally, if time permits, we shall give a brief overview of various advanced graphics research topics.



Computer science background: data structures, programming languages and skills (such as C/C++).

Mathematics sophistication: calculus, linear algebra, basic analytic geometry.



Computer Graphics with OpenGL, 4rd Edition, Donald Hearn, M. Pauline Baker, and Warren R. Carithers, Prentice Hall, 2011.



This course emphasizes a ``hands-on'' approach to both the better understanding of graphics’ fundamental theory/algorithms and the effective use of graphics techniques in terms of graphics programming. Each student is required to complete exams in class, programming assignments, and course project. The exams cover analytic problems, the programming assignments include programming homework, and the course project is also programming-oriented. The programming assignments and course project will be done in C/C++ and OpenGL. You are expected to be a competent programmer in C/C++ in this course. The grading schemes of this course are as follows: two exams (10% for the first exam, 15% for the second exam, and 25% total); two programming assignments (10% each, 20% total); and the course project (50% total). In addition, the instructor also allocates 5% for class attendance!!! All assignment submissions will be due at the beginning of the class (i.e., 2:20pm).

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 programming assignments and course projects as early as possible.



This course syllabus is available on-line at the CSE328 course website. 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. 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 (see below for lecture notes). 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. So class attendance is critical!!!


Course introduction


2D Transformation

Hardware Display Device

2D-3D Transformation (including homogeneous coordinates and their matrix representations)

Line Drawing

Scan Conversion

2D Clipping (File-1; File-2)

2D Viewing

Multiple Coordinate Representations

Transformation between Coordinate Systems

Basic 3D Graphics Concepts

Arbitrary 3D Rotations

3D Viewing Transformation

Plane Equation and 3D View Frustum

General Transformation

3D Graphics Viewing Pipeline

3D Graphics Techniques, Transformation, and Viewing

Parameterization-based Shape Representations (Curves)

Parameterization-based Shape Representations (Surfaces)

Scalar Fields and Implicit Surface Representations

Solid Modeling for Computer Graphics

The Concept and Techniques of Subdivision in Graphics

Procedural Modeling

Geometric Object and Space Deformation Techniques

Local Illumination Modeling and Surface Shading Techniques

Global Illumination and Ray Tracing

Texture Mapping Techniques

Hidden Surface Removal

Computer Animation: An Introduction

Non-photorealistic Rendering

Brief Computer Graphics History



Programming Assignment One (10%): due at 5:20pm, Tuesday, February 27, 2018!!!

Programming Assignment Two (10%): due at 5:20pm, Tuesday, March 27, 2018!!!


Mid-term exam information: (tentatively, the first exam) February 22 and (tentatively, the second exam) April 17!!!


Teaching Assistant: TBA

Teaching Assistants Office Hours: TBA!



Grader: TBA!

The TA of this course will announce the submission instructions soon!!!

TA OFFICE HOURS: TBA (xyz@cs.stonybrook.edu): Tuesdays: 2:30pm-3:30pm; Fridays: 12:40pm-2:00pm! Computer Science Building CS2110!  (2) Grader: Thursday TBA; Computer Science Building CS2110!

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.


Please note that our current 328 TA in this semester is working hard to prepare his/her OpenGL tutorial and the detailed instructions for homework/project e-submission (Details to be announced soon!!!)


FOR YOUR CONVENIENCE ONLY, I am making the following link available (which was made available by the TA of CSE328 in the spring semester of 2011). These materials are ONLY for your reference and convenience (they are coming from prior years!!!): HELF INFO on OpenGL (from prior semesters)!!!


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!

Other Important Information


  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.


  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.


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.


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.


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!


Introduction and Motivation

Graphics System Hardware

Fundamental Mathematics and Geometry

Scene composition


Image-based techniques



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.