Teaching

COSC 70: Foundations of Applied Computer Science, 2020W, 2021S, 2021F, 2022S

This course introduces core computational and mathematical techniques for numerical computing, physical modeling, and data analysis, foundational to applications including scientific computing, computer graphics, machine learning, computational biology, computer vision, and robotics. The approaches covered include numerical modeling and optimizing both linear and nonlinear systems, representing and computing with uncertainty, analyzing multi-dimensional data, and sampling from complex domains. The techniques are both grounded in mathematical principles and practically applied to problems from a broad range of areas. One of the main goals in this class is to teach you to build your first, own numerical computing library that can accommodate your future studies in the applied computer science fields. We will develop (and deepen) our mathematical understanding of linear algebra, numeric algorithms, and optimization while we develop our numerical codebase. We will create a final project on top of the . The project will leverage the codebase we have been developing during the quarter and will showcase the efficacy of its computational performance and complexity by solving a real application related to applied computer science, including computer graphics, machine learning, image processing, etc..

COSC 89.18/189.02: Computational Methods for Physical Systems, 2019W, 2019F, 2020F, 2022W

The Physical Computing course introduces students to mathematical concepts and algorithmic techniques for developing computational approaches to simulate, optimize, design, and control various physical systems. Course topics cover fundamental numerical approaches for modeling and simulating rigid body, soft body, and cloth, as well as design and optimization algorithms for drones and soft robots. The materials will be illustrated using examples and applications from physics-based animation, robot design, fashion design, and 3D printing.

COSC 89.25/189: GPU Programming and High-Performance Computing, 2020S

This class introduces the basic programming and algorithmic techniques for developing the modern parallel computer code for high-performance computing applications. Course topics will cover the fundamentals for GPU (CUDA) and CPU (multi-threading) parallel programming, parallel computer architecture, parallel data structures, parallelizable linear algebra, conjugate gradient and multigrid solvers, particle systems and N-body problems, and vectorization. The central part of the course lies in the design and implementation of parallel numerical systems for real large-scale computing applications. The materials will be illustrated using large-scale computing examples and applications from computer graphics, computational physics, and machine learning.

COSC 77/177: Computer Graphics, 2019S, 2021S

The Computer Graphics course will introduce students to the mathematical and programatical foundations of modeling, rendering, and animating three-dimensional scenes. Topics include digital image representation, geometric primitives and transformations, lighting and shading, ray tracing, skeleton and skinning, and preliminary physics-based animation. Coursework will consist of short programming assignments (in C++ and Javascript/WebGL), in-class quizzes, assigned readings, and a final project.

Students' Projects Demo Reel 2021

Previous Courses

I was a guest lecturer for MIT 6.837 “Introduction to Computer Graphics,” MIT S.079 “Computational Fabrication,” and Stanford CS248 “Interactive Computer Graphics.” I was a teaching assistant of Stanford CS148 “Introduction to Computer Graphics and Imaging” between 2012-2014 and CS248 between 2012-2013.