Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
Principles of computer graphics, with a focus on interactive systems. Current graphics hardware, elementary operations in two-and three-dimensional space, geometric transformations, camera models and interaction, graphics system design, standard graphics APIs, individual projects.

Prerequisites: (ECS 060 or ECS 034 or ECS 036C); (MAT 022A or MAT 067)

Credit restrictions /cross listings: None

Summary of course contents

  1. Computer Graphics Hardware
  2. The interactive graphics pipeline
  3. Basic architecture of modern Graphics Processing Units
  4. The CPU-GPU interface
  5. Curve and Surface Drawing
  6. Line drawing
  7. Bezier curves and B-spline curves
  8. Rasterization of triangles
  9. Transformations
    1. Transformation matrices and their combinations
    2. Modeling and viewing transformations
  10. Modeling
    1. Object representations
    2. Hierarchical scene structure and generation of complex objects
    3. Object file formats
    4. Texture mapping
  11. Lighting
    1. Specular and diffuse lighting models
    2. Interactive lighting models, including their drawbacks
    3. Flat and Gouraud shading of triangulated models
  12. Rendering
    1. Camera models and interaction
    2. Z-buffering and other visible-surface algorithms

Other topics such as Bezier curves, ray tracing, clipping and culling may be discussed.

Students implement class projects with the C and/or C++ programming language, using the computer systems available in the Computer Science Instructional Facility. The programming projects for this class are chosen to enhance the lecture material in the course.

Goals: Students will: (1) learn the basic principles and problems of computer graphics; (2) learn mathematical background to understand and implement these basic principles; and (3) learn the underpinnings of the implementation of computer graphics modeling and rendering systems.

Angel, Interactive Computer Graphics A Top Down Approach With Open GL, Addison- Wesley, 2005

Computer Usage:
Students implement their term projects with the C and/or C++ programming language, using the computer systems available in the Computer Science Instructional Facility.

Programming Projects:
The programming projects for this class are chosen to enhance the lecture material in the course.

Engineering Design Statement:
The individual student taking this class will design and document a complete computer graphics modeling and rendering system that contains (1) a complete transformation/clipping package, (2) an elementary modeling package which will enable construction of complex scenes, and (3) a visible surface determination package. The design of the system is embodied in the “milestone” papers that are required in advance of the project deadlines. The students must design and implement the components of the system. Examinations also include questions based on design components of the course in addition to formal concepts.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

Illustrative reading

  • P. Shirley, M. Ashikhmin, and S. Marschner, Fundamentals of Computer Graphics, 3rd edition, AK Peters, 2009.
  • E. Angel and D. Schreiner, Interactive Computer Graphic:  A Top Down Approach With Shader-Based Open GL, 6th edition, Addison- Wesley, 2011.
  • S. Gortler, Foundations of 3D Computer Graphics, MIT Press, 2012.
  • D. Hearn, M. Baker, and W. Carithers, Computer Graphics with Open GL, 4th edition, Prentice-Hall, 2010

Science & Engineering
Visual Literacy

Justification for Visual Literacy: This course teaches students to understand and interpret patterns of visual material. Its assignments also give students techniques for recording and conveying visual evidence. Students are tested throughout on their ability to interpret visual data accurately and observantly

Overlap: None

Instructors: N. Amenta, B. Haman, K. Joy, and N. Max

History: Updated 9.7.2018 (CSUGA): Prerequisites updated to include new lower division ECS series courses. Reviewed by N. Amenta (2012.10.28): revised catalog description and course contents.  Prior course description from September 2008 (K. Joy, B. Hamann, and N. Amenta).


1 X an ability to apply knowledge of mathematics, science, computing, and engineering
2 an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 X a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11 an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 X an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity