Syllabus, CMPS-3480 Computer Graphics, Fall 2018
Amendment added below
See amendment at bottom of document.
Gordon Griesel
Office: Sci III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csubak.edu

Course web site: http://www.cs.csubak.edu/~gordon/3480/

Course meets:
Mon Wed 2:30pm - 3:45pm in Sci III 311 (lecture 82455)
Tues 1:00pm - 3:30pm in Sci III 240 (lab 82456)
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:
The following book is recommended for this course.

Fundamentals of Computer Graphics
Fourth Edition
By: Steve Marschner; Peter Shirley
Publisher: A K Peters/CRC Press
Pub. Date: April 8, 2016
Print ISBN-10: 1-4822-2939-0
Print ISBN-13: 978-1-4822-2939-4
Supplemental Materials:
OpenGL Programming Guide:
The Official Guide to Learning OpenGL, Version 4.3.
8th Edition
Available free online at: http://www.glprogramming.com/red/

Grading Policy:
General assignments   50%
  . labs
  . homework
  . quizzes
  . attendance
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   50%

Attendance:
Class attendance is required.
Missing a class period will cause a zero score for the following assignment types:
  • lab assignment
  • pop quiz
  • assignment given verbally
  • hands-on coding assignment
  • participation exercise
  • project presentation
  • others that may not be listed
Labs:
Labs are hands-on assignments designed to be done in the classroom on classroom computers. You may install the necessary components on your own laptop computer, and bring it to class.
  • Attendance is required for any credit.
  • Full attendance is required for full credit.

Full attendance is defined as coming to class on-time and working throughout the entire lab session.

Lab assignments are due by the end of the lab period. A lab assignment could be extended into a homework assignment, but the lab portion is still due during class.

Lab begins at 1:00pm every Tuesday in room 240.
Homework:
Homework assignments and due dates will be posted on the course website.
It is not unusual for a lab assignment to be extended into a homework assignment. Missing a lab session can cause a student to be clueless about how to accomplish a homework assignment.

Sharing of assignment files is not allowed. If you miss a class session, do not ask for or accept the completed or partially-completed assignment files of another student. This will result in a score of zero for all students involved.
Instead, ask your instructor how to get caught-up with the class.
Quizzes:
A quiz is a short exam that covers current material from reading, lecture, lab, homework, and project material. Quizzes can be online or written.

Important note:
A quiz can be given at any time during any class session. This is sometimes referred to as a pop-quiz.
Extra Credit:
Some assignments can include the possibility for extra credit points, but it is not usually announced in advance, else it is just a regular assignment. It's recommended that you come to every class and do every assignment, then you will minimize your need for extra credit points.

Keep this rule in mind:
If you would only do an assignment because it will give you extra credit, then there will be no extra credit given.
Exams:
Exams will be announced in advance.
Midterm exams will be given at approximately weeks 5 and 10.
Actual dates of exams will be posted so studying can be done.
The Midterm exam will consist of a minimum of the following:
  • written exam
  • hands-on programming exam
A final exam will be scheduled during the designated time block for the semester. The exact date will be posted.
Project:
Each student will complete a semester project. Idea for the project is determined by the student with input from the instructor. The project will consist of the following components:

  · A computer graphics area of interest
  · One or more C or C++ programs that perform computer graphics
  · A simple web page showing your idea
  · A presentation of your work to the class

This is not a research project.
This is a programming project in which you start with one of the given lab frameworks, then add details and complexity that requires some research on your part. Details of the project requirements will be given in other course documentation.

The project should be started as early as possible.
Late Assignment Policy:
Assignments submitted late are not accepted and receive a score of zero.
Late Arrival Policy:
Arriving late to class will cause a deduction in your overall course grade of 0.25 percent for each occurrence. An unexcused absence will count the same as a late-arrival.

Definition of a late arrival:
A late arrival is defined as a student entering the classroom after the class period has started. The class period starts at 2:30.00pm and 1:00pm.
Examples of being late to class:

1.
The instructor begins his lecture promptly at 2:30pm, and you are not
yet in your seat or in the classroom.

2.
The instructor begins his lecture, and while the lecture is in progress,
you enter the room.

3.
The instructor begins his lecture, and while the lecture is in progress,
you enter the room and walk in front of the instructor or pass in front
of any other students.

Your instructor recommends that you plan your days to arrive at class 10-minutes early. Then when an unexpected delay happens, you will likely still make it to class on-time.
Time Conflicts:
Time conflicts are not allowed. Your own personal schedule must allow you to arrive on-time to class, and stay for the entire class period.

If you have a time conflict, you must disclose it to the instructor on the first day of class.

CMPS-3480 is a hands-on course taught in-person in the classroom by your instructor. This course is in no way an on-line course. In-class assignments are not to be done at some remote location. All exams require your in-class on-time attendance also.
Accommodations:
Students requiring accommodations should speak with the instructor at the start of the course. To make arrangements for accomodations, please contact SSD at the following link: SSD
Academic Integrity Policy:
All work done in this course is individual work, unless specified otherwise.
Please do not share your work with other students.

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.
Recordings:
Under California Education Code Section 51512, it is illegal for any person,
including a student, to use an electronic device to record what is happening in
the classroom without the consent of the instructor.

The instructor for this course does not give consent for recording of
any kind.

If a disability requires you to record a class session, then please contact
SSD so accommodations can be made.
Amendments
Late arrivals and class disruption
If you arrive late to class, please do not disturb the class or the 
instructor while a lecture is taking place.

Among other things, walking in front of the instructor while a lecture is
in progress disturbs the class. Please stop and wait for the instructor to 
break and let you find a seat.

The late penalty for this action is up to 2-percent off of total course
grade for each infraction.

Absence from class
The 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 page 64.

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