The University of Texas at Austin
Computer Science Department

Computer Science 354
Computer Graphics

Spring 2018


General Information:

Time: Mondays and Wednesdays 3:30PM-5:00PM
Place: GDC 1304
Instructor: Qixing Huang
Teaching assistant: Zaiwei Zhang
Office hour: Fridays 3pm-5pm at GDC 5422.

Prereqs: The following courses with a grade of at least C-: Computer Science 429 or 429H; Computer Science 105 (Topic: Computer Programming: C++), 371P, 373, or 378 (Topic: Generic Programming in the STL); Mathematics 408D, 408M, or 427L; and Mathematics 340L, 341, or Statistics and Data Sciences 329C (or Statistics and Scientific Computation 329C).

Recommended Textbook: Interactive Computer Graphics: A Top-Down Approach with WebGL. , by Edward Angel and Dave Shreiner, ISBN-10: 0133574849 ISBN-13: 9780133574845.

Course Objectives This is an introductory course on the major topics in the areas of image synthesis, interactive techniques, geometric modeling, and computer-based animation. The material covered includes

  • openGL programming
  • principles of operation of raster graphics systems
  • sampling and antialiasing
  • homogeneous coordinate transformation techniques
  • parallel and central projection and perspective transformations
  • hidden surface removal
  • light and reflectance models for local and global illumination
  • shading techniques
  • ray tracing
  • basic object modeling techniques
  • hierarchical modeling
  • basic animation
  • Upon course completion, you should have mastered both the mathematical principles of these techniques and their implementation. Implementation of these techniques will be demonstrated through a series of programming assignments in C++, in many cases using OpenGL. Your mastery of the mathematical fundamentals will be exercised through written homework and exams.


    Schedule:

    Date Topics Reading Notes
    Wednesday January 17th Introduction
    Monday January 22th Vector and Affine Math
    Wednesday January 24th Ray Tracing Ray Tracing Global Illumination
    Monday January 29th Ray Tracing II Project 1 Assigned Due Feburary 19th Tuner Whitted
    Wednesday January 31th Shading Phone Shading BRDF
    Monday Feburary 5th Texture Mapping Texture Mapping Bump Mapping Displacement Mapping
    Wednesday Feburary 7th Spatial Acceleration Structures Octree Kdtree Hanan Samet's SIG13 Tutorial
    Monday Feburary 12th Sampling and Antialiasing Aliasing Problems and Anti-Aliasing Techniques
    Wednesday Feburary 14th Intro to OpenGL Book Chapter 2, pages 43-107
    Monday Feburary 19th Viewing and Projections Orthographic Projection Perspective Projection
    Wednesday Feburary 21th Viewing and Modeling
    Monday Feburary 26th Triangular Meshes Project 2 Assigned Due March 12th
    Wednesday Feburary 28th Hierarchical Modeling
    Monday March 5th Modeling and Scene Graphs
    Wednesday March 7th Rotations and Orientation
    Monday March 19th Parametric Curves
    Wednesday March 21th Parametric Curves II Project 3 Assigned Due April 9th
    Monday March 26th Point-Based Representation
    Wednesday March 28th Midterm exam review
    Monday April 2nd Midterm Exam
    Wednesday April 4th Character Animation and Skinning
    Monday April 9th B Splines and Polar Form
    Wednesday April 11th Subdivision Curves
    Monday April 16th Parametric Surfaces
    Wednesday April 18th Subdivision Surfaces Final Project Assigned, Due May 12, Proposal by April 21, Demos on May 13
    Monday April 23th Particle Systems (Numerical Solution of ODEs)
    Wednesday April 25th Computational Photography
    Monday April 30th 3D Deep Learning
    Wednesday May 2nd 3D Deep Learning II
    Student Evaluation

    Your performance in this class will be evaluated through homework assignments, in class quizzes, programming assignments, and two midterm exams. The weights of each of these components is as follows:

  • Midterm Exam: 20%
  • Homework and quizzes: 10% (If applicable, otherwise this 10% added to Programming Assignments)
  • Programming Assignments: 70%
  • Exams are open book and open notes. You may bring a non-programmable calculator and printed notes from the class, no other electronic devices may be used, in particular no Internet access is allowed. The exams will take place during class as scheduled.

    There are no makeup exams unless arranged explicitly in advance with the instructor. This will only be possible for valid non-academic reasons.

    Homework assignments will be due at the beginning of lecture on the due date. Programming assignments will be submitted electronically by 11:59 on the due date and will require you to use your departmental Linux account. Turnin time will be the time recorded by the turnin program you will use to turn in the assignments. You may not email your assignments to the teaching staff.

    Project submissions will each include a code listing and a written project description, which will include a description of the software architecture of the system and a user's guide. Grading also generally involves interactive demonstrations of the programs by the students if needed as determined by the TA. Programs will be graded on correctness, readability, style, and documentation. Program development may be done anywhere, but the version of the assignments that is turned in and demonstrated must be able to be built and executed on the publix Linux machines on which software for this course is supported.

    You have a "late account" of 3 days for the term which you can spend any way you choose for your programming assigments. For example, you can turn in three programs one day late each, or one program 3 days late, without penalty. Once you have exhausted your late account, no late assignments will be accepted.

    Academic Misconduct Policy

    Academic Misconduct Policy You are free to discuss the course material with your classmates and are encouraged to form study groups for the exams. However, collaboration on homework or programming assignments is not permitted unless explicitly stated by the instructor. Helping a friend understand the intent of a homework or programming assignment specification is permitted. Students who work together too closely (e.g. design their solution together) should be aware that this is a form of cheating called COLLUSION and is subject to academic penalties. Penalties for academic misconduct include but are not limited to a failing grade in this course.

    The homework, programs, and exams must be the work of students turning them in. You are responsible for familiarity with the University policy (see Dean of Students' policies on academic integrity) on academic integrity, which we will follow strictly.

    Acts that exceed the bounds defined by the approved collaboration practices will be considered cheating. Such acts include:

  • Copying solutions, code, or programs from someone else or giving someone else your solutions, code, or programs
  • Participation in a discussion group that develops a solution that everyone copies
  • We urge everyone in the class to take appropriate measures for protecting one's work. You should protect your files, homework solution sheets, etc. as deemed reasonable.

    Studying for tests together is permitted and encouraged. Please come talk to us if you are unsure about how to work together with your friend in a legal, helpful manner. Remember, it is always ok to "work together" with your professor or TA!

    Your Responsibilities in This Class
  • You are expected to show up on time for lectures.
  • You are responsible for all material posted to the web site and announcements via Piazza. Ignorance of such material is no excuse.
  • You are responsible for obtaining a departmental Linux account, and learning the Linux operating system sufficiently well to meet the demands of the course. You can find on-line Linux guides - a place to start is here.
  • You are responsible for all material presented in lecture and in the reading assignments.
  • Your performance in this class will be determined by you! It will require a strong dedication to learning the material and may require a substantial time commitment to complete the programming assignments.
  • You are responsible for turning in your own work on all assignments. Unauthorized collusion is not allowed and constitutes a violation of the university's policies on academic integrity. See above guidelines for more information on what is or is not allowed.
  • You are responsible for protecting your work from being copied by others.
  • Programming Infrastructure

    The programming assignments will require use of the Department of Computer Sciences instructional computing resources. All CS students who meet the prerequisites for CS354 are eligible for a CS departmental lab account. We will be doing projects using OpenGL and C++. User interfaces will be developed using GLUT or FLTK to make user interface building easier and to make the inferfaces portable across platforms.

    Software needed for your projects is installed on the public Linux machines in the GDC labs. If you have trouble running the software, please report it to either the instructor or the TA. You can feel free to download and install the support software we are using on your own machines and work there, but you will need to turn in programs that work on the public Linux machines. Instructions for using software for each programming project on the lab machines will be given out with the assignments.

    You will turn in assignments using Canvas according to the guidelines provided by the TA.

    Important links:

  • CS Computing Accounts
  • UTCS Public Computer Laboratories
  • UTCS Computing FAQ