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

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.