Undergraduate Research

What is research?

Research is advancing knowledge of the discipline by learning something new! Research is framed around a problem that needs to be solved/understood and a series of research questions that, when answered, lead us towards this understanding.

Research activities include (but aren’t limited to):

  • Reading the research literature to look for gaps in current knowledge, identify patterns and build/validate theories,
  • Analyzing data or building models to answer research questions,
  • Studying people to answer research questions,
  • Building software tools to support the research (and studying if the tools do what they were built to do).

(Don’t worry – you wouldn’t be doing all those different things in one ten week summer research assignment!)

Computer science research is great because there is such a wide range of things you might be doing. Research in the more theoretical areas of computer science may look more like mathematics (developing and proving theorems, for example), research in the more human-oriented areas of computer science may look a lot like social science research (interviews, observation, grounded-theory research) because it requires understanding how humans work.

Summer research is generally not working on a personal project of interest and getting paid to do it. A little known faculty fact—professors usually don’t get paid to work during the summer. This means that when we work with students during the summer we will want it to be on projects that advance our research. It is also important to understand that learning something new means new to the discipline, not new to us but known to others (this is why the literature search is important – we don’t want to work on already solved problems!). Students doing summer research are paid.

(We really do love it when students have cool project ideas. If you have a cool project idea, it might be eligible for a Student Seed Grant). If you want to work on your cool idea with others it might be something you could do as your Team Software Project.

So why would you want to do research?

  • You are interested in applying to graduate school and want a stronger application.
  • You might be interested in graduate school but you aren’t sure and want to see if you enjoy research.
  • You want to have the opportunity to work on a longer term project (5-10 weeks) with a faculty member (and if all goes well, which it should, get a strong letter of recommendation from them).
  • You’d like to do a senior research thesis. These are usually only made available to students who are continuing research started during the summer. Three and a half weeks isn’t really enough time to get far enough along on a new research project to be able to write something up.
  • You think it sounds like a fun way to spend the summer learning more CS, advancing the frontiers of human knowledge, and getting paid!

Summer Research Opportunities

There are lots of opportunities for CS students:

  • Research Experiences for Undergraduates (REUs). The NSF funds these at schools all around the country. These opportunities are only available to US citizens or permanent residents. You can look for an REU site that interests you here. It’s worth asking your CS professors if they know anyone at the programs you’re looking at.
  • Summer internships at research laboratories. There may be restrictions on who is eligible to be employed, especially if it is a national laboratory.
  • Summer research at CC funded by the SCoRe (Student Collaborative Research) program, research grants held by individual faculty, or department funds (very limited). All students are eligible to apply, no matter their immigration status.

If you think this is something you want to do, be sure to talk to your professors!  For REU programs and research internships, you will probably need letters of recommendation from CS faculty. We may have connections at other schools and, in some cases, research labs – that could be useful information for you to know!

If you want to work with someone at CC, we usually select research students by early in the spring semester so we can write our proposals to get SCoRe funding (faculty are usually guaranteed support for one student). Faculty members will have different requirements for what they need. They may require that you have taken certain courses (possibly even electives – sometimes we teach a class that our research students need to have). They will probably want to have had you in at least one of their classes (although they may make exceptions for students who have strong recommendations from other CS faculty). If there’s a faculty member you want to work with it’s a good idea to talk with them early, especially if they might want you to take certain courses. If you wait, they may have already promised the summer research opportunity to someone else.

Research is usually conducted on campus where students meet regularly with the supervising faculty member (how regular and how strict the requirement is to be at CC depends on the project and faculty member – I have supervised students fully and partly remotely although if students are working in teams it’s a lot more fun to be in the same location).

Summer research programs are very competitive. At CC, not all faculty are able to supervise summer students and those who are will only be able to fund one or two. Faculty are usually looking for students with a strong academic record although (in the case of working with CC faculty) if someone’s grades do not accurately reflect their ability and they are really excited about the project we may make exceptions if we know a student well enough to feel they would succeed. This goes both ways—you will have a much better experience if you find someone you’d like to work with and a project that interests you!

Questions? Ask a CC faculty member!

Keeping up with Coding

The best way to get good at programing is to do a lot of it. Things that seem cryptic and confusing at first will start to feel like second nature after a lot of regular practice. Taking one or two CS classes is probably not going to be enough to have things encoded in memory to the point where you can take a long break between classes and not forget what you learned earlier. Whether the break is just for the summer or much longer, it’s a good idea to keep practicing in between classes. Here are some places you can go for some practice problems:

Codecademy – this website has some nice tutorials on a lot of CS related subjects. You can browse their catalog and find tutorials for languages like Java and Python. If you’re worried that you’ve forgotten something or there were topics you aren’t sure you really learned the first time this is a good place to start.

CodingBat – this website contains coding practice problems and was written by an instructor at Stanford. There are problems for Java and for Python.

These are sites accessible for novice programmers who are new to a language or who have had one or two classes. There’s a whole other set of sites you can go to for coding challenges if you’re preparing for job interviews or programming contests.  Here’s a blog post that describes sites by category:

Learn by Doing: The 8 Best Interactive Coding Sites 

If you’re a Colorado College student, I strongly recommend participating in the Coding Club activities. You should also be sure to get on the department mailing list–you do not need to have declared the major to participate in department activities! Talk to the CS Paraprof for more information.

Janet Burge

cropped-JanetWesleyan.jpegI’m an Associate Professor of Computer Science at Colorado College.   My major research area is in Design Rationale – methods for capturing and using the reasons behind decisions made when designing software or any other artifact.  I’m interested in this area because successful software systems often outlast the tenure of their developers, which means critical knowledge can be lost forever if there is no way to retrieve and use it.

I received my PhD from  Worcester Polytechnic Institute in 2005. My undergraduate work was performed at Michigan Technological University. Prior to joining Colorado College, I spent two years as an Associate Professor at Wesleyan University, nine years as an Assistant and Associate Professor at Miami University in Oxford Ohio and before that, I worked for over 20 years as a software engineer and AI researcher, which gives me lots of great stories to tell my students.

Selected grants:

NSF, 2022 (with A. van der Hoek, UC Irvine), Distributed Fragmented Software Design Meetings, $599,994 ($132,758 to Colorado College).

NSF, 2009, CAREER: Rationale Capture for High Assurance Systems, $527,864

NSF, 2009 (with P. Anderson, G. Gannod, Miami University, M. Vouk, M. Carter, North Carolina State University), CPATH-2: Incorporating Communication Outcomes into the Computer Science Curriculum, $799,996 ($445,137 Miami)

Contact information:

jburge-at-coloradocollege-dot-edu