Independent Study


One of the primary goals of CS Honors is to give students the opportunity to experience computer science research first-hand. This is why one of the requirements is CMSC 499, independent study. This page describes what this is, how to go about finding an advisor, and how CS Honors helps you achieve this.

If you have any questions or concerns, don't hesitate to write to the CS Honors Chair.

Up for the challenge? Don't wait: Apply Now

Why UMD CS wants you to do research

Research is, by definition, trying to do something no one else has done before. That feeling that you are forging new ground can be uniquely rewarding for many people. Moreover, careers in research provide a level of intellectual freedom that is often unparalleled in other lines of work. To find out if research is a good fit for you, the best thing to do is to simply try it out for yourself. CS Honors is designed to give its students the opportunity to try research. For some, this has led to getting PhDs and pursuing jobs in academia; for others, it gives them a great open-ended problem to talk about at job interviews!


What is CS research?

First and foremost, what is CS research? Many beginning computer scientists believe that CS research is strictly "proving things about algorithms," but CS research is far broader! Today, CS research spans topics such as fighting online censorship, creating new computing devices to promote health, studying online social networks, and much, much more. Also, CS research has grown to become extremely interdisciplinary; many of UMD CS's professors work in areas that span economics, biology, music, language, sociology, cooking, and more.

Learn more about some of the different areas of CS research.

How CS Honors helps: 396H

One of the requirements of CS Honors is CMSC 396H, a one-credit seminar course designed to teach CS Honors students what CS research is, what kind of research the UMD CS faculty do, and some basic skills that will be necessary to start performing research.

CMSC 396H website


How do I choose a research area?

One of the greatest aspects of CS research — that it has a virtually all-encompassing scope — is also one of its most challenging to a young researcher; how do you pick from such a wide assortment of topics? People come across their areas of research in many different ways, but there are a few concrete steps that you can take:

  • Attend talks: Most research groups have weekly "reading groups," at which they discuss recent papers in their field, talk about their own research, invite guest speakers, and so on. This is a fantastic way to learn not only about what kind of work people do, but also how they communicate that work.
  • Classes: Take 400- and graduate-level classes that really interest you, and try to learn more beyond what is in the class by looking up source material and newer papers in the field.
  • Professors: Find out what professors do by looking at their websites and some of their publications. You might be surprised to learn what they do outside the classroom!

How CS helps: Talks and reading groups

As one of the premiere computer science research institutes, UMD CS hosts a slew of invited and internal speakers on a wide range of topics. Also, there are many weekly reading groups where researchers from various fields discuss papers, host guest speakers, and so on. These are both fantastic ways to learn about what's going on in CS, what areas of research you might be interested in, and whom to approach for research opportunities. The CS department maintains a site, talks.cs.umd.edu, with upcoming talks in CS, broken down by research group.

Upcoming talks in CS UMD CS colloquia (Fall)


How do I find a professor to work with?

Once you have figured out the area, it's time to figure out whom you want to work with and approach them. This is a very organic process, and requires reaching out to professors to see what research opportunities they have. Here are a few useful steps:

  • Learn about the faculty: Visit the list of UMD CS faculty to learn who does what in your areas of interest, and look up what kind of work they do.
  • Interact with them: Either by taking their classes, attending their talks, or going to the same reading groups they do, get a sense of how they work and think and if you believe you'd be a good fit.
  • Inquire about availability: Send them an email to inquire about whether they have any positions for undergradate research. Sometimes faculty have a lot of free slots, and sometimes unfortunately they may be fully booked; the best way to find out is to just reach out.
  • Do the leg-work: Inquire about what kind of background you need to be able to do research with that faculty member: should you take their class, read some papers, freshen up on statistics, etc.? Do what's necessary to become a contributing member of their research group.

How CS helps: Faculty websites

The link below lists all of the UMD CS faculty and their primary areas of research. It also has links to their websites, which are usually reasonably up-to-date with their publications. (If their list of publications seems out of date, then you can always look them up by name on Google scholar.)

UMD CS faculty


Do I need to come up with my own research problem?

The vast majority of professors will not require undergraduates to come up with their own research problem. Coming up with a good research problem (especially one that has a decent chance of being published) can be very difficult and require extensive experience in a given area of research — experience that a fresh new researcher is not expected to have. Asking really good research questions is arguably the last thing a PhD student learns, not the first! That said, if you have a good research problem (or just something you're passionate about), don't be shy; tell a professor about it and get feedback (and hopefully a collaborator).

Rather than wait until you have a well-formed research problem in mind, approach the professor and see if they have some problems they already have in mind for an undergraduate research.

How CS Honors helps: Graduate-level classes

One of the requirements of the CS Honors program is taking graduate-level classes (600-, 700-, and some 800-level classes). In addition to learning about a given topic in greater depth than an undergraduate-level class — and getting more one-on-one interaction with research-active faculty — these classes often give experience in formulating research problems.

UMD CS classes


Taking CMSC 499

CMSC 499 (independent study) can be a remarkably rewarding experience. It is a one-on-one "class" in which an undergraduate student performs research with a faculty advisor (and sometimes other collaborators, as well). To take the class, you need permission from the professor you'll be working with (obviously), and the undergraduate office. Part of this process involves coming up with a research plan — think of it like a personalized syllabus of what it is you will be doing during the semester. Here's what it should contain, and why:

  • Problem description: What is the research problem you're going to be solving? Motivate it, like a first pass at an introduction to a research paper. Discussing some related work is an effective way at providing context. If there are some highly relevant papers (e.g., you are implementing the algorithm in a paper), then include them as references.
  • Approach to be taken: What are you actually going to do to try to solve this problem? Are you going to be building a new system, developing a new algorithm, performing measurements, analyzing data, etc.? You don't have to know the exact solution up front, but some idea of what you'll be doing should be established early.
  • Evaluation plan: How will you know if your approach is working? How do you know if you are making progress towards completion? Perhaps it is a measure of how many user studies you will have performed, how fast your system runs, whether your algorithm is correct, or how accurate your model is.
  • Deliverables: Finally, what exactly will you be delivering? Is it an implementation, an algorithm, a writeup including data analysis, etc.? Having a concrete set of things to turn in can act as a nice sort of "to-do" list, and helps both the student and the professor gauge how well the project is progressing throughout the semester.

How CS Honors helps: The CS Honors community

CS Honors has several meetups each semester, and a Slack group for discussing all matters. As a CS Honors student, get involved by sharing your research experiences, your findings, and tips to your fellow students about how to have an effective start to your research career. To get a sense of the kind of research that previous CS Honors students have done, take a look at their honors theses.

CS Honors alumni