**Computer Graphics**

CS 378H (upper-division honors), offered each spring

*This course is also sometimes cross-listed (as e.g. CS 384G) depending on what other sections of Computer Graphics are offered each year.*

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

I teach one section of Computer Graphics each year; the precise course number and registration category changes to accommodate student demand but the topics covered are the same. A representative syllabus is publicly available here, though the precise course projects and lecture topics vary each year.

- OpenGL and shader 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;
- visual perception and basic color theory;
- parameterization and texturing;
- basic animation.

I teach one section of Computer Graphics each year; the precise course number and registration category changes to accommodate student demand but the topics covered are the same. A representative syllabus is publicly available here, though the precise course projects and lecture topics vary each year.

**Physical Simulation**CS 395T (graduate), offered each spring

An increasingly important sub-area of computer graphics is physics-based simulation: such simulations are used by movie studios for creating realistic special effects, game engines like Bullet and ODE, interactive design tools for architecture and 3D printing, tools for studying problems in biology and soft-matter physics, etc. This project-oriented course will introduce you to the key concepts and algorithms for simulating physical systems: starting from the ground up with particle systems and mass-spring networks, we will move on to cover topics such as rigid and elastic bodies, collisions, cloth, and fluids.

The syllabus is evolving as I teach the course; an older version (from 2018) is publicly available here.

The syllabus is evolving as I teach the course; an older version (from 2018) is publicly available here.

**Competitive Programming**

CS 104c (undergraduate), offered every semester

Programming competitions are challenges where competitors are given a problem that is intended to be solved with code. Often, problems will require an efficient algorithm to run in time. This course will cover common techniques used to solve competitive programming problems, and also help with interview and job skills.

I am the head coach of UT's competitive programming teams and give regular lectures in this elective course, along with the officers of the UT competitive programming club. Please contact the student organizers for day-to-day administrative matters related to the course. Course information can be found at the course website.

I am the head coach of UT's competitive programming teams and give regular lectures in this elective course, along with the officers of the UT competitive programming club. Please contact the student organizers for day-to-day administrative matters related to the course. Course information can be found at the course website.