2011 Summer Undergraduate Research in Engineering (SURE)/Summer Research Opportunity Program (SROP) Projects
Computer Science and Engineering (CSE)

Directions: Please consider all of the projects in this list carefully before applying to the SURE/SROP program (http://www.engin.umich.edu/gradadmissions/sure/index.html). You MUST list your top three project choices in order of preference (by CSE Project #) on your SURE/SROP application.  You are welcome to contact faculty if you have additional, specific questions regarding these projects.


CSE Project 1: Quantitative Web Search
Faculty Mentor: Michael Cafarella (michjc@umich.edu)
Prerequisites: Familiarity with operating systems (EECS 482) OR databases (EECS 484), data structures and algorithms (EECS 281), machine learning; familiarity with Internet systems issues a plus; must be able to program in Java or C++

Today's web search engines take textual queries and return pointers to documents.  But there is also a large amount of numeric data online, in the form of spreadsheets, governmental data sources, and technical product information.  Right now searching for this data is almost impossible.  This project involves building the infrastructure for a quantitative search engine that will allow searchers to find all kinds of interesting datasets that today are hidden in plain sight.  Students with an interest in either machine learning or system/database programming will find something useful to work on.


CSE Project 2: Computational Strategic Reasoning
Faculty Mentor: Michael Wellman (wellman@umich.edu)
Prerequisites: Programming ability; interest/background in economics, game theory, and/or statistics (helpful though not required)

The Strategic Reasoning Group (http://www.eecs.umich.edu/srg/) develops computational tools to support reasoning about complex strategic scenarios, including trading in markets (e.g., financial, supply chains, Internet advertising), games (e.g., poker), and other applications.  The undergraduate researcher will support development and analysis of strategies for some of these domains, in preparation for an international competition (e.g., the Trading Agent Competition, http://tradingagents.org) or as part of a related research effort.


CSE Project 3:  Solving Hard Problems by Solving Harder Problems Halfway
Faculty Mentor: Igor Markov (imarkov@eecs.umich.edu)
Prerequisites: Algorithms and Data Structures (i.e. EECS 281); recommended courses (one or more of the following): Foundations of Computing (i.e. EECS 376), Advanced and Object-Oriented Programming (i.e. EECS 381), Introduction to Algorithms (i.e. EECS 477), Logic Synthesis and Optimization (i.e. EECS 478), Introduction to Artificial Intelligence (i.e. EECS 492)

A variety of computational problems continue to elude efficient algorithms, either because there aren't any such algorithms or because we cannot find them. However, solving practical instances of these problems remains important in applications, and existing algorithms are often helpful (although we sometimes don't understand why they work so well in special cases). A meta-approach developed recently studies properties of each given problem instance, such as its symmetry, sparsity, hierarchical structure, etc, and uses them to speed up the main solver. This approach has worked well, given that symmetry-finding and checking other possible properties is often easier than solving the problem directly. We are going to review these success stories and then try something different -- solving hard problems by partially solving even harder problems, or solving harder problems in special cases. In particular, we seek to develop new applications of computational techniques proposed recently.

Relevant problems range from number-factoring to NP-complete problems, such as Boolean SATisfiability, and problems beyond NP, such as constructing binary decision diagrams and optimally solving sliding-tile puzzles. While theory may play a role in this project, our goal is to develop algorithms and software that can be tried on interesting instances of hard problems.  Students with interests in specific hard problems will be able to steer their research accordingly.


CSE Project 4: iPhone vs. Android Phones: System and Security Challenges of Smartphone Computing
Faculty Mentor: Z. Morley Mao (zmao@umich.edu)
Prerequisites: Programming in C or C++ or Java (e.g. EECS 280 and EECS 281)

We are collecting a diverse set of data from tens of thousands of smartphone users about network performance and power usage to gain a better understanding of why sometimes applications on smartphones are much slower than expected.  Worse yet, they may quickly deplete your battery!  The students will work with an established team of graduate students on various system issues in designing better smartphone applications, analyzing usage data of existing popular applications, and designing novel applications to exploit the phone platform as a sensor to monitor network performance, for instance.  Students will have hands-on experience programming on smartphones, measuring energy consumption of various applications, testing security properties, etc.


CSE Project 5: Unwanted Traffic: Stop the Spam in Emerging Networks
Faculty Mentor: Z. Morley Mao (zmao@umich.edu)
Prerequisites: Programming in C or C++ or Java (e.g. EECS 280 and EECS 281)

We all receive spam in our email accounts.  Spams in other networks such as cellular networks can be potentially more damaging, e.g., voice spam, MMS or SMS spam. This project can take the perspective of an attacker or a defender (or both) by identifying vulnerabilities of existing smartphone applications to be exploited for sending spam or attacked through spam, as well as by devising defense mechanisms to detect such malicious traffic.  We will also explore spam in online social networks.


CSE Project 6: Implement a Robot Navigation System Using a Microsoft Kinect 3D Sensor
Faculty Mentor: Edwin Olson (ebolson@umich.edu)
Prerequisites: Solid programming experience in an object oriented language (preferably Java); experience compiling and troubleshooting Linux kernel drivers; experience with robotics (a robotics course, FIRST, etc); students with strong math skills (particularly linear algebra) or previous computer vision experience are especially desired

The Microsoft Kinect vision sensor provides dense 3D data at a very low price point and is rapidly revolutionizing robot perception and navigation. In this project, the student will integrate a Kinect vision sensor with our MAGIC 2010 robotics platform. There are several directions in which the project can go, including using the sensor for obstacle avoidance, using the sensor for building maps of the environment, or using the sensor to follow the leader (which might be either another robot or a person). The student might use multiple Kinect sensors, tiled together into a ring, to achieve 360 degree field of view. The student might also repackage the Kinect sensor into a more compact plastic housing using our 3D rapid-prototyping printer.

We are looking for up to two students who will work together on these projects; they will likely have somewhat different ultimate goals, but will help each other and complement each other's skills.


CSE Project 7: Brain-inspired Unsupervised Feature Learning for Pattern Recognition
Faculty Mentor: Honglak Lee (honglak@eecs.umich.edu
Prerequisites: Linear algebra; probability and statistics; programming experience in MATLAB, python, or C/C++; knowledge about machine learning or artificial intelligence is desirable

The brain has an impressive ability to process a variety of sensory input data, including images, sounds, languages, and touches.  More interestingly, 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 data.  Specifically, we will develop novel learning algorithms based on sparse coding, restricted Boltzmann machines, autoencoders, slow feature analysis, and deep networks. Further, we apply these algorithms to learn high-level features from large unlabeled data (such as large-scale image collections, speech, video, text, and robotic sensors), and we then use these learned features to supervise learning tasks in computer vision, audio recognition, text processing, robotics, and data mining.

Interestingly, these features often outperform standard features carefully hand-tuned by domain experts.  Also, our general purpose algorithms will allow machine learning systems to be much more easily applied various problems in artificial intelligence and data mining, and to achieve superior performance without the manual feature engineering while using significantly less labeled data.  In this project, students will learn about theoretical foundations and experimental techniques in unsupervised feature learning and (more broadly) machine learning.  Depending on individual interest and strength of each student, the task will be chosen among theoretical studies, algorithmic development, software design and programming, and large-scale computational experiments.  Students will evaluate their research projects on practical applications, such as computer vision, speech recognition, robotics, text understanding, and data mining.

Students who intend to continue beyond summer and perform long-term research (at least a year) are strongly encouraged to apply.


CSE Project 8: Non-programmatic Layouting on iPhones and iPads
Faculty Mentor: Georg Essl (gessl@umich.edu)
Prerequisites: Programming in C or C++; programming in Lua and background in HCI a plus

Mobile multi-touch devices change how we interact with computers. Screen space is limited yet we have new and rich input modalities such as 10-finger multi-touch. The goal of this research project is to design a two-dimensional GUI layouting system that is purely based on multi-touch input. We will be using a modifyable embeddable script language called Lua, which is also popular in game modding.


CSE Project 9: Networked Mobile Performance
Faculty Mentor: Georg Essl (gessl@umich.edu)
Prerequisites: Programming in C or C++; network and Lua programming and background in music a plus

Mobile devices can be used for interactive music making. They also tend to be networked. How can one facilitate playing together over a network? This project explores scalable strategies for synchronization of live music performance of mobile devices under various networking conditions.


CSE Project 10: Cloud Computing for Mobility
Faculty Mentor: Brian Noble (bnoble@eecs.umich.edu)
Prerequisites: Data Structures and Algorithms required; one of: Operating Systems, Networking, Distributed Systems is helpful

Mobile devices are often under-powered compared to desktop or server-class machines.  So, they typically require help from online services---particularly those "in the cloud."  In this project, the student will explore the use of Google's App Engine or Microsoft's Azure platforms to create supporting infrastructure for a variety of mobile computing tasks: data collection, context management, etc.  Willingness to dive in and get your hands dirty is essential!


CSE Project 11: Computational Methods to Predict Adverse Cardiovascular Outcomes
Faculty Mentor: Zeeshan Syed (zhs@umich.edu)
Prerequisites: Some knowledge of signal processing; substantial programming experience; data mining or machine learning/artificial intelligence (strongly preferred but not required)

Cardiovascular disease is the leading cause of death around the world. There are an estimated 1.5 million heart attacks in the U.S. each year, and nearly half a million deaths take place each year due to cardiac-related causes. In this context, the large volumes of cardiovascular data that are collected in hospitals and during the course of clinical trials present an exciting opportunity to advance patient care by capturing prognostic phenomena associated with specific cardiac conditions, and by providing fresh insights into disease dynamics over long time scales. The focus of our work is to discover novel markers for adverse cardiovascular outcomes using sophisticated computational methods for the structured analysis of large multi-signal, multi-patient datasets. These risk markers can be used to develop real-time methods for improved prognosis and intervention.


CSE Project 12: Finding Physiological Markers for Mental Health Disorders
Faculty Mentor: Zeeshan Syed (zhs@umich.edu)
Prerequisites: Data mining or machine learning/artificial intelligence (strongly preferred but not required); programming experience

Hundreds of millions of people are affected by mental health disorders around the world. Cost-effective treatments exist for most disorders, and, if correctly applied, could enable most of those affected to become functioning members of society. Unfortunately, one of the challenges in this context is matching patients to treatments that are appropriate for their risk. The focus of this work is to investigate the development of physiological markers that can be used to quantify the extent of different mental health disorders, and choose treatments for each patient that would minimize adverse sequelae.


CSE Project 13: Botnet Detection and Mitigation
Faculty Mentors: Farnam Jahanian (farnam@eecs.umich.edu), Michael Bailey (mibailey@eecs.umich.edu)
Prerequisites: Programming, Data Structures and Algorithms; an active interest in building (or destroying) software systems

Underlying much of today's cyber crime--- from spam, phishing, denial of service, to click fraud and beyond---are a complex ecosystem of attacker tools and networks. Often referred to as Botnets, these large pools of compromised computers sitting in homes, schools, and businesses are being used by attackers as anonymous proxies to hide their identities and provide disposable attack resources. In an effort to detect and mitigate the threat posed by botnets, our group has been investigating a wide variety of interesting technical approaches, including building models of the way botnets work, constructing new detection algorithms, deploying honeypots and decoy technologies, unraveling the secrets of malware, etc. As a team member on this project, you will have the opportunity to immediately and convincingly see the fruits of your labor as the solutions from our group enjoy wide deployment in production computer networks around the world.


CSE Project 14: Mobile Security
Faculty Mentors: Farnam Jahanian (farnam@eecs.umich.edu), Michael Bailey (mibailey@eecs.umich.edu)
Prerequisites: Programming, Data Structures and Algorithms; an active interest in building (or destroying) software systems

Mobile platforms such as the T-Mobile G1, Apple iPhone, and Nokia N-Series are reinventing the mobile landscape by opening up third-party development and by providing sophisticated productivity, communication, and application suites. Mobile devices are increasingly used to store sensitive personal information such as financial data used for mobile payments and banking. As result of these changes, standard techniques, methodologies, and best practices for securing modern mobile devices have yet to be established. Our research into mobility and security attempts to address the wide range of challenges faced in this unique environment including, but by no means limited to: (i) mobile operating systems have very different security models (ii) mobile devices are highly resource constrained (iii) mobile devices have inherently different usability patterns. As a member of our team you will get to actively design novel security solutions for a wide array of mobile devices and work directly with our sponsors, including Google, to implement your proposed solutions.

CSE Project 15: Secure Software for the Masses

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

It's hard to write robust software.  Nearly every large computer system crashes, has security vulnerabilities, and is difficult to maintain. The effects of these bad programs can be felt all the way from the nearly $60 billion the US economy loses annually due to software bugs to the final report you lose because of a malware infestation.  To combat this, our lab builds hardware mechanisms to make it easier to find and fix software bugs and security vulnerabilities.  We design processor additions that catch programming errors while the software is executing, but our biggest remaining challenge is making these tests invisible to the user.  We have multiple places where your skills can be useful, as we work on everything from compilers and operating systems to architecture and digital circuit design.

You will come away from this project with a better understanding of computer systems from the ground up and a stronger grasp of assembly, C/C++, and scripting.  Previous undergraduates who worked on our projects have been co-authors on our research publications.


CSE Project 16: Do You Hear What I See?
Faculty Mentor: Todd Austin (austin@eecs.umich.edu)

There are millions of people in the world who are vision impaired and you have the chance to help them see with their ears.  We are bringing together multiple disciplines to convert the world into sound so the blind can recognize specific items, recognize their current location, and navigate enclosed areas.  This project requires techniques from computer vision, computer architecture, robotics, and 3D audio processing.  We are looking for talented people to work with us in developing the embedded hardware to run this system.  The project will require working in C, C++, Verliog, and also provide opportunities for working with the OpenCV (Open Computer vision library), csound (Open Sound Library) and embedded hardware.


CSE Project 17: Hardware Security Assurance
Faculty Mentor: Valeria Bertacco (valeria@umich.edu)
Prerequisites: Programming in C or C++; basic hardware design skills in Verilog or VHDL

Think you're a hacker?  Exploits aren't just for websites any more: hardware is vulnerable too.  While traditional viruses exploit software bugs, an emerging class of viruses target hardware bugs. Hardware bugs can lead to devastating exploits, since they work with any operating system running any software.  Even worse, they can't be fixed with a simple software patch.

We are looking for hardware hackers.  This could mean writing software that exploits existing bugs in real Intel processors or building your own malicious hardware.


CSE Project 18: Ultra High-Speed Processor Simulation
Faculty Mentor: Valeria Bertacco (valeria@umich.edu)
Prerequisites: Programming in C or C++; basic hardware design skills in Verilog or VHDL

Modern digital designs are becoming increasingly complex. For example, a quad core Intel Core i7 processor contains a whopping 731 million transistors! The process of checking such complex designs for correctness is even more daunting than designing them. Even with all the precautions taken during the design process, nasty design bugs creep into them. So, engineers try to use accelerators, FPGA platforms that work like the full chip, just slower (Mhz instead of Ghz). This is still not enough: if the operating system does not boot in the accelerator, how do we know where the problem is? In this project we want to craft ways to find out where problems are when things go wrong, so that they can be fixed before it's too late.

During the course of the project there will be the possibility of doing cool things hands on, such as writing code for super-fast parallel GPUs or booting up linux on a FPGA!!


CSE Project 19: Gemini Power Meter
Faculty Mentor: Prabal Dutta (prabal@eecs.umich.edu)
Prerequisites: Two of the following courses/topics: Embedded Systems (e.g. EECS 373), Operating Systems (e.g. EECS 482), Networking (e.g. EECS 489)

Design and implement a working power meter that decouples the current and voltage sense channels and recombines them wirelessly.  This project will involve integrating a radio,ARM microcontroller, timer subsystem, network time synchronization protocol, and an AC power metering chip.  A good overview of the system is available at the following url:



CSE Project 20: Software Radio
Faculty Mentor: Prabal Dutta (prabal@eecs.umich.edu)
Prerequisites: Two of the following courses/topics: Embedded Systems (e.g. EECS 373), Architecture (e.g. EECS 470), Networking (e.g. EECS 489)

Combine the Actel mixed-signal FPGA (including an ARM Cortex-M3, FPGA, and analog subsystem) with offboard ADC/DAC chips and a radio frontend to implement a programmable radio.  This system, if built, would enable an entire research community to do some new things.  Over the next decade, such "programmable" or "soft" radios will become increasingly prevalent. A description of the system we would like to construct is available at the following url: