For Undergraduate and MSE Projects



I hope the following page is useful to determine whether you're interested in working on a project with me, and what that process would be like. This is intended to help you determine whether you want to start a conversation, and help you start it -- it is not intended to be the conversation (it is also OK if you accidentally start a conversation without having read this page first, but in that case my first response will be a suggestion to read this page =) ).

Project Capacity and Expectations. If you're interested in working with me, please ask! (ideally, after reading the rest of this page and confirming we seem like a good fit). But, please also be prepared that I'm often over capacity and may have to decline. Please don't draw a negative inference from this! I intend to at least respond to every request -- if I haven't responded within a week or so, or missed a self-imposed deadline to give you further information (etc.), please follow up.

Advising Philosophy and Expectations. Before deciding to work together, make sure we have a live chat about advising philosphy and expectations. We'll talk about what it means to have a PhD student co-supervise (if relevant), what it means to "treat the project like your hardest course this semester" and to truly manage the project yourself, and logistical things like meeting patterns. This is a bit overwhelming to put in writing, and works best in a live conversation -- please make sure to initiate one! (One thing I'll share during that conversation is that truly managing a project includes meta tasks, like initiating this conversation).

Types of Projects I Supervise. Below are four classes of projects I supervise, along with two (not necessarily recent) examples. It's definitely OK to try to get me interested in a project that doesn't fit into one of these categories, but just be prepared that I've become more rigid with project topics over time. The primary reason is that I want to advise projects where I'm confident I can be a good advisor even while time-constrained. When discussing working together, it'll be helpful if you can let me know which class of project you're interested in and why.

Deep Theory. These projects are representative of what one might work on as a PhD student in CS Theory.

Relevant for: Someone who loves PSets in CS Theory courses (especially COS 445 or COS 521, and especially being stuck on the hardest PSets). Someone who wants to explore a project representative of pursuing a PhD in CS Theory. Prereqs: Done well in a related course. For most students, this will be COS 445 to work on a project in Economics and Computation. It could also be COS 521 to work on a project in Algorithm Design. It is theoretically possible for this to be other advanced TCS or Math courses, but most projects I supervise require background covered in COS 445 or COS 521. "Prereqs": Make sure you love spending enormous chunks of time being frustrated and stuck. For example, try to independently solve the extra credits in COS 445 or COS 521. It is not at all important whether you've already solved any extra credits on your own (you can learn to do this over time), but it's essential that you enjoy the process of working through them independently (which involves being frustrated and stuck for weeks at a time, and still finding ways to be creative). Day-to-Day Looks Like: This is an oversimplification, but these projects broadly break down into two parts. First, there's the overarching part of deciding which subproblems are the right ones to solve. Then, there's solving the subproblems. The subproblems are roughly the scale of a COS 445 Extra Credit. During the week, you'll basically be working on a COS 445 Extra Credit problem independently. If you solve it, we'll spend our weekly meeting on the overarching part. If not, we'll spend our weekly meeting trying to get unstuck. But no matter what, it's important that you're comfortable spending significant time independently on a subproblem at the scale of a COS 445 Extra Credit during the week, that you enjoy the frustration that will inevitably come with it, and that you're able to continue spending significant time being creative while stuck. Two Examples: [Bahrani 19, Qiu 23]. Other Notes: If you're interested in this, we'll first try to narrow your general interest. Afterwards, I'll propose a few possible projects from which you can choose. It's very hard to propose your own problem of this flavor until you get deep into an area, so the ultimate project would be one of my suggestions. It is also very likely that I'll suggest working with a PhD student as a co-supervisor.

Blockchain-Adjacent. These projects are theoretical in nature, but have a more significant modeling component and sometimes a coding component.

Relevant for: Someone who wants to explore a project representative of a PhD in "445-style blockchain stuff." It could also be relevant for someone who wants to explore a project representative of a PhD in theoretical applied modeling (the process of designing and analyzing a complex theoretical model with the goal of developing insight to a real-world domain). It also could be relevant for someone who really enjoys theory but prefers to code (for example, some projects are ultimately coding projects, but require strong theory/math background just to understand what we're coding in the first place). Probably, it is a good idea to have some interest in blockchain, just for the sake of staying interested in the project. But interest in the methodology is much more important than interest in blockchains for these kinds of projects. Prereqs: Done well in a course involving theoretical modeling. For most students, this will be COS 445. Some basic understanding of blockchains (a complete understanding of the lectures/PSets/SD from COS 445 is sufficient). "Prereqs": Make sure you enjoy reading complicated protocols and deeply understanding exactly what's going on. Make sure you enjoy going back and forth between a mathematical model and the domain its trying to capture. Make sure you're comfortable grinding through calculations and/or coding. Try to imagine starting from the Bitcoin whitepaper, and producing the Selfish Mining paper by the end of the project. Day-to-Day Looks Like: This will vary by project. Some projects will have a day-to-day that looks like a COS 445 PSet, others will look like a COS 445 Strategy Design, some will be a mix of both. Every project will have a heavy component of reading and understanding complex protocols, and also understanding complex mathematical models. Two Examples: [Yu 22, Hein 22]. Other Notes: If you're interested in this, we'll first discuss whether you're hoping to be more math-heavy or coding-heavy. Afterwards, I'll propose a few possible projects from which you can choose. It's very hard to propose your own problem of this flavor until you get deep into an area, so the ultimate project would be one of my suggestions. It is also very likely that I'll suggest working with a PhD student as a co-supervisor. Occasionally, I may have projects that are methodologically similar, but [other domain]-adjacent instead of blockchain-adjacent. Everything above applies to these projects as well, after replacing 'blockchain' with '[other domain]' everywhere.

Build something genuinely useful using concepts from COS 445/521. These projects are ultimately about building something useful, in a domain where concepts from a course I teach is relevant.

Relevant for: Someone who wants their thesis to actually make a difference to some group (likely on campus because it's easier to find "engaged clients," but it doesn't have to be). The topic should be related to a course I teach (otherwise, I'll be a useless advisor). Prereqs: Doing well in a related course. For most students, this will be COS 445 or COS 521. This is relevant because the impactful problem will ultimately be hard to solve. You'll also need an "engaged client" -- if you want to solve a "real" problem, you need a source who's willing to tell you what they want, evaluate your solution, etc. "Prereqs": Comfort "doing whatever it takes to get things done." Actually solving a "real" problem requires both glamorous (i.e. intellectually challenging) and unglamorous work. Day-to-Day Looks Like: This is a "full-stack" project. You'll spend a lot of time just talking to various stakeholders to get buyin and permission. You'll be thinking hard about the right questions to ask stakeholders in your limited time with them. You'll do lots of coding. You'll do lots of modeling. You'll be Googling to understand why packages are crashing. Two Examples: [Shu 19, Finkle 22]. Other Notes: I sometimes, but rarely, have potential "engaged clients" ready (for example, I was Mel's "client." The CS department was Nathan's). Typically, you'd have to bring your own "engaged client." If you're part of a campus group, or have an independent passion, that can work great.

Improve a course I teach. These projects are ultimately about improving infrastructure for a course I teach (typically COS 445).

Relevant for: Someone who really enjoyed a course I taught, and who would have fun improving it. Prereqs: Having been engaged in the course you want to improve. This is necessary primarily because you'll be better suited to improve the course for future students if you were engaged yourself. Mastery of the material will also help for whatever aspect you're hoping to improve. "Prereqs": Comfort "doing whatever it takes to get things done." Actually solving a "real" problem requires both glamorous (i.e. intellectually challenging) and unglamorous work. Day-to-Day Looks Like: This would depend heavily on the project. It could be coding, it could be data analysis, it could be pedagogy-related. Two Examples: [Wonnacott 18, Rodriguez Quinones 19] built the Strategy Designs that are used in COS 445 from scratch (!). Other Notes: In order for this to be successful, it has to be able to survive after you graduate!