Menu Close

Undergraduate Research at PLUM

Tony: Today I’m talking with two Computer Science (CS) students to see how Undergraduate Research (UR) can work at an R1 institution. Yiyun is an undergrad and James is a grad student at University of Maryland (UMD). Let me start by asking how you two know each other?
James: Yiyun and I met through Dr. Hicks, who said Yiyun was interested in working together. We now both work on the same research project, where Dr. Hicks and I provide guidance and direction when needed.
Yiyun (right) reviews his code with James looking on
Yiyun: When I was taking intro to programming languages (PL) in my sophomore year, I talked to the instructor about my interest in PL, and showed him some personal projects I did. He asked me to email him a summary, which he forwarded to several CS faculty. Dr. Hicks replied and told me there was a project that I could work on. That’s how I started doing research at UMD.
Tony: Can you describe your research group?
James: Sure. The primary research focus at PLUM (Programming Languages Research at the University of Maryland) is in the area of PL. We study type systems, formal methods, and program analysis, and apply PL techniques to other areas like cryptography, quantum computing, security, and incremental computation. Dr. Hicks and Dr. Van Horn lead the group; there are currently two postdocs, five PhD students, a couple MS students, and a few undergrads.
Tony: What does a typical week look like in the life of an undergraduate researcher?
Yiyun: When I started research with Dr. Hicks, James and I had to submit a form which included goals and expected deliverables. As I was researching part-time, I didn’t have much time to allocate, and most of it was spent on engineering proofs. James and I had weekly meetings to check my progress and brainstorm any issues that I couldn’t address independently. During the summer I started researching full-time and was able to spend more time on the project; the major difference was that I spent more time reading papers related to the topic. I also got a desk in the lab, which made it easier for me to communicate with people at PLUM.
Tony: Are you doing research for academic credit?
Yiyun: Yes, there is a UR course and students can choose to take one to three credits, depending on the amount of time they are willing to spend per week. I received three credits, which means I had to spend at least ten hours each week on my research. It is also possible to get paid, but I’m not sure if you can get paid and receive credits at the same time.
Tony: James, did you also start doing research as an undergrad at UMD?
James: Yes, I’d say my experience was somewhat similar. I started working with Dr. Hicks as an undergrad after taking his PL course and went on to complete the combined BS/MS program. I’m now back at UMD working on my PhD. To me, students who start researching as undergrads have many more advantages when applying for jobs and grad school. UR helps students decide what is the right path for them and UMD has a mix of students who pursue either grad school or industry.
Tony: Yiyun, which way are you leaning?
Yiyun: I’m definitely leaning toward academia. I’m more interested in the abstract aspects of computer science. Attending grad school will allow me to explore a broader range of topics without the pressure of having to deliver products ready to use in production. I took a one-credit course where we were introduced to what it would look like to work in industry or academia where Dr. Dave Levin shared his experience of working as a researcher in industry. Based on what he told us, in industry, they care more about how a research project can be beneficial to the company; interesting projects can be dropped if they don’t bring benefits quickly enough. While there are deadlines in academia, I find them to be much less restrictive.
Tony: How have your research opportunities changed your views of being a computer scientist?
Yiyun: It hasn’t really changed my view that much, but it does make me feel more confident. Before I started doing research, I always believed that research in CS was all about innovative ideas and only the extremely lucky or extremely smart students could ever come up with those ideas. Doing research made me realize that research is actually a mix of innovation and engineering. While it is possible to get stuck, we can always find some other part of the project to work on; as we get a better picture of the problem, it becomes easier to find a solution.
Tony: What should faculty know about undergrads doing CS research?
James: In my experience, fostering UR can be a mutually beneficial relationship. Undergrads learn in depth about a new topic and are exposed to research, while faculty members gain a colleague to collaborate with; it also creates opportunities for grad students to gain mentoring experience.
Yiyun: I believe UR can be seen as an extension of the standard undergrad courses. In class, we only learn how to apply the tools to the problems that are designed to be solvable, while in research, we are no longer implementing something that is known to have a solution. The usefulness of certain tools and techniques only becomes evident when trying to solve real world problems. For instance, I was only able to see the benefits of a satisfiable modulo theory-based theorem prover after working on proofs with thousands of lines of code. Even the most challenging exercises from the textbook wouldn’t require that much code. I feel it would have been much more difficult to understand the motivation behind proof automation without actual research experience.
Example of Yiyun’s code

Photo of author Tony Kapolka  has taught the past twenty-three years at Wilkes University, a school offering an undergraduate degree in Computer Science. He’s hosted the Eastern Colleges Science Conference twice, and is a CUR Councilor.