CSE 328: FUNDAMENTALS OF COMPUTER GRAPHICS
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, Computer Science Building
Rm. 2129 (Computer Science Teaching Lab I)
OFFICE HOURS: Monday & Wednesday, 12:50 PM--2:10 PM, or by 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, rendering, interaction, and animation. Finally,
if time permits, we shall give a brief overview of various advanced graphics
research topics.
PREREQUISITES:
Computer science background: data structures, programming languages (such
as C/C++).
Mathematics sophistication: calculus, linear algebra, basic analytic
geometry.
REQUIRED TEXTBOOK:
Computer Graphics with OpenGL, 4rd Edition, Donald Hearn,
M. Pauline Baker, and Warren R. Carithers, Prentice
Hall, 2011.
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 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 (40% total, 20% each); two programming assignments (20% total, 10% each);
and the course project (40% total). 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 programming assignments and course
projects as early as possible.
LECTURES and LECTURE NOTES:
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!!!
PROGRAMMING ASSIGNMENTS:
Programming
Assignment One (10%): due at 2:10pm, Wednesday, February 22, 2012!!!
Mid-term Exam Information: March 7 and April 18!!!
Teaching Assistant: Ms. Ievgeniia Gutenko
Teaching Assistants Office Hours:TBA!
Ms. Ievgeniia Gutenko,
Grader: TBA!
Ms. Ievgeniia Gutenko
will announce the submission instructions soon!!!
TA OFFICE HOURS: Ms. Ievgeniia Gutenko (igutenko@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 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)!!!
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!
Other Important Information
RECOMMENDED
(OPTIONAL) TEXTBOOKS:
- OpenGL Programming Guide, 5th
Edition: The Official Guide to Learning OpenGL, Version 2.0, Addison-Wesley,
2006.
- OpenGL Reference Manual, 4th
Edition: The Official Reference Document to OpenGL, Version 1.4,
Addison-Wesley, 2004.
OTHER SUPPLEMENTAL
REFERENCES:
- 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).
- Introduction to Computer
Graphics, J.D. Foley, A. van Dam, S.K. Feiner,
J.F. Hughes, and R.L. Philips, Addison-Wesley, 1994.
- Interactive Computer
Graphics: A Top-Down Approach with OpenGL, Edward Angel, Addison-Wesley,
1997 (Reprinted with corrections, January 2000).
- OpenGL Programming Guide,
Jackie Neider et al., Addison-Wesley, 1993.
- OpenGL Reference Manual,
Addison-Wesley, 1992.
- Principles of Digital Image
Synthesis, Andrew S. Glassner, Morgan Kaufmann
(two volumes), 1995.
- 3D Computer Graphics, Alan
Watt, 3rd Edition, Addison-Wesley, 2000.
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.
COMPUTING
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
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.