CS300 SYLLABUS
Description
An introduction to 2D and 3D computer graphics including topics such as: hardware algorithms, primitives, transformations, projections, lighting, materials, illumination models, renderers, anti-aliasing, curves/surfaces, polygonal meshes, texture mapping, user interaction, and animation. All topics are demonstrated within the OpenGL API where possible. Raytracing techniques are introduced.
Contact Information
Denise D. Byrnes
Office: Taylor 303
Phone: 263-2489
Office Hours: link
If you cannot attend scheduled office hours then please contact
me for other arrangements.
Email: dbyrnes@wooster.edu
Prerequisites
Minimally, CS120, Math111, and Math211 or Math112 are strongly recommended. If you have questions about these prerequisites see me immediately! If your linear algebra skills are shaky begin reading the Math Basics material.
Texts
"Interactive Computer Graphics - A Top-Down Approach using
OpenGL", fifth edition by Edward Angel, required.
"Interactive Computer Graphics - A Top-Down Approach with Shader
Based OpenGL", sixth edition by Edward Angel, required (*****available
online in pdf format*****).
"OpenGL Programming Guide" Woo et al, Second Edition (the
RedBook): required
(*****available online in pdf format*****).
Other very good references:
"3D Computer Graphics", Alan Watt
"Animation Techniques", Alan Watt
"Computer Graphics Principles and Practice", Foley et al, Second
Edition in C : recommended.
"Graphics Gems", edited by Andrew Glassner
"Mathematics for Computer Graphics Applications", M. E.
Mortenson
"OpenGL Reference Manual", (The Blue book), Addison-Wesley
Library Packages
OpenGL
The open standard graphic package used in this class is the OpenGL API which is excellent for interactive animations and general 3D modeling. OpenGL uses a very fast scanline rendering algorithm so it does not support (very well) photo realistic images with all the bells and whistles such as reflections and shadows.
GLUT
The windowing toolkit used in this class
is the GLUT API. GLUT is a cross platform interface to the
system's windowing API for Unix, Linix and Windows. If you
choose to use FreeGLUT or GLUI, your code project must contain
that API as a statically linked library.
POVRAY
PovRay (Persistence of Vision RayTracer) is a shareware package that uses a very slow raytracing algorithm but produces photo realistic images. This package is used for demonstration purposes only but I hope you will take the time to play with the software.
3-D MODELER
For those of you who are interested, Maya PLE (Personal
Learning Edition) may be downloaded for free from Alias Maya. This software was used to
create "Ice Age". Maya is an extremely powerful modeler
which runs on the PC's or Macs under OSX. You need a three
button mouse. We will use a simple 3-D modeler, Wings3D or
Blender, in class.
Labs and Projects
All programming assignments must be well documented and well structured
- Your name MUST appear at the top of the file.
- A brief description of your program must appear at the top of the file.
- If your program contains a user interface then the commands to drive the program must be explained in full (place this after your name and program comment). Additionally, a README file including this information must be included with your uploaded assignment.
- Variables (those not immediately obvious to the reader) must be annotated with a comment describing their purpose in the program.
- Each function or method must be annotated with a comment describing its purpose.
- Each complicated control structure or algorithm must be annotated with a comment describing its purpose.
- Your code must be modularized with respect to functionality. This can be done via functions in C or classes and methods in C++.
- Your code should use appropriate data structures whenever necessary.
Labs and projects are intentionally designed to be open ended and are graded competitively. For each assignment, you are given a set of basic requirements and a set of suggestions to improve your final solution. Meeting the basic requirements for an assignment is rewarded with a grade of C. This course rewards creativity, artistic skill, mathematical modeling, or just reading ahead and trying something not yet covered in class.
All projects are designed/implemented by small groups of 2 or 3 students. Form your group by the end of the first week or you will be assigned to a group. In the past, successful groups contained a strong mathematician and a strong programmer. All programming is done in C or C++.
All labs are developed independently.
Target Architecture
The OpenGL library was originally developed for UNIX workstations but is now available for the Mac and the PC running Windows or Linux. This gives quite a few options for development if you want to go that route. I will only support the Mac version of OpenGL and the XCode IDE as it is installed on the lab machines in Taylor 200.
The CS lab machines maintain an extended version of Visual Studio (VS) for OpenGL programs using C or C++ on the Virtual Machine. I strongly recommend using CodeBlocks for Windows, which already has an OpenGL/GLUT project packaged in its installer.If you wish to develop on your own PC you will need to install OpenGL and GLUT or FREEGLUT. You can download the GLUT.zip folder from the GLUT link on the navigation bar of the web site. The folder contains all necessary files and a README for installation.
You must build your final submission so it compiles under gcc or g++ . The directions for building an XCode project are covered in class.
Grading (using the standard scale)
Class participation 10% (requires active
participation) - 2 excused absences are allowed
Homework 10%
Labs/Projects 40% (labs at 15%, projects 1, 2 and 3 for a total
of 25%)
Exams 2 @ 10% (during class period)
Final Project 20% (project 4, presentation and paper - serves as
a final exam)
Course Operation:
Homework exercises will reinforce the readings and lectures. Laboratory/project assignments will help you develop additional experience with OpenGL, general graphics techniques, animation, and user interaction.
Homework and lab assignments will typically be available a day or two before assigned, with homework exercises due at the beginning of class on the due date. No late homework/labs will be accepted. Lab reports will also be due at the beginning of class.
Consult the class lecture schedule for due dates of homework exercises, and labs/projects.
Labs and projects must be electronically dropped on moodle. Source code and input files must be placed in a folder named CS300LabiFirstLastName for labs and CS300ProjectiLastNames for group projects. DO NOT UPLOAD YOUR PROJECT FOLDERS. One page, hard copy, of your source must be handed in on the due date, preferably the first page of main.c/cpp.
Academic Integrity and Professional Conduct
Can’t make an exam =>I must be informed 24 hours in advance
and you must have a VALID excuse.
Forgot to turn in homework/lab/project => Only valid excuses
accepted with 24 hour notification.
Academic Integrity
Each student should read and become thoroughly familiar with the code of academic responsibility as described in the student handbook. The following paragraph partially describes the implications of that code as it applies in this course.
It will be the student's obligation to complete each written or programming assignment and to submit all requested material by the specified due date. Materials submitted must represent the student's own work exclusively. No cooperative effort among students is acceptable except in the case of group projects. The only acceptable source of outside assistance is the course instructor.
The student is responsible for actively denying others access to her/his security passwords and to work submitted for grading in all written, printed, verbal, and machine forms. In addition to more obvious requirements, this responsibility includes the obligation to remove all private files from the hard disks on College computers and to assure that source listings are not available in public waste areas where other students might access them.
Students who violate the above restrictions will be liable to grade reduction that might extend to the assignment of a failing grade for the course. The instructor will report violations to the Dean of Students office for insertion into the student's file and might alter the penalty assessed to the student in response to information already available in that file.
Course Goals and Learning Objectives
1. Communication & Collaboration:
Students should be able to effectively communicate their
ideas in written, oral and electronic form, and to work
collaboratively in a team environment.
Achieving this goal in the context of this
course will be assessed by the ability to:
a. Effectively write team project proposals
and project summaries. [Evaluation]
b. Present and demonstrate team projects.
[Application, Evaluation]
2. Synthesis and Application:
Students should be able to critically apply concepts, theories
and practices to the creative solution of complex computing
problems.
Achieving this goal in the context of this course will be
assessed by the ability to:
a. Introduce the algorithmic distinction
between projecting light from surfaces forward to the screen
(e.g., triangle rasterization and splatting) vs. tracing the
path of light backwards (e.g., ray or beam tracing). [Knowledge]
b. Model simple graphics images.
[Application]
c. Derive linear perspective from similar
triangles by converting points (x, y, z) to points (x/z, y/z,
1). [Application]
d. Create 2D or 3D images using a standard
graphics API. [Application]
e. Describe the basic graphics pipeline and
how forward and backward rendering factor in this. [Knowledge]
f. Apply double buffering in the generation
of a graphics application. [Application]
g. Explain the concept and applications of
texture mapping, sampling, and anti-aliasing. [Knowledge]
h. Implement simple procedures that perform
transformation and clipping operations on simple 2-dimensional
images. [Application]
i. Represent curves and surfaces using both
implicit and parametric forms. [Application]
j. Create simple polyhedral
models by surface tessellation. [Application]
k. Generate a mesh representation from an
implicit surface. [Application]
l. Generate a fractal model or terrain using
a procedural method. [Application]
m. Contrast modeling approaches with respect
to space and time complexity and quality of image. [Knowledge,
Synthesis]
n. Use a 3-D modeling toolkit to generate a
complex 3-D object and render the object in a scene.
[Application]
o. Use a graphics shading language to take
advantage of the graphics-processing unit. [Application]
3. Software Methods:
Students should be able to define, plan, implement and test a
medium-sized software project using an appropriate software
engineering process.
Achieving this goal in the context of this course will be
assessed by the ability to:
a. Design, code, test, and debug problem
solutions appropriate to this course level. [Application]
b. Design and implement: [Application]
i. an event driven user
interface
ii. a scene containing a
textured polyhedron
iii. an animated
articulated structure or figure
iv. a fractal generated
landscape.
4. Professional Responsibilities:
Students should have an awareness of the wide range of social
concerns influenced by the discipline.
a. Achieving this goal in the context of this
course will be assessed by the ability to:
b. Discuss the evolution of graphics hardware
and understand how advanced hardware (multiple GPUs) supports
special effects such as multi-texturing, 3-D texturing and
global illumination using radiosity. [Knowledge]
c. Identify common uses of computer graphics.
[Knowledge]
Title IX
The College of Wooster and its faculty are committed to
ensuring a safe and productive educational environment for all
students. In order to meet this commitment and to comply with
Title IX of the Education Amendments of 1972 and guidance from
the Office for Civil Rights, the College has developed policies
and procedures which prohibit discrimination, sexual
harassment/misconduct, and retaliation. Any member of the
College community (faculty, staff, students, visitors, and third
party vendors) who believes that they have been a victim of
sexual harassment/misconduct, domestic violence, dating
violence, bullying, cyber-bullying, stalking and/or gender-based
discrimination is encouraged to file a report with the College's
Title IX Coordinator (Lori Makin-Byrd – lmakin-byrd@wooster.edu;
330-263-2017). Reports can be filed in person, via email, or
online at http://wooster.edu/offices/discrimination/sexual/.
In order to ensure student safety and address the well-being
of students, the College requires all employees, including
faculty members, to report incidents of sexual and gender-based
violence shared with them by students to the College's Title IX
Coordinator. Exceptions are situations where students are
unlikely to expect that a disclosure would trigger a reporting
obligation such as in a class writing assignment. A faculty
member reporting to the Title IX Coordinator does NOT mean that
the student will be obligated to participate in any formal
proceedings; that decision remains at the discretion of the
student unless the information indicates that one or more
students are at risk of further harassment. Information
regarding the College's non-discrimination policy (including
bias-related harassment), sexual assault/sexual misconduct,
Title IX, and filing a report can be found at
http://wooster.edu/offices/discrimination/.
Learning Disability
Students with learning disabilities may be allowed accommodations, such as extra time on exams. If you have a learning disability, you should contact the Learning Center at the start of the semester so that you, the Learning Center, and I can discuss reasonable accommodations. I'm not obligated to provide accommodations unless you do so.