CMPSC 190I Introduction to Offline Rendering

This course will teach you everything about offline rendering, so you will be able to write a fully functional industry-level renderer (such as Disney's Hyperion and Pixar's RenderMan) that produces stunning graphics. Topics in this course will cover the physics of light, the rendering equation, Monte Carlo integration, path tracing, physically-based reflectance models, participating media, other advanced light transport methods, production rendering approaches, and so on.

CMPSC 292F Machine Learning on Graphs

Machine learning on graphs (static/dynamic, attributed, undirected/directed, single/ensemble) has emerged as an important research topic that finds applications in many domains including social networks, infrastructure design and maintenance, drug discovery, brain networks, and material design. This course will discuss recent advances in machine learning on graphs including neural network architectures and methods to encode graphs into low-dimensional spaces to facilitate machine learning.

CMPSC 190D Introduction to Allolib

This course provides an introduction to digital audio through the lens of the software used by the Allosphere Research Group at UC Santa Barbara. (See: https://github.com/AlloSphere-Research-Group ). We will learn the basics of music synthesis (e.g. Additive Synthesis, Subtractive Synthesis, FM Synthesis, etc.) by exploring these concepts using the software library used to power the Allosphere at UCSB. If time permits, we may also explore some of the graphics capabilities of the software, but the focus will be on sound.

CMPSC 292C Computer-Aided Reasoning for Software

This course is a graduate-level introduction to automated reasoning techniques and their application in tools for the design, analysis, and construction of software. In the first half of the course, we will survey the logical foundations and algorithms behind SAT solvers and SMT solvers. In the second half of the course, we will apply these techniques to automatic bug finding, program verification, and program synthesis. As a student in this course, you will learn how solvers work, and how to use them to build cool programming tools. 

CMPSC 293N ML for Networked Systems

In recent years, we have witnessed the widespread usage of ML tools for various classification, detection, and control problems. More recently, we have witnessed the use of ML for various networking problems as well. However, operationalizing ML solutions for networked systems is more nuanced than simply calibrating existing tools, developed for other domains (image classification, NLP, etc.). More in-depth exploration to develop flexible, scalable, and generalizable ML-based networked systems.

CMPSC 293G Security and Cryptography

The course will cover techniques to compute on encrypted data, particularly homomorphic encryption, both partial homomorphic encryption, and fully homomorphic encryption. The course will have a large theory component. However, it will also discuss how homomorphic encryption is applied to real systems such as databases, media streaming services, anonymous messaging services, and machine learning systems. 

There are no official prerequisites; however, a background in cryptography/maths/systems will be very helpful.

CMPSC 293E Computer Science of Accelerator Design

From Microsoft’s Catapult, to Amazon’s F1 service, to Google’s ASIC cloud, it is clear that to achieve the energy efficiency demanded by computing at enormous scale we will need specialized machines for everything from neural network training and inference to media re-coding and beyond.  The design of such accelerators will require new algorithms more suited to efficient hardware operation, new programming languages that can cleanly and rapidly define computations ready for acceleration, and new software tools for exploring and rapidly prototyping design options.