Computer Science & Engineering

Research Experiences for Undergraduates


Project #9: Growing Rice and Soybeans on a Computer

Complex traits of plants, such as tolerance of environmental stress and high yield, are controlled by complex gene regulation. Therefore, understanding gene regulatory mechanisms is of a paramount economic importance. We are developing novel and efficient computational approaches to elucidation of gene expression regulation. In particular, we are developing machine learning and datamining methods and software tools to identify "patterns" from a huge amount of gene profiling data from high-throughput platforms (next-generation sequencing and microarrays). Such "patterns" can be diverse, ranging from individual candidate genes to networks of interacting or associated genes which are characteristic of the biological processes determining the complex traits of interest.

Skills required: Proficiency with Java, C or Python

Faculty: Weixiong Zhang

Project #10: Understanding Complex Diseases (e.g., Alzheimer's and cancer) through Systems Biology

Many complex diseases, such as Alzheimer's and many forms of cancer, are devastating and detrimental, leading to enormous economic and societal burden. Understanding the genetic basis of disease mechanisms is the key to developing effective therapies for such disease.  We are developing on machine learning and datamining approaches to analyzing and integrating biological data to understand the causal relationship among genetic variation (e.g., mutations on DNA sequences), gene expression variation and disease phenotype.

Skills required: Proficiency with Java, C or Python

Faculty: Weixiong Zhang

Project #11: Creating an Example-Rich Programming Environment

Looking Glass is a 3D programming environment designed for kids with an online community. With Looking Glass kids can program their own 3D animated stories, remix other programs, and then share their creations to the community. For this project we want to utilize the shared programs as examples to teach kids programming within Looking Glass. For this project you will work with the Looking Glass lab to make Looking Glass an example-rich programming environment. To make sure we pick exciting examples for each user, you will need to filter and download examples from the online community that are customized to each kid's preferences and expertise. Then, you'll design and implement several ways to incorporate the examples into Looking Glass and then user test these changes to verify their effectiveness at helping kids learn new programming concepts.

Skills required: Basic programming skills

Faculty: Caitlin Kelleher

Project #6: Tools and Techniques for Computer Network Offense and Defense

It is an unfortunate fact that most of the world’s computer networks experience frequent infiltration attempts. How are such attacks carried out and how can they be detected and defended against?  In this project, summer research assistants will study and develop proficiency in using contemporary methods and tools for both network offense and defense. Students will develop their skills in a controlled laboratory environment; once gained, these skills will be put to practice in a real-world network environment.

Skills required: programming experience in Python, Java or C/C++, basic knowledge of Linux/Unix, prior experience with open source tools such as nmap or Metasploit helpful but not required.

Faculty: Patrick Crowley

Project #7: Real-Time Security and Monitoring with the Passive Network Appliance

The Passive Network Appliance (PNA)—an NSF-funded open-source project developed at Washington University—is a high-performance, programmable platform for network monitoring and security. The PNA can be used to make sense of complex or malicious traffic in large campus and corporate networks. The PNA allows programmers to develop custom monitors to measure, model, or detect events of interest in network traffic. Summer research assistants will join the PNA team and develop monitors that provide new and useful capabilities, such as denial-of-service detection, SPAM detection, HTTP/web profiling, and video profiling.

For more information:

Skills required: programming experience in C or C++, basic knowledge of Linux/Unix, networking experience helpful but not required.

Faculty: Patrick Crowley

Project #8: Exploring the future Internet with Named Data Networking

Named Data Networking (NDN) is a new Internet architecture that capitalizes on strengths -- and addresses weaknesses -- of the Internet's current host-based, point-to-point communication architecture in order to naturally accommodate emerging patterns of communication. By naming data instead of device addresses, NDN transforms data into a first-class entity. The current Internet secures the connections between machines through which data is passed. NDN secures the data directly, a design choice that decouples trust in data from trust in hosts, enabling several radically scalable communication mechanisms such as automatic caching to optimize bandwidth. Another major consequence of the NDN architecture is reduced application complexity: by communicating with named data, applications can more directly express their communication patterns as compared to the current IP architecture. Existing applications include: file distribution, text chat, video streaming, and voice/video chat. Summer research assistants will study the NDN architecture, and develop original small- and medium-scale applications for PCs or Android that that illustrate the relationship between application complexity and the NDN design choices. Applications may include: a distributed Twitter-like service, peer-to-peer file sharing, and location-aware messaging.

For more information:

Skills required: programming experience in Python, Java or C/C++, basic knowledge of Linux/Unix or Android, networking experience helpful but not required.

Faculty: Patrick Crowley

I learned about new and developing technologies, which was exciting, and my experience will give me an edge over others entering the field.

Projects for Summer 2014

Project #1: Feature and Metric Learning 

Recent discoveries in machine learning have transformed the world are continuing to do so. From search engines over speech recognition to self-driving cars. One big assumption for machine learning to work is that data is provided in a suitable representation.  This project focusses on improving machine learning algorithms by learning data representations. Many real world data sets (e.g. brain signals or biomedical data sets) are naturally represented in ways that are convenient for scientist who generate the data but not for machine learning algorithms. These data sets require machine learning experts to pre-process them prior to learning. This summer project aims at automatically learning a representation that is best suited for sub-sequent machine learning algorithms to be successful. 

For more information please see

Skills required: mathematical maturity, some familiarity with machine learning, and either familiarity with programming in Matlab (and/or Python) or the ability to pick up new programming languages relatively quickly.

Faculty: Kilian Weinberger

Project #2: Algorithmic Modeling and Understanding of Social and Economic Systems  

The computational or algorithmic viewpoint provides a new way to study social and economic systems, and technology is at the same time transforming how people interact, changing the nature of these systems. In this project, we will study problems at the intersection of computer science, economics, and the social sciences, using ideas from artificial intelligence and machine learning. The project may involve theory, implementation, as well as working with real datasets related to collective intelligence.

Skills required: mathematical maturity; an undergraduate algorithms course; programming skills; familiarity with artificial intelligence, machine learning, or game theory is a plus.

Faculty: Sanmay Das

I liked having close contact with Ph.D. students and talking to professors.

If there's some topic or aspect of the research process you want to do, don't be afraid to talk to your advisor about it. If you don't, you may lose out on a good opportunity.

I really liked seeing so many new applications of the things I learned in my coursework. As someone who is definitely interested in computer science but isn't sure about where exactly my interests lie, this summer was really helpful.

Interested in working with our faculty?

                     Find out more about their research!

                                          See something that excites you?

                                                               Join us for a semester or a summer!

I enjoyed working on original research in a field about which I'd previously known nothing, with the chance to publish our findings.

My lab was a good environment for research, but the people were what made my summer really enjoyable.

Project #3: Parallel Data Structures

Data Structures are prevalent in sequential computing, but seldom used in parallel programs.  In this project, we want to enable parallel data structures.  The project involves theoretical and implementation work on schedulers, data structures and algorithms.

Skills required: Mathematical maturity and/or C/C++ programming skills.

Faculty: Kunal Agrawal

Project #4: Concurrency platforms for streaming applications

Streaming applications are used in many domains such as multimedia, astrophysics, finance, etc.  We are interested in developing scheduling strategies to improve the performance of these applications and implementing and evaluating these strategies using the Autopipe streaming platform.  Students will be involved in both application development and system design.

Skills required: programming experience in C/C++

Faculty: Kunal Agrawal

Project #5: Parallel Platform for Real-Time Systems

In recent years, multi-core processor technology has improved dramatically, and more and more computers now contain parallel processors.  For example, Intel has recently put 80 cores in a Teraflops Research Chip, and ClearSpeed has developed a 96-core processor. As multi-core processors continue to scale, they provide an opportunity for performing more complex and computation-intensive tasks in real time.  However, to take full advantage of multi-core processing, these systems must exploit   intra-task parallelism, where parallelizable real-time tasks can utilize multiple cores at the same time.  We are building the first platform for parallel real-time tasks.

Students working on this project may work on either platform development or testbed development for the platform.  In addition, we are also setting up a shake table to do civil engineering experiments using our platform.  Students may also work on this shake table experiment setup.

Skills required: C/C++ programming experience. Civil engineering background or linear algebra knowledge may be a plus.

Faculty: Kunal Agrawal & Chris Gill