CMPSC 291I Computational Fabrication

The increase in diversity and functionality of digital fabrication technologies has provided new ways to transition between the digital and physical realms. Computational fabrication— a particularly powerful application of digital fabrication— combines computer programming with digital fabrication. Computational fabrication enables people to design digital forms by writing code and then construct these forms, at least partially, via fabrication machines, like 3D printers and computer-numerical-controlled (CNC) machines.

CMPSC 292F Machine Learning on Graphs

Machine learning on graphs 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 methods to encode graphs (static/dynamic, attributed, undirected/directed, single/ensemble) into low-dimensional spaces to facilitate machine learning. Specific topics include random walks, kernels, spectral analysis, generative models, node embedding, subgraph embedding, and graph neural networks.

CMPSC 292F Statistical Reinforcement Learning

In this PhD level course, you will learn the models and algorithms of reinforcement learning (RL) as well as techniques in analyzing the sample-complexity of reinforcement learning algorithms in various settings.  The focus of the course would be on the statistical foundation of RL and for the most part we will consider the Markov decision process (MDP) model with finite states and finite actions, though towards the end of the course we will talk about function approximations as well as the ideas behind some deep RL algorithms. 

CMPSC 190I Program Synthesis for the Masses

The goal of this course is to give an introduction to program synthesis, a new field at the intersection of programming languages, formal methods, and AI. The course will explore a number of fundamental questions around the problem of how to automatically discover programs that do what the user expects. The workloads include 2~3 programming assignments, 4~5 paper reviews, and a final project. In particular, the class will explore the following questions:

CMPSC 292F Data Integration Techniques

Enterprise systems are large-scale software applications to support business operations; they typically include software systems for data management, business process/workflow management, information flows, reporting, and data analytics.  Focusing only the data management aspect, a typical enterprise has to struggle with many data integration difficulties, since its data are usually spread around many database systems, workflow systems, file systems, etc. and in a variety of form possibly with no coherent semantics.

CMPSC 291A Real-Time High Quality Rendering

One of the perennial goals of computer graphics is creating high quality images which are indistinguishable from photographs: a goal referred to as photorealism. Another important goal is interactivity for visualization, simulation, gaming and other real-time applications. These two goals have historically been at odds with each other. In this course, we will review the history and some of the recent ideas that seek to bridge the gap between realism and interactivity. We will focus on the use of complex lighting and shading within limited computation time.

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. The course will be structured around paper readings, class discussions, high-quality paper review writing, and perhaps an individual research project.

CMPSC 292A Algorithmic Graph Theory

Graphs are a remarkably versatile combinatorial object, used to model social, neural, road and computer networks, execution flow of programs, relations in databases, and countless other things. In this class we will investigate computational problems whose inputs are graphs, and how algorithms for such problems can exploit the structure of the input graph to improve performance. The focus will be on provable worst-case running time performance of our algorithms. On the way the class will expose students to some of the modern structural graph theory.

CMPSC 291A Future User Interfaces

In this course, we will examine upcoming user interface technologies that will impact how we interact with our devices and digital content in the future. These include: immersive technologies (augmented and virtual reality), physiological interfaces (e.g., brain and body interfaces), wearable computing (e.g., devices both for reading and writing data to the user's body), multisensory and multimodal interactions in mixed, augmented and virtual realities (e.g., spatial audio, body movement), haptics (e.g., force feedback, sensing weight, feeling textures), and others.