CMPS-3480 Computer Graphics Fall 2025
Gordon Griesel
Office: Sci III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

Course web site: https://www.cs.csub.edu/~gordon/3480/

Class meets in-person in Science-III room-240
MWF   9:00am - 9:50am    (lecture #82853)
Tues  7:20am - 9:50pm    (lab     #82854)
Course Description

This course introduces the fundamentals of Computer Graphics.

From the catalog:
Introduction to computer graphics hardware, animation, two-dimensional transformations, basic concepts of computer graphics, theory and implementation. Use of graphics APIs such as DirectX or OpenGL. Developing 2D graphics applications software. Prerequisite: CMPS 223, 2020, with C- or above.

Lecture Topics and Rough Schedule

The topics below are the general subjects of the course, and will be introduced and discussed sequentially as the course progresses. Subjects could be added or removed.

Raster graphics
	C/C++ graphics framework in Linux and XWindows.
	Color, pixels, lines, line-drawing algorithms, DDA, Bresenham.
	Keyboard/mouse interaction, line clipping, simple animation.
	Bezier curves, splines, quadratic and cubic, curve resolution,
	midpoint algorithm, rubberband and rigid line segments,
	kinematic chains, and gravity.
	Filling areas: scanline, floodfill, Monte Carlo method.
	Fill: window, circle, square, rectangle, checkerboard, triangle.
	Odd/even method, 3 half-spaces, barycentric coordinates.
	PPM image format, texture mapping.
	Scan conversion.
Ray tracing
	Ray casting, orthographic projection, rays, vectors, planes.
	Normal, dot product, cross product, Cartesian coordinate system,
	Right-hand rule, Up vector.
	Object intersection: plane, ring, sphere, cylinder, cone.
	Lighting: ambient, diffuse, specular, highlights.
	Shading: Gouraud, Phong, Blinn, Lambert.
	Shadows, hard/soft edge, caching.
	Texture: checker, Perlin noise, image mapping.
	Optimization, BVH bounding volume hierarchy.
OpenGL
	Rendering pipeline, window management, single/double buffering.
	Orthographic 2D, perspective 3D.
	Primitive points, lines, shapes.
	Transformation matrices, translation, rotation, scaling.
	Object space, World space.
	Model building with import/export.
	Texture mapping: tiling, mipmapping.
	Animation, physics, collision detection, particle systems.
	Shaders.
Textbooks:
There are no required textbook.
Grading Policy
Weekly assignments   50%
  . labs
  . homework
  . quizzes
Exams                25%
Project              25%
------------------------
Total               100%

Grading scale used during the semester...
    A   93%
    A-  90%
    B+  87%
    B   83%
    B-  80%
    C+  77%
    C   73%
    C-  70%
    D+  67%
    D   63%
    D-  60%
    F    0%
Other course details...

Attendance
Class attendance is required.
Arrive to class a few minutes early.

Attendance marks:
   Late arrival to class - 1 mark
   Unexcused absence     - 1 marks

Each attendance mark reduces your overall course grade by 1%

Examples:
   Arriving late to class once per week would cause a 15% grade deduction.

Labs
Labs are hands-on assignments to be done during a lab class period.
Lab Rules:
   1. Must not be late to lab.
   2. Must work the entire lab period, unless excused by instructor.
   3. Your program must compile and run at the end of lab period,
      when it is collected for scoring.
      A program that does not compile could receive a score of zero.

Homework
Homework assignments are posted on our web page.
Instructions will be given for each assignment.
Homework Rules:
   1. Your program must compile and run when it is due.
   2. The homework source code files will be collected by the instructor.

General requirements of all assignments
Your assignments will usually be files stored on the Odin server. Your files
must be stored inside your 3480 directory, and in the proper subdirectory.

Your 3480 directory must be created using a script provided. The 3480
directory is created so that your work is visible only to you and your
instructor. Do not change the permission of the directory after running
the provided script.

   Other general requirements:
     . Your name on the top line
     . Correct file name
     . Correct file location

   Programming assignments:
     . No compile warnings or errors
     . Program must run
     . Program output must be neat, clean, and complete.
     . C program code must follow the K&R coding style.
     . C program code must have consistent and correct indenting.

   Text file written assignments:
     . Your name on the top line
     . Neatly written text
     . Correct spelling and grammar

   Each assignment will also have some specific requirements in addition to
   those listed above.

Final Exam
A final exam will be given.
A date and time for the final exam will be posted.

The Semester Project
The semester project will ask you to write programs that produce graphics.
You will have some freedom to choose a topic that interests you.
More details will be given during the semester.

Late Assignment Policy
Late assignments will not be accepted and result in a score of zero.

Individual Work Policy
All work done in this course is individual work.
Sharing of source code is not allowed.
Possession of code written by other students is not allowed.
Copying another student's work is plagiarism.
Copying answers or source code from the Internet is also plagiarism.

Academic Integrity Policy
All work done in this course is individual work.
Please do not share your work with other students.
You may discuss assignments with other students, but sharing of source code
is simply not allowed. Refer to the Academic Integrity policy printed in the
campus catalog and class schedule. Violations are enforced in accordance with
the Department's policy on academic honesty.

Absence from class
A student's responsibilities include attending classes.
If you miss a class, it is your responsibility to inform Gordon of the reason
for the missed class (documentation may be required) and to arrange to make up
any missed assignments, exams, quizzes, and class work, to the extent that this
is possible. Excusable absences include, but are not limited to:
Illness, injury, death of an immediate family member, etc.
See a complete list at CSUB Catalog. Search for "University Absence Policy".

Amendments
Your instructor reserves the right to amend this syllabus during the semester.