2021 Research Projects

Projects are posted below; new projects will continue to be posted. To learn more about the type of research conducted by undergraduates, view the 2021 Research Symposium Abstracts (PDF) and search the past SURF projects.

This is a list of research projects that may have opportunities for undergraduate students. Please note that it is not a complete list of every SURF project. Undergraduates will discover other projects when talking directly to Purdue faculty.

You can browse all the projects on the list or view only projects in the following categories:

Cybersecurity (4)


Automatically Detecting and Fixing Software Bugs and Vulnerabilities  

Lin Tan
Preferred major(s):
Compuer Science; Computer Engineering
Desired experience:
Good programming skills and strong motivation in research are required. Background in security or machine learning is a plus.

In this project, we will develop cool machine learning approaches to automatically learn bug/vulnerability patterns and fix patterns from historical data to detect and fix software bugs and security vulnerabilities. This project is partially funded by a Facebook Research Award (https://research.fb.com/programs/research-awards/proposals/probability-and-programming-request-for-proposals/).

Earlier work can be found here: https://www.cs.purdue.edu/homes/lintan/publications/deeplearn-tse18.pdf

More information: https://www.cs.purdue.edu/homes/lintan/


Crawling the Internet for Denial of Service Vulnerabilities 

James Davis
Preferred major(s):
Computer Engineering, Computer Science, Cybersecurity
Desired experience:
Has good programming background, e.g. knows multiple programming languages including scripting languages like Python and "systems" languages like Java or C. Has familiarity with the web stack, e.g. knows how front-end code interacts with back-end code (server or serverless) to produce a web service. Has experience with software engineering techniques including version control systems (Git, GitHub) and incorporating dependencies into a project (e.g. npm, pypi).

A student will explore the Internet looking for denial of service (DoS) vulnerabilities. DoS vulnerabilities prevent legitimate users from accessing a service, with implications ranging from financial costs to personal safety. In this project, the student will focus on algorithmic complexity vulnerabilities, where a particular input is particularly expensive for a web service to process. Such inputs will unfairly direct resources away from legitimate users and towards the attacker. To identify these vulnerabilities, the student will synthesize state-of-the-art web crawlers, analysis tools, and probing techniques to discover novel security vulnerabilities.

More information: http://davisjam.github.io


On-Line Programming Assessment 

Yung-Hsiang Lu
Preferred major(s):
computer engineering, computer science, electrical engineering
Desired experience:
at least two courses on computer programming

Computer programs are difficult to evaluate due to the large number of possibilities. Existing evaluation systems are restricted to simple programs or impose restrictions to limit possibilities. This project aims to build an online assessment system that can evaluate non-trivial programs and assist students learning computer programming.


SoCET: System on Chip Extension Technologies 

Mark Johnson
Preferred major(s):
Electrical Engineering, Computer Engineering, Computer Science
Desired experience:
A wide range of circuit and software design skills are needed on this project. No one team member is expected to have this full set of skills, but to be able to contribute to some aspect of SoCET over the course of a summer, you will need skills or course work in at least the following areas. *Verilog/System Verilog coding skills for logic synthesis and test bench design, *Analog and digital integrated circuit design background including circuit simulation and layout, *testing of digital and analog circuits, *Microcontroller programming in C and assembly language, *Managing code repositories in git, *Compiler design, *Operating systems and especially Real Time Operating Systems.

The processors inside your cell-phone, automobile, television, etc. are some of the most complex and smallest devices created in human history, but with access to the right tools, design techniques, and fabrication facilities you can create new capabilities to be fabricated on silicon. Such processors are implemented in the form of a System-on-Chip (SoC). Design of SoC's and access to fabrication facilities are ordinarily extremely expensive and very restricted. However, thanks to industry and governmental support, interested undergraduates are able to join in the design, fabrication, and test of custom SoC's. The primary reason for the existence of the SoC team is to give students an integrated circuit design experience that as close as possible to what they would encounter in industry.

The technical objective of the SoC Team is to create and keep improving on an SoC design that we can then customize for special application and research needs. The team's major project is that of creating an SoC that is optimized for very small scale and low power machine learning applications, but there are numerous problems one can work on including modelling of a secure SoC architecture, design of chiplets, FPGA prototyping, extending a RISCV open source processor design, testing of recent chips designed by SoCET, analog circuit design, and using industry grade design verification techniques.

More information: https://engineering.purdue.edu/SoC-Team