CSE
CSE
CSE CSE

2017-2018 SURE Research Projects in Computer Science and Engineering (CSE)

Directions: Please consider all of the projects in this list carefully before applying to the SURE program (http://sure.engin.umich.edu/).

You MUST list your top three project choices in order of preference (by CSE Project #) on your SURE application. You are welcome to contact faculty if you have additional, specific questions regarding these projects.



CSE Project #1:

Mood State Prediction for Individuals with Bipolar Disorder

Faculty Mentor: Emily Mower Provost (emilykmp @ umich.edu)

Prerequisites: Artificial intelligence, Machine learning, Programming.

Description: Speech patterns are modulated by the emotional and neurophysiological state of the speaker. There exists a growing body of work that examines this modulation in patients suffering from depression, autism, and post-traumatic stress disorder. However, the majority of the work in this area focuses on the analysis of structured speech collected in controlled environments. Here we expand on the existing literature by examining bipolar disorder (BP). BP is characterized by mood transitions, varying from a healthy euthymic state to states characterized by mania or depression. The speech patterns associated with these mood states provide a unique opportunity to study the modulations characteristic of mood variation. We will explore methods to detect evidence of mood from natural speech data.



CSE Project #2:

Enabling GUI-based Interactivity in Large Distributed Systems

Faculty Mentor: Mosharaf Chowdhury (mosharaf @ umich.edu)

Prerequisites: EECS 281; EECS 482 preferred; Prior experience in UX design; Prior experience in working with C/C++ and/or Java projects.

Description: Students will be working on understanding requirements and developing UX for one of the following projects. Depending on the project, they will learn about the inner workings of Linux kernels, modern GPUs, and different communication protocols within and across datacenters.

1. Infiniswap is a memory disaggregation mechanism that enables a single server to use up the memory capacity of the entire cluster. The goal of this project is to design an interactive UI for Infiniswap that (i) acts as a dashboard for the metrics that we're collecting about Infiniswap's internal workings and (ii) allows us to interact with Infiniswap via a GUI. During the process of development, one will learn the inner workings of a large-scale distributed system, virtual memory subsystem of Linux kernel, and high-level characteristics of RDMA communication protocol.

2. Gaia is a communication layer geo-distributed analytics systems that span across multiple datacenters. The goal of this project is to design an interactive UI for Gaia that (i) acts as a dashboard for the metrics that we're collecting about Gaia's internal workings and (ii) allows us to control Gaia's interactions with analytics frameworks such as Apache YARN and Apache Spark via a GUI. During the process of development, one will learn the inner workings of multi-datacenter distributed systems such as Gaia, YARN, and Spark, and high-level characteristics of wide-area communication.

3. Salus is a GPU memory sharing system that allows multiple TensorFlow jobs to be trained on the same GPU, increasing overall efficiency and performance. The goal of this project is to design an interactive UI for Salus that (i) acts as a dashboard for the metrics that we're collecting about Salus's internal workings and (ii) allows us to control Salus's interactions with deep learning frameworks such as TensorFlow and Torch via a GUI. During the process of development, one will learn the inner workings of deep learning systems such as TensorFlow, high-level characteristics of CUDA programming, and GPU memory management.


CSE Project #3:

Computing with graphs

Faculty Mentor: Valeria Bertacco (vale @ umich.edu)

Prerequisites: EECS 281, EECS 370. Recommended: C++, scripting, EECS376.

Description: More and more problems, particularly related to social networks and relational databases, rely on graphs to be solved. Examples include google search rankings, analysis of social networks and even geographical maps. In this project we want to create a hardware processor specialized and optimized to do graph traversals and computation. We plan to achieve this goal through ad-hoc computation and storage structures.


CSE Project #4:

Protecting processors from security attacks by moving attack targets

Faculty Mentor: Valeria Bertacco (vale @ umich.edu)

Prerequisites: EECS 280, EECS 373. Recommended: C++, python.

Description: The goal of this project is to protect microprocessors from hardware security attacks, that is, attacks perpetrated by exploiting a hardware design bug or a hardware modification injected by an evil designer. We plan to achieve this goal by mapping a portion of the design to an FPGA-like fabric, so that we can implement many different designs on the same hardware fabric. As a result, an attacker would be defeated by not knowing which design implementation is running on the hardware fabric.



CSE Project #5:

Computation pattern recognition...in software

Faculty Mentor: Valeria Bertacco (vale @ umich.edu)

Prerequisites: EECS 281. Recommended: C++, python.

Description: Performance is the key metric of success for data-intensive software applications. Hardware designers have spent the best part of the past decade in developing hardware accelerators specialized in delivering  top performance to specific types of algorithms. The goal of this project is to leverage these accelerators at their best: we want to parse software applications' source code to extract portions of code / patterns of  computation that are best suited to be mapped to a hardware accelerator.



CSE Project #6:

Plug-and-play custom chip assembly 

Faculty Mentor: Valeria Bertacco (vale @ umich.edu)

Prerequisites: Basic computer architecture and logic design (for instance, EECS 270 and EECS 370). Recommended: C++, scripting.

Description: Modern processors are often custom made to include a variety of components integrated on a single chip. Smartphone chips, for example, are comprised of graphic units, video decoders, smartradio modules, crypto engines, etc. Unfortunately, the prohibitive cost of integrating all these components effectively can discourage a lot of innovative, including small hardware startups. In this project, we seek to design a standard hardware substrate to which one can attach any set of hardware modules into a custom chip in a plug-and-play fashion. This will significantly reduce manufacturing cost and time, potentially opening up a new hardware ecosystem. 


CSE Project #7:

Collaborative Sensing for IoT 

Faculty Mentor: Valeria Bertacco (vale @ umich.edu)

Prerequisites: EECS 281, (EECS 370 or EECS 373 preferred). Recommended: C++, scripting.

Description: We are surrounded by multiple mobile smart devices, constantly sensing audio, video, temperature, motion, etc. Given their typically small processing power, these devices often have to transmit the data for processing (facial detection, intrusion alert, new pokemon, etc.) at remote servers. Unfortunately, data transmission incurs a lot of energy. By getting the sensing devices to collaborate in a novel way, this project seeks to allow individual devices to modulate their sensing resolution to significantly reduce data size and extend the battery life, while maintaining the same accuracy.


CSE Project #8:

Getting In Control of Your Control Flow (Computer Security Project)

Faculty Mentor: Todd Austin (austin @ umich.edu)

Prerequisites: EECS 280, C++ programming, compiler/operating system experience.

Description: Computer security has become a central focus in the information age. Though enormous effort has been expended on ensuring secure computation, software exploitation remains a serious threat. The software attack surface provides many avenues for hijacking; however, most exploits ultimately rely on the successful execution of a control-flow attack. This diversion of control flow is made possible by the pollution of control flow structure with attacker-injected runtime data.  In this project, we are developing a novel approach to ensure the runtime integrity of program control flow: Control-Data Isolation. Rather than addressing control-flow attacks by layering additional complexity, our work takes a subtractive approach; subtracting the root cause of control-flow attacks by removing all control indirection from software. Students working on this project will be developing a LAMP stack (Linux/Apache/MySQL/PHP) based on this powerful new technology.  The work will require compiler and operating systems programming.


CSE Project #9:

A Secure Architecture Based on Ensembles of Moving Target Defenses (Computer Security Project)

Faculty Mentor: Todd Austin (austin @ umich.edu)

Prerequisites:EECS 280, C++ programming, compiler/operating system experience.

Description: Secure systems today are built by identifying potential vulnerabilities and then adding protections to the system to thwart the associated attacks. Unfortunately, the complexity of today's systems makes it impossible to prove that all attacks (or even a class of attacks) can be stopped, so clever attackers find a way around even the most carefully designed protections. In this work, we take secure system design on the offensive - instead of attempting (and failing) to find every last vulnerability, we create an impenetrable sequence of roadblocks between the attacker and the critical information assets they require to mount an attack, a technique we call Ensembles of Moving Target Defenses (EMTDs). The project is building a complete system based on EMTD protections, which will involve building architecture, microarchitecture, compiler, operating system, and runtime support.


CSE Project #10:

Helping robots understand how the world works

Faculty Mentor: Walter Lasecki (wlasecki @ umich.edu)

Prerequisites: Have some programming experience, be willing to learn about study methods and web programming, knowledge of robotics, the ability to work on tasks both independently and with groups.

Description: Robots hold the promise of changing the way that we live in spaces, and the tasks that we choose to complete ourselves. However, current robots struggle to understand the world around them, and as a result, are limited in application to repetitive, pre-defined tasks. This project aims to use crowdsourcing to train robots on-the-fly to better understand how to complete tasks in the world, and then help to generalize that knowledge so that AI planning techniques can predict how to complete future tasks. Our goal is to create a flexible robotic platform that can learn continuously in real environments, and solve problems that would be well beyond the scope of automated approaches alone.


CSE Project #11:

AR Collaboration

Faculty Mentor: Walter Lasecki (wlasecki @ umich.edu)

Prerequisites: Have some programming experience, be willing to learn about study methods and web programming, the ability to work on tasks both independently and with groups.

Description: How can augmented and virtual reality be used to create more powerful, effective collaborative experiences? This project aims to introduce techniques and systems for designing new collaborative tools and environment on-the-fly as people collaborate. If successful, we will be able to shed the traditional limitations of physical reality when it comes to on-demand creation of useful artifacts, and improve people’s ability to collaborate both in shared spaces and remote (virtual) spaces.


CSE Project #12:

Crowdsourcing for Smarter/Safer Autonomous Vehicles

Faculty Mentor: Walter Lasecki (wlasecki @ umich.edu)

Prerequisites: Have some programming experience, be willing to learn about study methods and web programming, the ability to work on tasks both independently and with groups.

Description: Computer vision algorithms (e.g., those that will one day power autonomous vehicles) require massive amounts of training data, which is not always available for rare scenarios that are only encountered few and far between. For example, some traffic events that are seen in real-world driving settings (e.g., a car rolling over) are only observed every few billion miles driven. This means that traditional data collection approaches, which involve driving test cars on real roads, are very unlikely to see (and be trained on) such an event. However, there are many such cases that arise every day throughout the world. This project aims to use supplemental sources of 2D data, such as traffic cameras that would currently not be useful because autonomous vehicles need 3D data in order to reason about a scene, in order to create simulated 3D scenes in which to learn from. If successful, we have the ability to increase the amount of training data available to autonomous vehicles for rare events by multiple orders of magnitude.


CSE Project #13:

Conversational Systems

Faculty Mentor: Walter Lasecki (wlasecki @ umich.edu)

Prerequisites: Have some programming experience, be willing to learn about study methods and web programming, the ability to work on tasks both independently and with groups.

Description: Conversational technologies afford us with new opportunities to conveniently seek information or advice in a wide variety of contexts. The primary objective of this project is to develop a cognitive conversational system that functions as an academic advisor that can naturally interact with users. Training this system will require a great deal of conversational data. In this project we are collecting and annotating various types of training data. We are also exploring innovative methods of expanding training datasets and scaling data annotation. Additionally, this project aims to identify the resources and information necessary to train non-experts to effectively provide advice in domains that typically require expertise, which can be applied to a cognitive conversational system. If successful, we will be able to establish scalable training data collection strategies and will have a process for developing cognitive conversational systems that can be generalized and applied in domains other than academic advising.


CSE Project #14:

Teaching Machines to See and Think

Faculty Mentor: Jia Deng (jiadeng @ umich.edu)

Prerequisites: EECS 281

Description: Student will participate in a research project in the Vision & Learning Lab (https://vl-lab.eecs.umich.edu/). Research in the lab is focused on three topics: computer vision, machine (deep) learning, and automated formal reasoning. Please check the lab website for recent papers and projects and get a sense of the flavor of the projects we do. Student will be matched to a specific project based on their background and skill set.


CSE Project #15:

Machine Learning for Data-Driven Decisions (MLD3) in Healthcare

Faculty Mentor: Jenna Wiens (wiensj @ umich.edu)

Prerequisites: Machine learning, Linear algebra, Probability and statistics, Programming experience.

Description: MLD3 focuses primarily on problems that lie at the intersection of machine learning and healthcare. We have several projects that leverage patient data, including structured clinical data, unstructured clinical notes, physiological waveforms, and images, for building predictive models of adverse outcomes. Our applications range from short-term in-hospital outcomes (e.g., acquisition of healthcare-associated infections) to long-term chronic diseases (e.g., progression of cystic fibrosis). While we are motivated by problems with potential for impact in healthcare, we aim to make contributions to machine learning through the development of novel techniques for organizing, processing and transforming these data into actionable knowledge. To this end, we are particularly interested in time-series analysis, transfer/multitask learning, and intelligible models. In this project, the undergraduate researcher will support the development and analysis of computational tools for improving patient outcomes. Students who intend to continue research beyond the summer are especially encouraged to apply.


CSE Project #16:

Deep learning for perception and reasoning

Faculty Mentor: Honglak Lee (honglak @ umich.edu)

Prerequisites: Grade of A or higher in undergrad ML (EECS 445); solid skills in calculus, probability, and statistics; strong programming skills; prior experience in deep learning libraries (Tensorflow, pytorch, etc.) is desirable but not required.

Description: The brain has an impressive ability to process a variety of sensory input data, including images, sounds, languages, and touches. Recent biological and computational studies suggest that the brain may be using a single machine learning algorithm to develop representations from such diverse sensory domains. Furthermore, humans can readily learn from vast amounts of unlabeled data, together with only a small amount of supervision; this is because humans can easily recognize and discover underlying structures from seemingly complex input data. Inspired by this evidence, we aim to develop machine learning algorithms to develop good feature representations from large unlabeled and labeled data. In this project, we will focus on developing machine learning algorithms and applying them to perception and reasoning problems, which involve computer vision and language. Students who intend to continue beyond summer and perform long-term research (at least a year) are strongly encouraged to apply.


CSE Project #17:

Deep reinforcement learning

Faculty Mentor: Honglak Lee (honglak @ umich.edu)

Prerequisites: Grade of A or higher in undergrad ML (EECS 445); solid skills in calculus, probability, and statistics; strong programming skills; prior experience in deep learning libraries (Tensorflow, pytorch, etc.) is desirable but not required.

Description: The brain has an impressive ability to process a variety of sensory input data, including images, sounds, languages, and touches. Recent biological and computational studies suggest that the brain may be using a single machine learning algorithm to develop representations from such diverse sensory domains. Furthermore, humans can readily learn from vast amounts of unlabeled data, together with only a small amount of supervision; this is because humans can easily recognize and discover underlying structures from seemingly complex input data. Inspired by this evidence, we aim to develop machine learning algorithms to develop good feature representations from large unlabeled and labeled data. In this project, we will focus on developing machine learning algorithms and applying them to perception and control problems, for example where an agent interacts with a complex environment with partial observability and sparse rewards. In order to tackle the problem better, we will also explore state-of-the-art techniques in vision and language. Students who intend to continue beyond summer and perform long-term research (at least a year) are strongly encouraged to apply.


CSE Project #18:

Systematic Testing of Machine Learning Systems

Faculty Mentor: Baris Kasikci (barisk @ umich.edu)

Prerequisites: Software testing experience, strong programming skills, basic knowledge of machine learning techniques

Description: Machine learning systems are increasingly deployed in safety- and security-critical systems such as self-driving cars and intrusion detection. Existing frameworks for testing the correctness and predictability of machine learning systems mostly employ ad-hoc methods. Consequently, the reliability and safety of increasingly many systems that employ machine learning techniques is compromised. For instance, recently a Google self-driving car crashed into a bus and a Tesla auto-piloted vehicle was involved in a fatal accident. The key challenge is that machine learning systems such as deep neural networks are not structured like a traditional program, where existing systematic testing approaches can be leveraged.

In this project, we will develop systematic techniques for testing machine learning systems. In particular, we will focus on redefining existing well-established systematic software testing techniques such as symbolic execution and model checking in the context of machine learning systems. We will define metrics for measuring the success of testing machine learning systems (analogous to code coverage), and we will optimize testing approaches to maximize those metrics.


CSE Project #19:

Modeling aspects of social polarization

Faculty Mentor: Grant Schoenebeck (schoeneb @ umich.edu)

Prerequisites: EECS 376; Proof-based math; Probability.

Description: For this project the student will explore aspects of social network polarization caused both by selection (whom people choose as their friends), and influence (how ties influence one another). Students will develop and evaluate models for polarization and social sorting. Evaluation will be done analytically using proof techniques from mathematics and theoretical computer science, using simulation, and collecting and fitting data. For example, students might explore how new communities form out of old ones.


CSE Project #20:

Large Scale Graph Analytics

Faculty Mentor: Danai Koutra (dkoutra @ umich.edu)

Prerequisites: Linear algebra; familiarity with probability theory and statistics; good programming skills (e.g., Python, JAVA, C/C++, Matlab, or R); basic knowledge of machine learning is desirable.

Description: Graphs naturally represent information ranging from links between webpages to friendships in social networks, to connections between neurons in our brains. These graphs often span millions or even billions of nodes and interactions between them. In this project we will focus on developing scalable and practical methods and algorithms for exploring and analyzing large-scale networks, as well as applications in various domains (e.g., neuroscience, web, social science, anomaly detection in computer networks). The undergraduate researcher will have the chance to analyze large-scale datasets in distributed settings.


CSE Project #21:

Realizing Advanced Lattice Cryptography

Faculty Mentor: Chris Peikert (cpeikert @ umich.edu)

Prerequisites: EECS 376, some abstract algebra (groups/rings), proof-based math.

Description: In this project, the student will study advanced lattice-based cryptosystems and realize them in practice by implementing, testing, and benchmarking them using a modular library built especially for this purpose.  This will also require extending or modifying the library itself with new features and functionality.  Because the library is written in the Haskell language, the student should have
some familiarity with functional programming (either Haskell itself, or OCaml, Scheme, LISP, etc.).  Prerequisites include mathematical maturity and familiarity with basic concepts from abstract algebra like groups, rings, modules, bases, etc.