CMPSC 293C Software Fuzzing for Correctness and Security

Software fuzzing is a testing technique that is heavily used in industry and studied in academia. The basic idea is simple: randomly generate inputs to the system under test and determine if the system executes properly for each input. However, there are many complexities and hard problems that arise when putting this idea into practice. We will study the different types of software fuzzing and the current state of fuzzing research through reading a number of relevant papers.

CMPSC 291A Mixed and Augmented Reality

Mixed and Augmented Reality, an active research field since the 1990s, has recently gained significant popularity because of the possibility of being implemented on smartphones and because of its unique approach of offering context-based computing directly in a person's field of vision. Augmented Reality is the concept of overlaying computer-generated information on top of the physical world. Mixed Reality is a bit broader and subsumes the fields of Augmented Reality, Augmented Virtuality, and Virtual Reality.

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 291A Adversarial Machine Learning

Deep neural networks have achieved remarkable success owing to their superior predictive performance. Yet, they are extremely vulnerable to adversarial attacks. This makes adversarial machine learning an emerging topic. The idea of learning with adversaries is crucial for expanding the learning capability, ensuring trustworthy decision-making, and enhancing the generalizability of AI models. Despite diverse adversarial concepts and applications, they share very similar learning, computation, and optimization foundations.

CMPSC 190A Algorithmic Decision Making

How can we make good decisions when our information about the future is incomplete or uncertain? We routinely confront this dilemma in, say, trying to sell a house, buying a stock, choosing an employer, seeking medical treatment, or starting a business. In almost all cases, we are making a prediction about the future and trying to optimize our expected gain. In many cases, we are not acting alone but rather in competition with other players, which requires us to also anticipate their actions. Similarly, many societal decisions pose problems of fair division or social choices (voting).

CMPSC 190I Introduction to Natural Language Processing

Have you ever used intelligent virtual assistants such as Google Now, Apple Siri, Amazon Alexa or Microsoft Cortana? Wondering what are the technologies behind such systems? How did IBM's Watson beat top human Jeopardy players? Or you are just curious about how Google Translate works? Understanding human language is an important goal for Artificial Intelligence, and this course introduces fundamental theories and practical applications in Natural Language Processing (NLP).