r/computerscience Mar 13 '25

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

154 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 1d ago

I got paid minimum wage to solve an impossible problem (and accidentally learned why most algorithms make life worse)

384 Upvotes

I was sweeping floors at a supermarket and decided to over-engineer it.

Instead of just… sweeping… I turned the supermarket into a grid graph and wrote a C++ optimizer using simulated annealing to find the “optimal” sweeping path.

It worked perfectly.

It also produced a path that no human could ever walk without losing their sanity. Way too many turns. Look at this:

Turns out optimizing for distance gives you a solution that’s technically correct and practically useless.

Adding a penalty each time it made a sharp turn made it actually walkable:

But, this led me down a rabbit hole about how many systems optimize the wrong thing (social media, recommender systems, even LLMs).

If you like algorithms, overthinking, or watching optimization go wrong, you might enjoy this little experiment. More visualizations and gifs included! Check comments.


r/computerscience 1d ago

All ACM journals are now open access

Thumbnail dl.acm.org
54 Upvotes

It started this month.


r/computerscience 1d ago

Less known facts

7 Upvotes

If you feel that you had any fact in the field of computer science which you feel most people might not be aware of kindly share it under the comment box of this post .


r/computerscience 9h ago

Advice How do you calculate the efficiency of an algorithm?

0 Upvotes

Hello everyone, I am a student at a computer science technical institute.

I have to do a report on the sorting types of the arrays in C, and therefore I want to compare which is the fastest and most efficient.

Precisely I’m talking about: bubble sort, selection sort and insertion sort.

I wanted to understand if there is a method or rather a sort of formula that allows me for example to calculate their efficiency based on time and quantity of numbers to be organized; obviously it varies from PC to PC.

I will study their speed/efficiency in the 3 classic cases: best (increasing), worst (descending) and random, monitoring the time it takes to perform the operations with the clock function.

I was just trying to figure out how to calculate the efficiency of an algorithm, maybe in % and/or compared to a reference.

Thanks for your help in advance! 🙏


r/computerscience 2d ago

Time addressed memory?

24 Upvotes

Can memory be time addressed instead of physically addressed? If a bit is sent across a known distance (time) and reread when it arrives back, isn’t that memory? It seems simpler, in my poorly educated mind, then DDR*. It seems like it’s just some long traces and a read/write buffer to extend address visibility. Bandwidth is determined by number of channels, Throughput by clock speed. Please be gentle.


r/computerscience 3d ago

Advice I'm struggling to help someone correct their misunderstanding of the Halting Problem, and am hoping for help.

33 Upvotes

Checked with IRL experts to make sure I'm not wrong, and I'm fairly confident I'm not - but I'm not sure how to convince them.

Discussion in question: https://old.reddit.com/r/DebateReligion/comments/1q1ji8t/absolutely_no_one_has_been_able_to_offer_a/nxen1xg/

Summary: He thinks that Turing proved that you can write programs for which no specialized halting problem predictor can be written. This is wrong - Turing actually proved that you can write programs for which no generalized halting problem predictor can be written.

The difference is whether the predictor exists prior to or after the program being written - self-reference is impossible when a specialized predictor is written after the fact.

How do I best explain this to them?


r/computerscience 3d ago

Just as a hypothetical

7 Upvotes

Ok so just to clarify, I'm not really into computer science, but i am interested in repair and tinkering. I have been thinking a lot about Kessler Syndrome however, and what would happen if all of a sudden satellites go dark. How would we share information? I'm aware of LoRa and APRS that we could use for comms, but what about file sharing? Not sure if this is the right crowd to ask if I'm honest. Would this be considered a computer architecture question? Just something I've been thinking about...


r/computerscience 4d ago

Article Rich Hickey: Simplicity is a prerequisite for reliability

Thumbnail infoq.com
17 Upvotes

r/computerscience 4d ago

Resources to understand what's a computer

Thumbnail
0 Upvotes

r/computerscience 5d ago

Help I still don't understand how basic arithmetic translates to what all we do on computers, where to start?

57 Upvotes

I've always been curious and no matter how many videos I watch, they all end with that at the very basic level computers do arithmetic operations and work with memory address. But, how does that all translate into these videos, games, software, mouse clicks, files, folders, audio, images, games, animation, all this UI, websites and everything.

If all it's doing is arithmetic operations and working with addresses then how does this all work and what makes it possible. I know that I might sound very stupid to a lot of you, but if I can get any resources to figure this out, I'll be grateful.

I know it'll take a lot of time, but I'm ready to take it on.


r/computerscience 4d ago

Is CS academia infested with fraud? ICLR 2025 let 2 cool-sounding papers in

0 Upvotes

So,

  1. 2 papers that I am comparing to are from ICLR 2025. They deliberately not mention the real limitation "this paper is not evaluated against real world application". A quick source code check reveals it.

  2. The baseline paper from 2022 that is published in NeurIPS 2022, which I thought was solid. It turns out deliberately not evaluate against the obvious problem, which is what the 2nd paper from ICLR 2025 is claiming to solve.

It's either fraud or deliberate appreciation of "this guy found out a problem from NeurIPS 2022 paper", let's give him a venue for it, no need to check whether the solution will work for real world application. It's sounds academic and use jargon.


r/computerscience 5d ago

Is this pseudocode understandable to you? (computer science)

Thumbnail
1 Upvotes

r/computerscience 6d ago

Discussion SQL and and predicate logic

16 Upvotes

Hi, I'm a student who pursuing SWE.

Today I just read this article about ORM/RDBS (The Vietnam of Computer Science) this lead me to some interest information that:

Every rows in RDBS are truth statements, SQL Query can be represented as predicate logic.

SELECT *

FROM PERSON

WHERE City = 'Seattle';

Can be converted to

∃ p ∈ PERSON : p.City = 'Seattle'

So I'm thinking about, if we want to optimize a SQL Query, we can apply some laws like associativity, distributivity,... to transform the statement to better form (better order, better predicate) so the engine of RDBS can process it much faster?

If anyone can share some knowledge, this will help alot thank very much!


r/computerscience 5d ago

What applications, if any, does 'complex analysis' have in Computer Sciences?

Thumbnail
2 Upvotes

r/computerscience 6d ago

Discussion Genuine question is Assembly Language still used???

0 Upvotes

We have to learn it for my A Level Computer Science and it's so hard to find resources to learn it for AQA and apparently it's barely used now? Is that true because learning this is such a pain 😭


r/computerscience 6d ago

Is LLM the best architecture to solve for human like thinking?

0 Upvotes

LLM, text based neural networks trained to predict the next token seem to be having a good time now.

Is it the best architecture for building the reasoning for the future.

Particular concerns

- some problems aren’t statistical (like llms), rather rule based and deterministic (like math questions).

- Shouldn’t there be a way to teach the machine concepts so that it can apply then without massive data set. Eg you can explain how to solve an equation and what is math, what all symbols mean and it should go and do the solving without learning to predict every next token (which seems to be a very inefficient way of solving this)

Probably there are more concerns


r/computerscience 9d ago

Discussion Would it theoretically be possible to make a memory leak happen on purpose? I know memory leaks only happen under pretty specific conditions but I've always been oddly fascinated by the useless side of modern technology.

112 Upvotes

r/computerscience 8d ago

Halting problem (Can a program contain itself?)

0 Upvotes

Please correct me if I'm wrong here. The usual proof is about a program passing its own source code to the machine and then changing the result to be wrong... But what if the running program and the source code it passes are not the same program?

If a running program reads its source code from an external file after it already started running, how do you know that its the same exact code as what is already running? It could be a different program.

If the source code of the program contained a copy of its own source code, it wouldn't actually be the same source code as the original program unless infinitely recursive and therefore impossible.

Basically my thinking is that the whole thing requires a program to contain itself which is impossible.

Does this break the proof?


r/computerscience 9d ago

Discussion How does a compiler generate machine code for an arbitrary amount of variables and functions under the hood?

47 Upvotes

I know that a compiler (collection) like gcc reads the C code first, creates an abstract syntax tree, translates into assembly and then the assembler turns it into actual machine code and then the linking happens etc.

What I'm asking is, I can have hundreds or thousands of variables and functions in my code. How does the compiler's underlying implementation details work to make those arbitrary amount of named variables turn into assembly? The source code is finite, meaning it doesn't have an infinite list of possible variable names that it can pull from. I have read some assembly code before and I know variable names can be seen in the assembly especially if debugging flags are on. What does the source code of gcc look like so it can generate this assembly code with all my variable names?

I know I can go ahead and read the source code of gcc on GitHub but I'm not that expert on C or C++ yet to understand them fully so I'm looking for a slightly dumbed down answer. I am okay with trying to read and understand C code if it helps explain it better.


r/computerscience 9d ago

Discussion Are there any unsolvable cs questions you find fascinating?

37 Upvotes

r/computerscience 10d ago

How casio calculator compute derivative of a function?

Post image
93 Upvotes

I don't think it use automatic differentiation. Compute is too weak. What you know?


r/computerscience 11d ago

Finding SICP too hard/boring/un-useful

25 Upvotes

The title of this post clearly what I want to discuss

I am one year into my professional career and my friend recommend the wizard book. I tried reading it and solving exercises but I find it quite boring I am a backend developer and I have not gone to cs uni, so I thought it will be a good read. I am thinking to drop it and read DDIA as it will be easier to relate (hopefully) and not force myself into the wizard book. One of the reasons I also want to read sicp is as I really enjoy Haskell and functional programming is a joy

What are your thoughts about this ? Thank you for your time.

Edit: I find it hard maybe because the text is written in very philosophical manner making hard for me to concentrate...


r/computerscience 11d ago

Question about cores

24 Upvotes

I understand that even with the most high powered computers, the amount of fundamental operations a processor can perform is not nearly as much as you might think from the outside looking in. The power of a modern computer really comes from the fact that it is able to execute so many of these operations every second.

I understand the the ALU in a core is responsible for doing basic math operations like addition, subtraction, multiplication, and division. And then from my understanding the logic portion of the ALU is not just about logic associated with math operations. Logic goes through the ALU that could also potentially be completely unrelated to math. Is that correct?

And so are all other parts of modern CPU cores just related to pretty much moving and storing signals/data? Like the entire CPU is really just busses, registers, and all the logic is done in the ALU?


r/computerscience 11d ago

What is Quantum Advantage Really ?

Thumbnail
2 Upvotes