Filter
Undergraduate

CMSC 11111: Creative Coding

Ravi Chugh
This course is an introduction to programming, using exercises in graphic design and digital art to motivate and employ basic tools of computation (such as variables, conditional logic, and procedural...

This course is an introduction to programming, using exercises in graphic design and digital art to motivate and employ basic tools of computation (such as variables, conditional logic, and procedural abstraction). We will write code in JavaScript and related technologies, and we will work with a variety of digital media, including vector graphics, raster images, animations, and web applications.

Research Areas: Programming Languages
Undergraduate

CMSC 25910: Engineering for Ethics, Privacy, and Fairness in Computer Systems

Blase Ur
This course takes a technical approach to understanding ethical issues in the design and implementation of computer systems. Tensions often arise between a computer system's utility and its privacy-invasiveness, between...

This course takes a technical approach to understanding ethical issues in the design and implementation of computer systems. Tensions often arise between a computer system’s utility and its privacy-invasiveness, between its robustness and its flexibility, and between its ability to leverage existing data and existing data’s tendency to encode biases. The course will demonstrate how computer systems can violate individuals’ privacy and agency, impact sub-populations in disparate ways, and harm both society and the environment. It will also introduce algorithmic approaches to fairness, privacy, transparency, and explainability in machine learning systems. Through hands-on programming assignments and projects, students will design and implement computer systems that reflect both ethics and privacy by design. They will also wrestle with fundamental questions about who bears responsibility for a system’s shortcomings, how to balance different stakeholders’ goals, and what societal values computer systems should embed.

Research Areas: Human Computer Interaction, Security & Privacy, Systems, Architecture & Networking
Undergraduate, PhD

CMSC 20370: Inclusive Technology: Designing for Underserved and Marginalized Populations

Marshini Chetty
Creating technologies that are inclusive of people in marginalized communities involves more than having technically sophisticated algorithms, systems, and infrastructure. It involves deeply understanding various community needs and using this...

Creating technologies that are inclusive of people in marginalized communities involves more than having technically sophisticated algorithms, systems, and infrastructure. It involves deeply understanding various community needs and using this understanding coupled with our knowledge of how people think and behave to design user-facing interfaces that can enhance and augment human capabilities. When dealing with under-served and marginalized communities, achieving these goals requires us to think through how different constraints such as costs, access to resources, and various cognitive and physical capabilities shape what socio-technical systems can best address a particular issue. This course leverages human-computer interaction and the tools, techniques, and principles that guide research on people to introduce you to the concepts of inclusive technology design. You will learn about different underserved and marginalized communities such as children, the elderly, those needing assistive technology, and users in developing countries, and their particular needs. In addition, you will learn how to be mindful of working with populations that can easily be exploited and how to think creatively of inclusive technology solutions. You will also put your skills into practice in a quarter long group project involving the creation of an interactive system for one of the user populations we study.

Research Areas: Human Computer Interaction
Undergraduate

CMSC 25040: Introduction to Computer Vision

Michael Maire
This course provides an introduction to computer vision, covering a range of topics from image formation through object recognition systems. We study feature and edge detection, model fitting, stereo, optical...

This course provides an introduction to computer vision, covering a range of topics from image formation through object recognition systems. We study feature and edge detection, model fitting, stereo, optical flow, structure from motion, segmentation, and object detection. For these tasks, mathematical tools and associated algorithms are developed. We review classic algorithms and present modern neural network approaches.

Research Areas: Visual Computing
Undergraduate

CMSC 11900: Introduction to Data Science II

Michael Franklin, Dan Nicolae
This course is the second quarter of a two-quarter systematic introduction to the foundations of data science, as well as to practical considerations in data analysis. A broad background on...

This course is the second quarter of a two-quarter systematic introduction to the foundations of data science, as well as to practical considerations in data analysis. A broad background on probability and statistical methodology as well as a basic proficiency in RStudio will be provided. More advanced topics on data privacy and ethics, reproducibility in science, data encryption, and basic machine learning will be introduced. We will explore these concepts with real-world problems from different domains.

Research Areas: AI & Machine Learning, Data & Databases
Undergraduate

CMSC 22880: Introduction to Quantum Computing

Diana Franklin
This introduction to quantum computing will cover the key principles of quantum information science and how they relate to quantum computing as well as the notation and operations used in...

This introduction to quantum computing will cover the key principles of quantum information science and how they relate to quantum computing as well as the notation and operations used in QIS. We will then take these building blocks and linear algebra principles to build up to several quantum algorithms and complete several quantum programs using a mainstream quantum programming language.

Research Areas: Systems, Architecture & Networking