To Prospective Students

Last updated: 2024/09

I am looking for PhD students to officially start in Fall 2025 and Fall 2026 at GWU.

I am also looking for Master’s/undergraduate students to work with me remotely or onsite at GWU.

What I Do

I work to build secure computing systems, especially low-level systems software. I am most interested in employing compiler-aided, language-based, and program analysis techniques to enhance systems programming languages and their ecosystems for security. I am currently focusing on improving the Rust language and also developing automatic, efficient, and comprehensive memory safety for C/C++.

A bit more details about some of my past and current projects:

Type-oriented Program Analysis for Rust

Rust provides inherent safety compared to the two mainstream systems languages, C and C++. Rust has many advanced features such as its distinctive ownership model. I am exploring how to make the best use of these powerful features to further improve the security of Rust, as well as how to safely and smoothly integrate Rust into existing C/C++ systems, such as the Linux kernel.

Improving the security of C

In C, programmers have to manually manage memory, i.e., explicitly allocate and free memory—a task that is impossible to manually get completely correct. Consequently, Use-After-Free has become one of the leading vulnerabilities today. To solve this problem, we extended a safe dialect of C, named Checked C, with new types of safe pointers to automatically enforce full temporal memory safety.

We have also applied Checked C to a portion of the FreeBSD kernel and showed that a well-designed safe language can improve security without sacrificing performance.

Protecting security-critical data for embedded systems

Embedded systems, such as those used in smart-home equipment, are primarily developed in C and therefore unsafe. We utilized a special type of instructions in ARM processors, combined with program transformation techniques, to efficiently protect security-critical data for embedded systems.

What I am Looking for in Students

Background

PhD Students: A solid understanding of computer systems and extensive low-level systems programming experience. Additionally and more importantly, strong interest in hacking complex systems.

Master’s and Undergraduate Students: Computer Systems/Organizations course is required. Other systems courses such as Operating Systems are a plus. In addition, you are most likely to get in if you propose a project suitable for you to work on before you graduate.

For all students, experience in Compilers/Program Analysis/Rust is strongly preferred.

Personal Quality

I significantly value patience and resilience. Modern computing systems are extremely complex. Worse, they are often not well documented and specified, which makes learning and improving systems software challenging. You must be patient when dealing with these systems. Good work takes time. Besides, obstacles and frustration are guaranteed as long as you are working on a complex system, so resilience is not a nice-to-have but must-have quality.

Involvement

I would like to start with some informal collaboration with you before you officially join my group. The main goal is to get you prepared and to figure out whether we are good fits for research. If things go well, I will encourage and support you to apply to our (and other) PhD program.

For current GW students, you may consider enrolling in a research course (CSCI 3908/6908) under my supervision. Financial support will be provided depending on your progress.

Mentoring Philosophy

Interest and Motivation

I am convinced that people do their best work on things that deeply interest them. A strong interest not only motivates us to delve more profoundly but also helps us overcome mental obstacles. I will help you identify your research interests and align our interests for optimal research outcomes.

Collaboration and Communication

When working together on a project, our relationship extends beyond that of mentor and mentee; we are also collaborators. In collaboration, it is crucial to have effective communication to ensure that we are on the same page. I encourage you to always speak up, sharing not only your new thoughts and ideas but also your doubts and questions about the project. Mutual understanding is vital.

Learning

I will guide you through the development of a project, addressing both high-level directions and low-level technical details. On the other hand, as mentioned earlier, modern computing systems are incredibly complex, so it will not be abnormal for there to be things that you know which I do not, and that is a good thing because we can learn from each other. When a project is completed, ideally, your knowledge and expertise should not be a subset of but an overlap with mine.

Contact

If you have read to this point and are still interested, please feel free to send me an email with your resume/CV and the reason for your interest. Even better, if you have read my papers, let me know your thoughts—e.g., why you like certain aspects of a paper or what can be done to improve it.

Please include “[0xProspective Student]” at the beginning of your email subject.

I kindly ask you not to use ChatGPT (or any GenAI) to generate your email, especially “your thoughts” on my research. It is quite obvious when you do that. :-)