PAID Summer Research Opportunities
Duke Computer Science Department
Summer 2017

There are a few research opportunities with stipends (pay) for computer science undergraduates in the Duke Computer Science Department for summer 2017.

Currently these positions are with Prof. Rodger. Check back as she will put up more opportunities as professors send them to her. Some professors get grant funding late so there could be new positions added later.

If you have questions about a particular job, please contact the professor. General questions about working in the computer science department in the summer can be sent to Prof. Rodger (rodger AT cs.duke.edu). You can apply to live on Central Campus or West Campus (specific dorms) for the summer.

You can apply now and then update your choices later.


TO APPLY:

To apply you need to fill out the short form below and upload three .pdf files, the documents mentioned below.

Update your choices If you have already applied and want to update your application or add a piece of information to your file, fill out this update form .

Questions send to Prof. Susan Rodger (rodger@cs.duke.edu) or the professor for a particular project.

For first consideration send by Feb 24, 2017.

WE WILL CONTINUE TO ACCEPT APPLICATIONS AFTER THIS DATE UNTIL ALL JOBS ARE FILLED. SOMETIMES WE MAY STILL BE FILLING POSITIONS IN APRIL.

Please submit .pdf file. Your application should include

  1. a cover letter that lists the projects you are interested in (refer to project numbers below) and the preference order.
  2. A resume. Please describe any prior programming experience or computer science related jobs. If none, then describe a programming project you did in one of your computer science courses.
  3. A transcript (a .pdf file from ACES is ok, you can generate a "What If" report that is a .pdf)


Possible positions include:

This page may continually be updated with new projects as professors get new funding.



Project 1 : Integrating Computing into Other Disciplines in K-12 Through 3D Virtuals Worlds
Prof Rodger (rodger AT cs.duke.edu)

We are hiring undergraduates to figure out how to integrate computing into middle schools. In particular this summer we are interested in how to integrate computing with middle school mathematics, but working on other disciplines such as science or english is also possible. This research experience includes developing materials for teaching Alice, a 3D virtual worlds environment. Materials developed will be used possibly in CompSci 94, high schools and middle schools. An example module developed includes teaching variables by creating a timer or score, and illustrating their use in a boat game in which the students drive a boat through hoops to earn points and try to beat the timer. In addition this project will involve training middle school and high school teachers in 3 weeks of workshops to be held in June and July.

See the Adventures in Alice Programming webpage at Duke to see other materials previously developed.

As part of this project you may also help run a two-day mobile app course for K-12 teachers in July.

Students should have taken CompSci 101 or higher by the beginning of the summer. It is not required to know Alice if you have experience with another programming language such as Python or Java, but if you do, please list. I have hired first-year students in the past whose only programming experience is CompSci 101.


Project 2 : JFLAP - tool for experimenting with CS concepts
Prof Rodger (rodger AT cs.duke.edu)

We're looking for several undergraduates to join the JFLAP project! JFLAP is educational software that focuses on interactive algorithm visualizations and animations to aid in the understanding of those algorithms. JFLAP covers a large number of topics related to finite state machines, grammars, parsing, Turing machines, compilers, l-systems, etc. For this project, you would first learn a topic, determine how to visualize and interact with the topic and then implement the interactive algorithm visualization JFLAP is currently written in Java and Swing. The past two summers we have been creating parts of JFLAP in HTML5 to run on tablets and other devices. See the JFLAP page for more info on JFLAP.

JFLAP has evolved over the past 20 years, and was a finalist in the Needs Premier award for Educational Engineering Software. Over 35 students have worked on JFLAP with the majority of them Duke undergraduates. This project is a chance for you to add new algorithms to a large software product that is used in courses around the world.

Students should have taken at least CompSci 201 or equivalent. CompSci 308 would be helpful but not required. As part of this project you would learn the background material. For example, you would learn an algorithm that you would then animate. As part of the animation process, you would then learn the background needed (such as HTML5) to implement the animation.


Project 3 : Multitenancy on GPUs in the Datacenter
Professor Alvin R. Lebeck (alvy@cs.duke.edu)

This overall project seeks to support the efficient execution of multiple applications in a data center on shared GPUs---called multitenancy. There are two REU positions available for this project. The students must be US Citizens, have taken at least CS/ECE 250 (CS 310 is a preferred).

Project 3a: Workloads for GPU multitenancy. The goal of this project is to develop a set of workloads that run on GPUs in the data center and facilitate exploration of multitenat exeuction. Examples of the type of workloads include those in big data/ data analytics, machine learning, graph processing, and investigating runtime environments like SPARK.

Project 3b: Library for GPU multitenancy. The goal of this project is to implement a multitenancy service in a library that transparently supports parameterization of programs to improve overall perofrmance in a multtenant environment. Efficient implementation of multitenancy on GPUs in cloud infrastructures requires consideration of the behavior of all resident kernels on the GPU. This necessitates the existence of a centralized service that takes a range of kernels' possible launch parameters (e.g., number of concurrent thread blocks and number of registers per thread) as inputs, and based on the available resources on the device determines optimal launch parameters for each kernel such that the benefits of concurrency are maximized. However, there is no guarantee that the clients will use the exact parameters provided by the service. If a client requests to use more resources than suggested by the service, its own performance may increase but this will be at the cost of a decrease in the performance of the whole system. To avoid this situation, the details of the implementation of multi-tenancy can be hidden from the programmers and wrapped into a library that intercepts user's calls to the GPU and substitutes those with the ones that maximize the performance of the whole system. The goal of this project is to implement the library that sits between clients' programs and the GPU, and to integrate the centralized service with the library.


Project 4 : Algorithms for Privacy
Ashwin Machanavajjhala

Cameras are pervasive and multiplying. All modern PCs and smartphones have cameras, as do most gaming consoles and televisions. Furthermore, emerging wearable computers, household robots, and Internet-of-things devices provide a glimpse of the not-too-distant future: continuous recording by crowds of nearby devices. This proliferation of cameras has created a growing sense that the most confidential details of a person's life are perpetually at risk of leaking.

We are hiring undergraduates to build algorithms for ensuring your privacy in the face of data collected by mobile apps through cameras. Students will learn techniques like deep learning and differential privacy. 

Proficiency in programming (preferably Python) is required. Must have taken at least one 200 level CS course (e.g., 230 or 216), and having taken algorithms, databases or machine learning courses is a plus.