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 • • 20h ago

General A good example of iteration vs recursion

8 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 • • 2d ago

General Implementation of Andreas Bjorklund's algorithm for determining hamiltonicity

Thumbnail
9 Upvotes

r/computerscience • • 2d ago

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

Post image
24 Upvotes

r/computerscience • • 4d ago

Discussion In 2014, I programmed and generated one of the earliest artworks generated with A.I., here was the result:

Post image
48 Upvotes

r/computerscience • • 4d ago

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

Thumbnail news.mit.edu
366 Upvotes

r/computerscience • • 4d ago

Advice Advices for someone looking to get into Language Technology?

7 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 • • 4d 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 • • 5d 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 • • 5d ago

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

5 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 • • 6d 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 • • 6d ago

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

Thumbnail
0 Upvotes

r/computerscience • • 9d 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 • • 12d ago

General procedural programming, object oriented programming and functional programming

23 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 • • 13d ago

General Who is the Brian Cox of computer science?

5 Upvotes

r/computerscience • • 14d ago

Advice “Modern” Intro Books

19 Upvotes

I am currently reading Complexity: A Guided Tour by Melanie Mitchell and since it was published in 2009, I am wondering if there are more “modern”/“up-to-date” intro books.


r/computerscience • • 15d ago

How do hashsets/maps have O(1) time complexity?

192 Upvotes

Hi this might be a dumb question, and i've tried looking it up but don't quite understand it. how is it different from an array that allows it to find items so quickly? I don't get how hashes just find items immediately without needing to go through anything. Does it memorize things very differently compared to arrays?? thank you!


r/computerscience • • 17d ago

Advice Recently accepted into a highly published research group…and I have no clue what I’m doing

30 Upvotes

Basically I’m a sophomore and I was just accepted into a research group centered around Data Science and Machine Learning…but I have no clue about machine learning at all, and I felt a little lost reading one of their simplest papers.

I’m terrified that I’m going to fail, and this professor is going to regret accepting me. I’m also doing a lot of other things so I’m scared of the added stress.

So, kind redditors, is this feeling normal, or am I completely screwed?


r/computerscience • • 17d ago

Discussion Are we Turing complete?

66 Upvotes

OK. So I’ve been looking at Conway’s game of life a little bit. And I was fascinated by the idea that it could be used to recursively imitate itself (look up OCTA’s supercell)

I was told that this is Turing complete, and I had to look up what that meant.

And it seems to mean that, in simple words, it’s a computer or system of computer rules that can model another computer.

Now, given that humans came up with all of these computers in the first place, and all of the rules, does this mean that we are Turing complete?


r/computerscience • • 18d ago

Article Leonard Kleinrock- Epic Name, Epic Career

6 Upvotes

I mean, his name is fabulous, if I do say so myself.

Anyways, last week I wrote about the ARPANET and briefly mentioned some key people that worked on creating it. One of those individuals was Mr. Leonard Kleinrock (born 1934).

Kleinrock is anelectrical engineer and computer scientist who was a key figure in launching communication between computers. Previously, if two computers wanted to communicate over a long distance (think between New York and LA) they would would have to set up a dedicated connection and keep it in reserve untill the entire message arrive. Kind of like a phone call.

However, Kleinrock worked on breaking the message up, into manageable packets that could be sent on the network and shared the communication infrastructure with everyone else.

So instead of one individual dedication communication line sending and receiving the message "Hello how are you", we have a shared communication network sending and receiving the message "hello" "how" "are" "you". This concept was called packet switching. Kleinrock wrote his first paper on packet switching in 1961, at 26 years old.

Something I found really interesting was after developing the packet method, he continued to research on how using packets could affect the networks and somputer systems. If too many packets arrive at the same time, they have to wait. Like, if you have one checkout and there are 30 packets customers, they slow down and wait in line to checkout. What happens with 200 packets customers are trying to get through one checkout? Utter chaos. Kleinrock worked on issues like these and developed mathematical ways of predicting and analyzing those delays.

Thus questions like "How much traffic can this network handle?", "How long will packets have to wait?", "Where will congestion occur?", "How should we design the network?", etc. , now had tools to help come to an answer.

Funny enough, after everything was applied and they went to send the first message, the system crashed lol. They tried to send LOGIN, got the packet for LO to go through, but before GIN could make it, everything crashed. Meaning the first ever message sent on the ARPANET was just "LO".

After the ARPANET, Kleinrock continued to work and research, and lets not forget he was also a professor at UCLA, so he oversaw tons of PhD students as well. This man wrote more than 250 papers and six books. Holy Moly. Um, I know we don't like using A.I., but hear me out, after reading a few different pieces on him, I couldn't keep track of the awards he had recieved. I hopped on and asked it to make me a list of his achievements and their dates, which I will share with you. The man was busy...

1966 UCLA Outstanding Faculty Member

1967 UCLA Distinguished Teaching Award

1971 Guggenheim Fellowship

1975 IEEE Communications Society Leonard G. Abraham Prize Paper Award

1976 ORSA Lanchester Prize

1978 ICC Prize Paper Award

1982 L. M. Ericsson Prize

1982 Computer Design Hall of Fame

1982 CCNY Townsend Harris Medal

1986 Marconi International Fellowship Award

1986 UCLA Distinguished Teaching Award

1990 ACM SIGCOMM Award

1994 UCLA Faculty Research Lecturer

1996 IEEE Computer Society Harry H. Goode Memorial Award

1996 ACM/Sigma Xi Monie A. Ferst Award

1999 INFORMS President's Award

2000 IEEE Internet Award

2001 National Academy of Engineering Charles Stark Draper Prize

2001 Okawa Prize

2005 NEC C&C Prize

2006 ACM Test of Time Award

2007 National Medal of Science

2010 Dan David Prize

2011 Ubicomp Best Paper Award

2012 IEEE Alexander Graham Bell Medal

2012 Internet Hall of Fame — inaugural class

2012 Best Tutorial Paper Award — five-year period

2014 ACM SIGMOBILE Outstanding Contribution Award

2015 BBVA Foundation Frontiers of Knowledge Award

2016 SIGMOBILE Inaugural Test of Time Award

2018 CCNY President's Leadership Award

2019 Key to the City of Los Angeles

2019 National Academy of Inventors Fellow

2020 UCLA Medal

2022 6G Pioneer Award

2024 IEEE Computer Society Computer Pioneer Award

2024 Elected to the National Academy of Sciences

Anyways, I'll end it here. Absolutely fascinating life. He's still alive and recently gave an interview with UCLA (March 26 )who asked his thought on launching the internet AND his opinions on A.I. Interview is on You tube if yall want to go find it and listen! Youll have to search it yourself because i'm pretty sure links aren't allowed in the sub. it's called "meet the man who invented the internet" by L.A. in a minute.


r/computerscience • • 18d ago

Educational Password Cracking Game?

17 Upvotes

Hello fellow computer scientists.

I'm teaching a class of 11 - 12 year old pupils a bit of basic password security. I want to play a game with them and have them each come up with passwords, while having a program test and break those passwords in real time.

The idea is to turn it into a bit of a game, and give them a practical demonstration of how various password security measures -- increased length and variety of input characters -- results in safer passwords.

Does anyone know of any such resources that safe for use for educational purposes? I could probably knock something up over the weekend but I'd rather spend my time doing something more relaxing.


r/computerscience • • 20d ago

Advice I have a question about file compression

69 Upvotes

Why can't I take every single bit in my file and take that number and divide it by two, then when I want the file back I take the same number and multiply it by two to decompression it

edit: thank you everyone for answering I really appreciate it I was under the impression that I could just take the bits like 1s and 0s and make them an integer then divide that integer repeatedly and when I want it uncompressed just multiple the number till I get the original again eg 1010 to 55 then send 55 as text to another machine and to X2 and get 1010 back, and if it was an odd number eg 1011 I'd get either 56 or 55 but if divided by 2 only the last digits gonna change when rounding so you change the last digit to a 1 or zero and one of them will be the proper file


r/computerscience • • 20d ago

How to do research on the side?

Thumbnail
2 Upvotes

r/computerscience • • 20d ago

Where can I get a digital copy of Computer Systems: A Programmer's Perspective (3rd Edition, US Edition)?

9 Upvotes

I'm looking for a legit digital copy (PDF/eBook) of Computer Systems: A Programmer's Perspective, 3rd Edition by Bryant and O'Hallaron.

Specifically, I'm trying to find the US edition, not the Global Edition. I've repeatedly seen comments and recommendations saying to avoid the Global Edition, but most of those discussions are fairly old and don't always explain the differences in detail.

So far I've checked:

  • Pearson
  • Amazon Kindle
  • Google Books
  • VitalSource

but I can only seem to find physical copies or Global Edition versions.

2 questions:

  1. Does a legitimate digital version of the US edition actually exist? If so, where can it be purchased?
  2. For anyone who has used both versions, is the advice to avoid the Global Edition still valid for the 3rd Edition? Are there significant content differences, or are the differences mostly limited to exercises, chapter ordering, page numbers, pricing, etc.?

My goal is to use the book for self-study (systems programming, computer architecture, operating systems, networking, and interview preparation), so I'm trying to determine whether it's worth continuing the search for the US edition or if the Global Edition is effectively equivalent for those purposes.

Thanks!


r/computerscience • • 21d ago

Discussion Why is there fear that quantum computers could break cryptography?

51 Upvotes

Don’t quantum computers require specialised super cooling that only exists in a few places around the world? How could some rogue hacker get a hold of that in the first place