Request for advice on a senior thesis

Hello. I've been lurking here for a while, but this is my first post. It's a request for advice that I hope more experienced PL scholars might be able to provide.

I'm an undergraduate student of computer science, about to enter my final year. This means I'll soon be required to begin work on a senior thesis. I'm pretty sure that I want to do something related to programming languages; I've always been fascinated by them, and greatly enjoyed the two courses on PL theory and implementation which my school offers.

My problem is that I don't know how to go about finding something to work on. Specifically, a research-ish problem related to programming languages that can feasibly be solved by an undergraduate spending about 20 hours per week on it for six months.

I like the idea of designing a language, and have a few vague ideas of how I might go about doing it, but I'm not sure what actual problem I'd be solving. I wouldn't be averse to a PL-related project that didn't involve designing a language.

So how might one find something to research that's the right level and scope for a senior thesis?

Thank you in advance.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Ask the people you're interested in

How to get a topic: You need to pick an advisor (that works on topics you're interested in), and ask him/her for a topic. Not only will someone established be able to estimate what's a reasonable undertaking for a 6-month period. (Expect to be disappointed at first at how simple/short it seems, but then run out of time before being satisfied with what you did), but guidance of a supervisor is important during your work -- certainly something will go wrong at some point.

How to get an adviser: You need to have a look at relatively recent papers in the subfields you're interested in, and select those that you find interesting and that you have you have a reasonable understanding of. Then pick some authors of these papers, hopefully that are geographically close to you.

How to find papers to read: those on LtU, and/or those published recently in conferences about the subfield you're interested in (eg. POPL is a major programming language conference, but it's fairly theoretical; PLDI is another obvious choice, and if you have specific tastes it's possible to give other suggestions).

This is great advice

I'll add two things:

  1. Ask this question to the academic advisor/mentor or to a professor in your university.
  2. Skim some senior theses done by other people in your department to get an idea of the scope and the kind of projects that you can pick.

Different universities have different expectations and requirements.

SPLASH and Onward! are other

SPLASH and Onward! are other great conferences for inspiration. They tend to address subjects that I enjoy reading about. :)

I agree with the advice already given. Getting an advisor and keeping the scope small and focused is important.

Help someone else or find a mentor

Help me with my programming language. ;)

In all seriousness, if you don’t have a specific problem to solve by creating a new language, you might consider contributing to an existing one. There is fertile ground for new research—and outstanding problems waiting for an implementer—in Haskell, Rust, Factor, and others. You should work with an advisor who knows you well and can help you find a problem to tackle that is challenging, valuable, and practical.

I second this. I think you

I second this. I think you might find a way to combine this with internship somewhere nice in industry (I know some people did this).

Another secondment

If you are interested in Scala, concurrency and event-handling, then you may consider contributing to my PL extension.
Under the "Documentation" menu on that site there is a paper that I presented at the Scala Workshop that was co-located with ECOOP last month in Montpellier. Student projects are listed in the "Get Involved" menu.

I wonder if you guys are

I wonder if you guys are being a bit biased here. "Help me with my pet project" never seems to end well. I agree that an adviser's input is essential here, but even in that case, the project list will be biased depending on the adviser; however, at least that adviser is around to help and push.

Well yes

I don’t honestly expect someone to help with my work, but there is a lot of work to be done elsewhere, on projects that are bigger than pets—livestock, maybe?

I was thinking of people

I was thinking of people finding projects with Microsoft or Google Summer projects etc. There was an Ocaml thing too, IIRC.

Find a good mentor

Looking at your school, Kathi Fisler is accomplished and also has a connection with Shriram (@Brown). They probably have more than a few useful empirical projects that could be done in 6 months and have good results.

Going out and doing something on your own is also reasonable, especially if you have a good idea of what you want to do. However, if you are just interested in the field, mentorship could guide you to a reasonable topic and learning experience that you can use to determine your interests.


Seconded -- I got started by working with them ;-) Dan Dougherty is a class act as well.