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 291K Trustworthy ML in Security

The course is about cutting edge techniques in machine learning and cybersecurity. We will introduce various deep learning methods that are widely used in security applications, including multilayer perceptron, recurrent neural networks, and transformers. We will also discuss the trustworthiness issue of these methods, including explainability and adversarial robustness. 
 

CMPSC 190I Spatial Interface Design and Implementation

Real world tasks such as assembly, repair, or surgery, often require the simultaneous use of both hands. In these scenarios, one hand is used to grasp a tool like a screwdriver or a scalpel, while the other hand is engaged in manipulating the object being worked on. Creating one-handed interfaces for users engaged in physical tasks that involve tools or objects presents several challenges. Learning how do to these tasks with an AI-based task assistant in AR/VR requires the ability to not only perform the task but engage with the AR/VR interface simultaneously.