r/computerscience • • Mar 13 '25

How does CS research work anyway? A.k.a. How to get into a CS research group?

173 Upvotes

One question that comes up fairly frequently both here and on other subreddits is about getting into CS research. So I thought I would break down how research group (or labs) are run. This is based on my experience in 14 years of academic research, and 3 years of industry research. This means that yes, you might find that at your school, region, country, that things work differently. I'm not pretending I know how everything works everywhere.

Let's start with what research gets done:

The professor's personal research program.

Professors don't often do research directly (they're too busy), but some do, especially if they're starting off and don't have any graduate students. You have to publish to get funding to get students. For established professors, this line of work is typically done by research assistants.

Believe it or not, this is actually a really good opportunity to get into a research group at all levels by being hired as an RA. The work isn't glamourous. Often it will be things like building a website to support the research, or a data pipeline, but is is research experience.

Postdocs.

A postdoc is somebody that has completed their PhD and is now doing research work within a lab. The postdoc work is usually at least somewhat related to the professor's work, but it can be pretty diverse. Postdocs are paid (poorly). They tend to cry a lot, and question why they did a PhD. :)

If a professor has a postdoc, then try to get to know the postdoc. Some postdocs are jerks because they're have a doctorate, but if you find a nice one, then this can be a great opportunity. Postdocs often like to supervise students because it gives them supervisory experience that can help them land a faculty position. Professor don't normally care that much if a student is helping a postdoc as long as they don't have to pay them. Working conditions will really vary. Some postdocs do *not* know how to run a program with other people.

Graduate Students.

PhD students are a lot like postdocs, except they're usually working on one of the professor's research programs, unless they have their own funding. PhD students are a lot like postdocs in that they often don't mind supervising students because they get supervisory experience. They often know even less about running a research program so expect some frustration. Also, their thesis is on the line so if you screw up then they're going to be *very* upset. So expect to be micromanaged, and try to understand their perspective.

Master's students also are working on one of the professor's research programs. For my master's my supervisor literally said to me "Here are 5 topics. Pick one." They don't normally supervise other students. It might happen with a particularly keen student, but generally there's little point in trying to contact them to help you get into the research group.

Undergraduate Students.

Undergraduate students might be working as an RA as mentioned above. Undergraduate students also do a undergraduate thesis. Professors like to steer students towards doing something that helps their research program, but sometimes they cannot so undergraduate research can be *extremely* varied inside a research group. Although it will often have some kind of connective thread to the professor. Undergraduate students almost never supervise other students unless they have some kind of prior experience. Like a master's student, an undergraduate student really cannot help you get into a research group that much.

How to get into a research group

There are four main ways:

  1. Go to graduate school. Graduates get selected to work in a research group. It is part of going to graduate school (with some exceptions). You might not get into the research group you want. Student selection works different any many school. At some schools, you have to have a supervisor before applying. At others students are placed in a pool and selected by professors. At other places you have lab rotations before settling into one lab. It varies a lot.
  2. Get hired as an RA. The work is rarely glamourous but it is research experience. Plus you get paid! :) These positions tend to be pretty competitive since a lot of people want them.
  3. Get to know lab members, especially postdocs and PhD students. These people have the best chance of putting in a good word for you.
  4. Cold emails. These rarely work but they're the only other option.

What makes for a good email

  1. Not AI generated. Professors see enough AI generated garbage that it is a major turn off.
  2. Make it personal. You need to tie your skills and experience to the work to be done.
  3. Do not use a form letter. It is obvious no matter how much you think it isn't.
  4. Keep it concise but detailed. Professor don't have time to read a long email about your grand scheme.
  5. Avoid proposing research. Professors already have plenty of research programs and ideas. They're very unlikely to want to work on yours.
  6. Propose research (but only if you're applying to do a thesis or graduate program). In this case, you need to show that you have some rudimentary idea of how you can extend the professor's research program (for graduate work) or some idea at all for an undergraduate thesis.

It is rather late here, so I will not reply to questions right away, but if anyone has any questions, the ask away and I'll get to it in the morning.


r/computerscience • • 6h ago

General 64GB SanDisk P4 from 2010 controller passed 14 Petabyte in endurance test, NOT ASKING FOR TECH HELP

Post image
29 Upvotes

It broke on previous post saying it was asking for tech help


r/computerscience • • 13h ago

What is PHP2Shell and why is it such a big deal?

31 Upvotes

I understand that it has to do with cyber security but that’s about it.


r/computerscience • • 2d ago

AutomataLab: Exploring automata, formal grammars, and parsing

Thumbnail gallery
115 Upvotes

I've been developing AutomataLab, an open-source desktop workbench for experimenting with formal languages and computational models.

It supports interactive simulations of finite automata, PDAs, and Turing machines, alongside grammar transformations and parsing algorithms such as LL(1), LR(1), LALR(1), CYK, and Earley.

The idea is to make abstract computational processes easier to inspect and understand.

GitHub: https://github.com/reeshavsinha/AutomataLab
Website: https://automata-lab-one.vercel.app

I'd be interested in feedback from people working with automata theory or compiler construction.


r/computerscience • • 2d ago

Hi can anybody explain me the difference between asynchronous, concurrency and parallelism?

4 Upvotes

Parallelism i understand that Performing multiple tasks parallely at the same time

but what exactly asynchronous and concurrency means?


r/computerscience • • 2d ago

Discussion I made a logic gate simulator! check it out and let me know what you think pls

Thumbnail photos.app.goo.gl
6 Upvotes

r/computerscience • • 2d ago

I built a canvas simulator for automata theory: DFA/NFA/PDA/Turing machines, regex to NFA conversion, and real-time team collaboration

Thumbnail gallery
1 Upvotes

r/computerscience • • 3d ago

Discussion Replacing B-Trees with streaming linear models (PGM): cache locality and bounds in practice

5 Upvotes

Traditional B-Trees waste substantial CPU cycles on pointer chasing across node levels, causing avoidable cache misses on modern architectures. The PGM-index approach (Ferragina & Vinciguerra, VLDB 2020: https://www.vldb.org/pvldb/vol13/p1162-ferragina.pdf) addresses this by modeling key distributions through streaming piecewise linear regression with strict +/- epsilon error bounds.

Instead of traversing tree nodes, key rank is predicted directly on the ALU (y = ax + b), bounding the local search window so that it fits entirely within L1 cache. The construction runs in a single O(N) streaming pass with zero external solvers.

I built a pure Rust reference implementation (v0.2.0) with zero dependencies to benchmark this against std::collections::BTreeMap across 1M keys: https://github.com/gilnett/learned_index_lab. Benchmarks across uniform and skewed distributions show a 99.9% reduction in index memory (~48 KB vs 45 MB) and 3x to 4.5x lower lookup latency.

While transactional engines still rely on B-Trees for in-place page writes, learned models provide significant advantages for read-heavy or immutable storage layouts (such as LSM SSTables and columnar stores) where pointer overhead is pure waste.

Has anyone here benchmarked or worked with learned data structures in storage systems? How do you approach optimal epsilon tuning when key distributions are non-uniform or unpredictable?


r/computerscience • • 2d ago

Discussion Cold take: Java has essentially zero flaws

0 Upvotes

I've posted here before about x86, and I'm back with another take that I recently learned is "objectively wrong" as my coworker would say.

Java as a language is object-oriented, which is ultimately great for a multitude of reasons. The complaints that people like to throw out about verbosity is mostly just paraphrasing for "i like syntax candy more than any kind of structured code".

Java is only bad if you write it bad. If you think it's a bad language, then you probably just don't have a great grip on OOP. I've never worked so well in a team in anything besides Java. The fact that people will hate on Java then give their love to Python blows my mind. Python is essentially a useless pile of junk when you compare it to Java.

Anyways, I'm open to argumentation. My coworker is trying to brainwash me into thinking that Java is the worst language of all time. But, it's not. It's the best.


r/computerscience • • 7d ago

Help Is the best case here O(1)?

Post image
221 Upvotes

Hi, still new to algorithm analysis and need some help confirming my answer or not.

I assumed that best case would be O(1) in this scenario if size of the array is either 0 or 1. But trying to review my answer with online resources, it say's that O(1) doesn't count here?

What is the definite answer here?

EDIT: Hey everyone! Glad everyone got to interact and give responses. The answer was O(N) in the end! Confirmed with my professor.


r/computerscience • • 8d ago

Discussion How do I create logic gate sequences in real life applications?

9 Upvotes

I have finished computer science, and I always sucked at boolean expressions. But now, this game that I play got me interested in logic, and I wanna get to know more about it. I want to make a specific sequence in order to make my machines in game operate as I intend them to, but I have no clue how to go about it. Any advice is appreciated.


r/computerscience • • 8d ago

Advice Interfaces

9 Upvotes

I stumbled upon the word interface when i stumbled upon the terminal in visual studio code. A terminal is a text based user interface which does lots of useful stuff.

That got me thinking about the word interface and what exactly it is in the computer sense. I understand user interface is the area or boundary between the human (user) and the computer( or rather software?) interacting with each other.

The problem is I am getting conflicting thoughts with current information I've searched and I'm unable to get a full understanding of the term.

So can someone please give their understanding/opinion of what an interface is in a broad computing sense. And can they also give multiple examples of different types of interfaces used in computer hardware and software too please.

Many thanks


r/computerscience • • 9d ago

General A good example of iteration vs recursion

20 Upvotes

The Song that Never Ends is iterative. It loops and is aware that it remains the same song.

The Song that Gets on Everybody's Nerves just sings about a song, and sings "this is how it goes:", calling itself.


r/computerscience • • 11d ago

Advice The dedication page of SICP/The Wizard Book (2nd edition, 1996)

Post image
32 Upvotes

r/computerscience • • 11d ago

General Implementation of Andreas Bjorklund's algorithm for determining hamiltonicity

Thumbnail
8 Upvotes

r/computerscience • • 13d ago

Discussion Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90

Thumbnail news.mit.edu
370 Upvotes

r/computerscience • • 13d ago

Advice Advices for someone looking to get into Language Technology?

8 Upvotes

Hello everyone, I'm a graduate with a Bachelor in English Language Studies (Business English & Corporate Communication track) and I'm looking to apply for the Language Science & Technology (LST) Master's program at Universität des Saarlandes (Germany).

I don't have a background in technology or computer science. My work experience mostly includes English Teaching for a year, then 1.5 year working as an English Communication Specialist (basically creating website & social contents, managing and translating huge amounts of website articles to English via CMS, working on admission and promotion campaigns & events,...)

But I'm looking to pivot into Tech recently, and after doing research, I'm really interested in Language Technology and found out about this Master program in Germany that is open to admit students with a background in linguistics (which is pretty rare since most program requires you to have a bachelor in computer science).

I know that I need to work extra, extra hard given my background. I've been taking up course on Coursera (Python for Everybody, Linear Algebra, Statistics,...) as the course's advisor advice to increase my chance of admission as well as to feel less overwhelming if I get admitted.

I'll continue to try and learn harder to make up for my lack of knowledge in the field.
Do you guys have any advices for someone looking to get into the field, and also during my time studying the program if I get admitted? Specifically to make learning smoother and to get a better chance at getting hired after graduating would be much appreciated.

Thank you everyone! :D


r/computerscience • • 13d ago

Discussion Architecture/systems Research papers not very quantitative?

4 Upvotes

I’ve been reading some papers in the field - the trend is lots of text and sometimes graphs but that’s about it. It’s more a conceptual description of findings/visualisation than the actual proof/quantitative descriptions.

Anyone else feel this way?


r/computerscience • • 14d ago

Discussion Is C an "Assembly-like" Language?

45 Upvotes

I know C is programing language. It is not architecture specific. One writes the source code and a compiler turns it into an executable depending on what settings you tell it. So the same source code would output different executables depending on what you want to run it on and what optimization options are on. Assembly languages on the other hand are architecture specific. Is C "Assembly-like"? To be honest I'm not sure what would be Assembly-like. I guess if a program written in multiple languages that have the same behavior, if the C version (using something like GNU C Compiler) looked closer to its assembly than, say its Java version (GraalVM), then that counts.


r/computerscience • • 14d ago

Discussion Want to learn more about the convergence of computer logic & formal logic in communication theory

4 Upvotes

Hello! 26f, studying law.

Formal logic has always been interesting to me, but it’s only been this past year that I’ve began to dip my toe into systems logic, Boolean/Fuzzy logic etc etc (sorry if my terms are all over the place, I began learning about systems engineering and went down a rabbit hole).

Basically, do any computer science peeps have any resources for a person who wants to learn more about systems engineering, and how it relates to the study of communication/argumentation logic?

Thank you!


r/computerscience • • 15d ago

Discussion A linkedlist is a skewed directed graph

22 Upvotes

Can I say the above? I think of this after studying trees and graph. Singly linked list in particular.


r/computerscience • • 15d ago

Help What book would you recommend for learning to write clean, minimal, and secure code?

Thumbnail
0 Upvotes

r/computerscience • • 18d ago

Advice I need advice on how to assign values to base 6 tryte value sets

Thumbnail gallery
0 Upvotes

I'm trying to design a mechanical computer.

Why? Idk. But now I'm building Tascii, and I've even figured out how to use tape and hole punching to talk to it... but storing the data and processing, let alone assigning values to various tascii sets is hard. Data enclosed.

Yes... my computer uses see saws


r/computerscience • • 21d ago

General procedural programming, object oriented programming and functional programming

22 Upvotes

Although I’ve done some googling I think they still use big English to explain this concept. I think I know them but I just wanted to ask if I can get a simple explanation from the house plz


r/computerscience • • 22d ago

General Who is the Brian Cox of computer science?

6 Upvotes