Teaching
COSC 77/177: Computer Graphics, 2019S, 2021S, 2023W, 2024W
The Computer Graphics course will allow you to unleash your creativity and design your own 3D world! You'll learn all about the math and programming behind creating stunning 3D scenes, from digital image representation and geometric primitives, to lighting and shading, ray tracing, and even physics-based animation. This is a hands-on course where you'll get to practice and see the results for yourself. You'll work on short programming assignments using C++ and Javascript/WebGL, and get to show off your skills in a final project that you'll be proud to share.
Students' Projects Demo Reel 2021
COSC 70: Foundations of Applied Computer Science, 2020W, 2021S, 2021F, 2022S, 2023F, 2024S
This course is designed to help you get a solid foundation in computational and mathematical techniques, which are crucial for various applied computer science fields like scientific computing, computer graphics, machine learning, and more. During the course, we will learn how to model and optimize numerical systems, both linear and nonlinear, analyze multi-dimensional data, and sample from complex domains. We'll also explore mathematical concepts and put our learning into practice by building our very own linear algebra computing library and neural networks from scratch! This will be a valuable tool that you can use in your future studies in applied computer science. By the end of the course, I hope you will develop a good understanding of linear algebra, numeric algorithms, and optimization.
COSC 89.18/189.02: Computational Methods for Physical Systems, 2019W, 2019F, 2020F, 2022W
The Physical Computing course is a good opportunity for you to dive into the exciting world of using math and algorithms to create computational solutions for physical systems. From simulating rigid bodies, soft bodies, and cloth, to designing drones and soft robots, this course covers all the fundamentals for physics-based simulation and design you need to know. You'll see how these concepts are applied in real-life scenarios, such as producing visually appealing animations, designing robots, and 3D printing. This is a hands-on course where you'll get to put your newfound knowledge into practice and see the results for yourself. Whether you're a beginner or have some experience under your belt, this course will give you the tools and techniques you need to succeed in this field.
COSC 89.25/189: GPU Programming and High-Performance Computing, 2020S
In this class, you'll get to explore the exciting world of high-performance computing and learn how to develop modern parallel computer code that can handle big, complex problems with ease. From GPU (CUDA) and CPU (multi-threading) parallel programming, to parallel data structures, parallelizable linear algebra, and particle systems, you'll get a comprehensive introduction to all the fundamental concepts. One of the highlights of this course is that you'll get to practice by designing and implementing your very own parallel numerical system for real-world large-scale computing applications. Whether it's computer graphics, computational physics, or machine learning, you'll get to work on real-world examples and see the results of your hard work firsthand.
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.