On this page
Computer science research is entirely different from software engineering. Software engineers build systems using established tools and frameworks, while researchers invent the algorithms and architectures that will become the tools of the next decade.
The pipeline into research is highly selective. The 2023 Computing Research Association (CRA) Taulbee Survey found that for over 52,000 new bachelor's majors enrolled in computer science at reporting departments, only 3,845 new PhD students enrolled [[1]](https://cra.org/wp-content/uploads/2024/05/2023-Taulbee-Survey.pdf). If you want to become a researcher, you must start building your profile while you are still an undergraduate.
Do you need a PhD to be a computer science researcher?
Yes, for most formal research scientist roles, a PhD is the entry requirement. A PhD programme is an apprenticeship in how to conduct independent research, find unsolved problems, and write academic papers.
While some undergraduate students secure research engineering roles in industry after graduation, the path to directing your own research agenda almost always requires a doctorate. According to the 2023 CRA Taulbee Survey, Artificial Intelligence and Machine Learning is the most popular PhD specialty, accounting for over 25% of all computer science PhDs awarded [[1]](https://cra.org/wp-content/uploads/2024/05/2023-Taulbee-Survey.pdf). However, getting into a PhD programme requires showing that you already know how to do research.
How do you transition from coursework to research?
The shift from being a student to being a researcher requires moving away from structured problems with known answers. You must learn to read academic literature, understand where the boundaries of current knowledge lie, and build systems that test new ideas.
Start by reproducing the results of an existing paper. Find an interesting paper on an open-access repository like arXiv, read it thoroughly, and try to write the code that implements its core algorithm. This proves to a future lab supervisor that you can translate academic theory into working software. If you document your attempts publicly, you can also build a GitHub profile as a student that acts as your research portfolio.
When you get stuck reading a dense algorithm in a paper, Fermi's AI tutor can work out what you already know and build a plan for the session, teaching you the prerequisites before you return to the literature.
How do I approach a professor for a research project?
The most common way to get research experience is to work in a professor's lab at your university. Professors are always looking for capable undergraduates to help run experiments, write data processing scripts, or review literature, but they are also flooded with generic emails.
Use this framework to approach a professor:
Read their recent work: Look up the professor's lab website and read their last three conference papers. You do not need to understand every mathematical proof, but you must understand the problem they are trying to solve.
Find the overlap: Identify a specific skill you have—such as Python scripting, data visualisation, or hardware tinkering—that could be useful to their current projects.
Write a targeted email: Do not ask for a generic "research position." Ask for a 15-minute meeting to discuss a specific paper they wrote.
Here is a script of what to say in your email:
> Dear Professor [Name], > > I am a [Year] year computer science student. I recently read your paper on [Topic] presented at [Conference], and I was particularly interested in how you optimised the [Specific algorithm/system]. > > I have been building projects using [Tool/Language] and have attached a link to my GitHub profile. I would love to contribute to your upcoming work in this area. Do you have 15 minutes next week to discuss your lab's current projects?
If the mathematical notation in a professor's paper is confusing, the Fermi Concept Library has every concept in mathematics and computing mapped out, so you can trace the idea back to its roots.
How do you start an independent computer science project?
If you cannot find a lab position immediately, you can start an independent research project. This shows initiative and gives you something concrete to discuss when you eventually interview for a lab or a PhD programme.
Follow this four-step framework:
Define a narrow problem: Do not try to solve artificial general intelligence. Instead, pick a specific, small problem, such as optimising a sorting algorithm for a specific type of skewed data.
Establish a baseline: Implement the standard, accepted solution to the problem. This is your control group.
Implement your variation: Build your proposed improvement and run it against the baseline.
Write it up: Document your methodology, results, and code clearly. A well-written technical blog post or a detailed repository readme often serves as a strong portfolio piece.
What are the alternatives to a university lab?
If your college does not have active research labs, you can apply for summer research programmes. The National Science Foundation (NSF) funds Research Experiences for Undergraduates (REU) sites across the United States, which bring students to research universities for intense summer projects.
These programmes are highly competitive but effective at preparing students for graduate school. A study of National Science Foundation REU participants found that approximately 49% eventually earn a graduate degree, including 17% who complete a doctorate [[2]](https://new.nsf.gov/sites/default/files/2023-01/REU-NSC-Fact-Sheet.pdf). Apply to multiple sites and tailor your application essay to the specific projects each site offers.
Avoid the temptation to publish low-quality work just to pad your resume. As we discuss in our guide on whether school students should publish research papers, admissions committees value one rigorous project in a real lab far more than multiple papers in unrecognised, pay-to-publish journals. Focus on doing genuine work, and the career will follow.



