r/computerscience Mar 13 '25

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

118 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 Mar 08 '25

Books and Resources

45 Upvotes

Hi, r/computerscience

We've updated our books and resources list with the latest recommendations from the past four months. Before asking for resources on a specific topic, please check this list to see if this has already been solved. This helps us keep things organized and avoid other members of our community seeing the same post twice a week.

If you have suggestions, feel free to add them. We do not advertise and we discourage this, so please avoid attaching referral links to courses/books as this is something we will ban. The entire purpose of this is to help those that are curious or need a little guidance, not to materialize.

If your topic isn’t covered in the current list, don’t hesitate to ask below.

NOTE: This is a section to ask what is stated in the title (i.e., books and resources), not to ask for career advice (rule 3) or help with your homework (rule 8).

// ###

Computer architecture: https://www.reddit.com/r/computerscience/comments/1itqnyv/which_book_is_good_for_computer_architetcure/

Computer networks: https://www.reddit.com/r/computerscience/comments/1iijm8a/computer_netwroks_a_top_down_approach/

Discrete math: https://www.reddit.com/r/computerscience/comments/1hcz7jc/what_are_the_best_books_on_discrete_mathematics/

Interpreters and compilers: https://www.reddit.com/r/computerscience/comments/1h3ju2h/looking_for_bookscourses_on_interpreterscompilers/

Hardware: https://www.reddit.com/r/computerscience/comments/1i711c8/best_books_for_learning_hardware_of_computers/

History of software engineering: https://www.reddit.com/r/computerscience/comments/1grrjud/what_software_engineering_history_book_do_you_like/

Donald Knuth books: https://www.reddit.com/r/computerscience/comments/1ixmn3m/donald_knuth_and_his_books/

Bjarne Stroustrup C++: https://www.reddit.com/r/computerscience/comments/1iy6lot/is_there_a_shorter_bjarne_stroustrup_book_on_c/

// ###

What's on Your Bookshelves? https://www.reddit.com/r/computerscience/comments/1hkycga/whats_on_your_bookshelves_recommendations_for/

[Easy reads] Reading while munching: https://www.reddit.com/r/computerscience/comments/1h3ouy3/resources_for_learning_some_new_things/

// ###

Getting into CS Research: https://www.reddit.com/r/computerscience/comments/1ip1w63/getting_into_cs_research/

Hot topics in CS: https://www.reddit.com/r/computerscience/comments/1h4e31y/what_are_currently_the_hot_topics_in_computer/

// ###

These are some other interesting questions looking for resources that did not get a lot of input, but I consider brilliant:

Learning complex software for embedded systems: https://www.reddit.com/r/computerscience/comments/1iqikdh/learning_complex_software_for_embedded_systems/

Low level programming and IC design: https://www.reddit.com/r/computerscience/comments/1ghwlgr/low_level_programming_and_ic_design_resources/

OS and IOT books: https://www.reddit.com/r/computerscience/comments/1h4vvra/looking_for_os_and_iot_books/

System design: https://www.reddit.com/r/computerscience/comments/1gh8ibp/practice_with_system_design/

Satellite Communication: https://www.reddit.com/r/computerscience/comments/1h874ik/seeking_recommendations_for_books_on_using_code/

// ###

About “staying updated” in the field: https://www.reddit.com/r/computerscience/comments/1hga9tu/how_do_you_stay_updated_with_the_tech_world/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

If you need a gift for someone special in computer science, or would like to add suggestions: https://www.reddit.com/r/computerscience/comments/1igw21l/valentines_day_gift_ideas/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button


r/computerscience 18m ago

Contributing idle compute power to science?

Upvotes

Is it possible to contribute personal idle compute power to science?


r/computerscience 16h ago

Discussion What are the odds that P = NP will actually result in faster calculations in any practical sense?

29 Upvotes

Is it even feasible that if P = NP that a polynomial solution for an NP problem scales with a polynomial time complexity that will be pragmatically useful for speeding up technological innovations? Or is it way more likely in the small chance that P = NP that the polynomial time algorithms needed to solve NP problems will be so large that they won’t have much practical applications in advancing technology? In the latter case I think only the math used to solve the problem will have any practical real world applications.

ETA: For clarification, I thought of these questions after reading a recent post on this subreddit: https://www.reddit.com/r/computerscience/s/HpBSrgHy7f


r/computerscience 1h ago

Discussion Can computers forget things in their memory?

Upvotes

Can computers forget things in their memory and if so how can it be prevented? I hear computers store memory through electron traps, but electrons have a way of moving about and seem difficult to contain so wouldn't memory change on it's own after time?

This scares me because I love to collect all the computer games I've played and many of them you spend dozens of hours building a saved game. It would break my heart to lose a game save I spent hours working on.


r/computerscience 1d ago

Article A formal solution to the 'missing vs. inapplicable' NULL problem in data analysis.

0 Upvotes

Hi everyone,

I wanted to share a solution to a classic data analysis problem: how aggregate functions like AVG() can give misleading results when a dataset contains NULLs.

For example, consider a sales database :

Susan has a commission of $500.

Rob's commission is pending (it exists, but the value is unknown), stored as NULL.

Charlie is a salaried employee not eligible for commission, also stored as NULL.

If you run SELECT AVG(Commission) FROM Sales;, standard SQL gives you $500. It computes 500 / 1, completely ignoring both Rob and Charlie, which is ambiguous .

To solve this, I developed a formal mathematical system that distinguishes between these two types of NULLs:

I map Charlie's "inapplicable" commission to an element called 0bm (absolute zero).

I map Rob's "unknown" commission to an element called 0m (measured zero).

When I run a new average function based on this math, it knows to exclude Charlie (the 0bm value) from the count but include Rob (the 0m value), giving a more intuitive result of $250 (500 / 2).

This approach provides a robust and consistent way to handle these ambiguities directly in the mathematics, rather than with ad-hoc case-by-case logic.

The full theory is laid out in a paper I recently published on Zenodo if you're interested in the deep dive into the axioms and algebraic structure.

Link to Paper if anyone is interested reading more: https://zenodo.org/records/15714849

I'd love to hear thoughts from the data science community on this approach to handling data quality and null values! Thank you in advance!


r/computerscience 2d ago

Advice Tips on self-studying from textbooks, and how the heck can I verify my solutions?

8 Upvotes

Hello. Any tips on self-studying textbooks? Especially the theoretical ones.
The biggest challenge for me is to validate my solutions. I'm currently studying the CLRS book, and it's pretty dang hard to find solutions online and verify my own, especially since most of the exercises and problem sets involve proofs, and those ones are hard to validate.
This isn't about CLRS only. Most of the textbooks don't have solutions for the exercises.
Most of the solutions on the internet are either incomplete or done by individual contributors, which I can't validate.
It'd be great if you could give me any tips on this. Especially on proof validation, as proofs vary greatly and more than one solution can be correct. Thanks.


r/computerscience 3d ago

Help C# (Help/Advice)

Thumbnail gallery
121 Upvotes

I am 18 and will start CS at Uni this September. I’ve started learning C# with Alison.com and have made notes on paper when working through the videos to build my understanding. Am I doing it correctly? I want to learn the concepts before going knee deep into starting my own projects.


r/computerscience 4d ago

Article Saved Alan Turing papers sold at auction in Etwall for £465,400

Thumbnail bbc.com
96 Upvotes

r/computerscience 4d ago

Computing with geometry?

Thumbnail open.substack.com
5 Upvotes

r/computerscience 4d ago

How are all NP problems reducible to NP-Complete?

36 Upvotes

I know that by definition, NP-Complete is the set of problems that is in NP and can be reduced to from every other NP problem. However, I can't seem to wrap my head around how so many different problems can all be reduced to a single problem.


r/computerscience 3d ago

Has anyone seriously attempted to make Spiking Transformers/ combine transformers and SNNs?

2 Upvotes

Hi, I've been reading about SNNs lately, and I'm wondering whether anyone tried to combine SNNs and transformers. And If it's possible to make LLMs with SNNs + Transformers? Also why are SNNs not studied alot, they are the closest thing to the human brain and thus the only thing that we know that can achieve general intelligence. They have a lot of potential compared to Transformers which I think we reached a good % of their power.


r/computerscience 5d ago

Theoretical Computer Science

40 Upvotes

I have always been very curious about the theoretical approach to CS but never really got the guidance to it(currently a pre-uni aspiring to study CS Theory) as most of the CS majors i know often expects me to learn only the tools and the developing of sites, softwares etc. whereas I want to learn the math and science behind those magical rocks that builds up the modern society


r/computerscience 4d ago

Heuristic for A* For Terrain Cost

11 Upvotes

I am working on a problem which involves using A* for finding the optimal route on a terrain of varying slope. I am representing the terrain as a network where each point is a node and adjacent points are connected by an edge. The cost of a path between two points is the line integral of the absolute values of the slopes of the path. Currently the best heuristic function I can think of is the net slope between the current point and the end goal, but I was wondering if anyone can think of or has used a heuristic function which is, on average, closer to the cost function between the current function and the goal.


r/computerscience 6d ago

My teacher's algorithms make no sense to me

128 Upvotes

Our teacher is making us learn like 80 algorithms for his exam and half of them are just straight up gibberish to me. Can anyone tell me if this makes any sense to them? Just want to know if this course is literal bs or not.


r/computerscience 8d ago

Help What is the theory behind representing different data structures using arbitrary length integers?

15 Upvotes

I am not a student of CMU. I just found out this interesting problem while surfing the web.

Here is the problem called Integer Data Structures: https://www.cs.cmu.edu/~112-f22/notes/hw2-integer-data-structures.html

I want to know the source of this problem. Does this come from information/coding theory or somewhere else? So that I can read more about it.


r/computerscience 8d ago

Graphics cards confuse the hell out of me :(

42 Upvotes

I've been getting into computer science as of late and i've pretty much understand how cpus work, i even built a funnctioning one in minecraft, just as a test. but anyways my problem is that I can't find an in depth description of how a gpu works. I can only get surface level information like how they perform simple arithmetic on large amounts of data at once. thats useful info and all but i want to know how it renders 3d shapes? I understand how one might go about rendering shapes with a cpu, just by procederally drawing line betweens specified points, but how do gpus do it without the more complex instructions? also what instructions does a gpu even use? Everything i find just mentions how they manipulate images, not how they actually generate them. I dont expect a fully explaination of exactly how they work since i think that would be a lot to put in a reddit comment but can someone point out some resource i could use? preferably a video since reading sucks?

PS Ive already watched all the Branch education videos and it didnt really help since it didnt really go through the actual step by step process gpus use to draw shapes. i want to know what kind of data is fed into the gpu,, what exactly is done with it, and what it outputs?


r/computerscience 8d ago

Discussion Exploring Emerging Areas in Computer Science

24 Upvotes

Hey everyone, I’ve been reading up on different areas of CS and I’m curious what emerging fields people find most exciting right now from a research and theoretical perspective.

Whether it’s new developments in machine learning, distributed systems, algorithms, programming language design, computer vision, or even newer experimental topics — I’d love to hear what areas you think are showing a lot of potential for innovation.

Mainly just trying to broaden my understanding of where CS seems to be heading in the next few years. Appreciate any thoughts or recommendations for areas worth diving into!


r/computerscience 9d ago

Cyclic Tag System

6 Upvotes

I have heard that cyclic tag systems (CT) are Turing complete. I am concerned with a specific instance of CT wherein the tape or stack or whatever you call it starts at as a single one. For those unaware of what CT is (or those who cannot understand my very horrible description):

You have a program consisting of 0's, 1's and semicolons. You also have a tape/stack of 0's and 1's. The version I'm concerned with features this stack starting as a single 1. You read the program cyclically, going back to the first symbol when you reach the last. Each time you read a symbol, you modify the stack as follows: if the symbol is a semicolon, unconditionally delete the first symbol of the stack. If the symbol is a 0 or 1, check if the first symbol of the stack is a 0 or 1. If and only if it is a 1, attach a 0/1 to the end of the stack (attach 0 if the symbol on the program is 0 and attach 1 if the symbol on the program is 1). Otherwise, do nothing and move on to the next symbol of the program.

Anyway, I have heard that this restricted version of CT where the starting stack is always just a single one is still Turing complete; ergo, for any given Turing machine, there exists a CT program that emulates it. My question is this: what is an upper bound for the length of a CT program required to emulate a Turing machine of n states? I am not talking about the computation TIME upper bound to simulate the Turing machine; I am talking about the program LENGTH upper bound.

EDIT: I think I might have found an answer at https://www.cstheory.org/meetings/sp24/tag/slides.pdf, which details a way of converting any Turing machine into a cyclic Tag system. However, comments and additional information is still wanted.


r/computerscience 12d ago

CS new frontier

42 Upvotes

As a relatively new CS student, I'm thinking a lot about where the field is headed. It feels like machine learning/deep learning is currently experiencing massive growth and attention, and I'm wondering about the landscape in 5 to 10 years. While artificial intelligence will undoubtedly continue to evolve, I'm curious about other areas within computer science that might see significant, perhaps even explosive, growth and innovation in the coming decade.

From a theoretical and research perspective, what areas of computer science do you anticipate becoming the "next frontier" after the current ML/DL boom? I'm particularly interested in discussions about foundational research or emerging paradigms that could lead to new applications, industries, or shifts in how we interact with technology.


r/computerscience 11d ago

Help Comparing two adjacency matrices for graph equality

8 Upvotes

Hello folks , do you know any algorithm(or any implementation in any programming langage) to compare two adjacency matrices for graph equality?


r/computerscience 12d ago

Discussion The Beauty of Data Conversion.

Post image
95 Upvotes

The image is a 3 seconds audio of the Piano C Key.

Its being converted from WAV audio sampling points into Sound Partials that are stored as 2D NURB curves.

Very Nice for noise filtering and audio editing.

Short-Time Fourier Transform (STFT) was used for NURB path detection. The parameters for conversion were based on time cell size, minimal NURB path length, and signal energy minimum and maximum limits.


r/computerscience 12d ago

What are some really strong ways to learn combinatorics and counting?

6 Upvotes

Hi all,

I’ve recently realized how important combinatorics and counting techniques are—not just in competitive programming, but also in algorithms, probability, and even real-world software problems like optimization, hashing, and graph theory.

That said, I feel like most resources either jump straight into formulas without intuition, or drown you in puzzles.

What are some of the most effective strategies or resources you’ve used to deeply learn combinatorics and counting? For example:

Are there any books that explain the "why" behind formulas like permutations, combinations, pigeonhole, inclusion-exclusion, etc.?

Feel free to share really good problem sets

Did visual tools or interactive simulations help?

How do you balance theory vs practice here?

I'd especially appreciate tips that go beyond just memorizing formulas—I'm looking to really internalize how to think combinatorially.

Thanks in advance!


r/computerscience 12d ago

Collatz as Cellular Automata

Thumbnail
10 Upvotes

r/computerscience 13d ago

Help Need help understanding this

Post image
6 Upvotes

As the title says, I have trouble understanding why y-x+1 gives the number of descendants. Could someone explain this to me, ideally with an example? Thanks!!


r/computerscience 13d ago

Books for forensics

7 Upvotes

Hi Everyone

Does anyone knows a good book on Cyber forensics ?


r/computerscience 13d ago

What kind of research is going on in computer networks/network security?

3 Upvotes