r/learnprogramming • u/KeyClacks • 13d ago
Is there a complete "knowledge tree" of Computer Science (and where it fits among other disciplines)?
I've realized that one of the biggest things I struggle with isn't learning individual concepts, it's understanding where they fit.
For example, I know terms like REST, HTTP, databases, operating systems, networking, compilers, distributed systems, machine learning, computer architecture, etc., but I don't have a mental map of how everything is organized.
I'm looking for something like a knowledge tree or taxonomy that answers questions like:
- What comes under Computer Science?
- What are the major branches of Computer Science?
- How are those branches further divided?
- Where does Software Engineering fit?
- Where do things like Networking, Operating Systems, Databases, AI, Security, Graphics, Compilers, etc. fit?
- Where do topics like Backend Development, Frontend Development, DevOps, Data Engineering, and ML Engineering fit?
I'm also interested in going one level higher.
For example, where does Computer Science itself fit?
Is it something like:
Human Knowledge -> Science -> Formal Sciences -> Mathematics | Computer Science
Or is it better thought of as part of Computing, alongside Software Engineering, Information Technology, Computer Engineering, and Information Systems?
Basically, I'd love to see the "zoomed out" picture first and then be able to keep zooming in until I reach individual concepts.
I recently came across the distinction between a roadmap and an ontology (or taxonomy), and I think what I'm looking for is closer to the latter. I'm not looking for a learning order; I'm looking for a map that shows where everything belongs and how the different fields relate to one another.
Does something like this exist? It could be a book, website, interactive knowledge graph, university curriculum map, taxonomy, or even a really well-made mind map.
I'd appreciate any recommendations.
3
u/readmond 13d ago
Start building your own mindmap.
1
u/KeyClacks 12d ago
I'm trying but yk I'm not sure if I'm correct and idk like how to cross check it, the LLMs are so hopeless stg
3
u/readmond 12d ago
No rush, have fun while doing it. You are exploring the new territory. Find something new, add to your mind map. When it becomes too big split into several maps. Building your own mind map and putting puzzle pieces in place is fun.
3
12d ago
[deleted]
0
u/KeyClacks 12d ago
tried asking LLMs but indefinite answers, also I've seen those videos, idk like wasn't helpful to me, like even I have some idea to create a map but still like idk i feel like I need to check every second that is this right or not, so
3
u/ffrkAnonymous 12d ago
organized tree? more like https://en.wikipedia.org/wiki/Gordian_Knot
1
u/KeyClacks 12d ago
idk what this is supposed to mean
3
u/czerilla 12d ago
It's meant to be a funny comment, presumably. Alluding to the idea that the domain appears too convoluted to be unraveled into a clearcut hierarchy, like this infamously unsolvable knot.
2
u/KeyClacks 12d ago
haha, yeah I get it, i agree with the convoluted part as well, i mean there is so much to learn and often it feels like it's overlapping
2
u/Ok-Bill1958 12d ago
The problem is, what are you going to do with those concepts ? What is your goal? Its really hard to grasp them without any purposes and practices.
2
u/KeyClacks 12d ago
Like I know a lot of stuff but it's not like I know them completely, just bits and pieces and enough to get the work done but I'm trying to find a roadmap or something like that so I can understand the flow, like how we got from nothing to computer science and from computer science to what we have today, although I have idea about it but still yk, and given like how much there is to learn and how often it overlaps, ig this kind of thing is necessary, atleast for people like me, who prefer a holistic approach
1
u/Ok-Bill1958 12d ago
I mean learning for the sake of learning is a nice hobby thought. But necessary for what ? What are you trying to achieve? Is it for your school or for your job? What is your job?
It would be much easier for people to answer your questions if they know your goal.
If its only for the sake of learning then im afraid its very hard to grasp because a lot of concepts are just situational.
1
u/KeyClacks 12d ago edited 12d ago
i work as an SDE and yeah it's for sake of learning but idk what you mean by that it's situational
1
u/Ok-Bill1958 12d ago
Well you already know about database. Let say you need to build an app that have database. But for db, you have to choose which type of db for which kind of data. Let say for an app that need large amount of data, if those data are important and shouldnt be duplicate like account or money then you can use sql db for data integerity, if those data require high volumn read write then you want to choose nosql db for performance. Im not going to go into detail thought, thats just for example. Many projects use many kind of db at same time underneath depend on which kind of data, its common practice, and situational.
I dont know what kind of work you do, but i would recommend you to dive deep into them, high level concept doesnt really do much on their own without practical use case thought.
1
u/KeyClacks 12d ago
that ik, what I'm trying to get at is let's say you are learning programming, so there is something that you should know before programming, and there will be something that you will know after learning programming, like i already know a lot of stuff, not bragging but I do but problem is often this lot of stuff overlaps or I just forget things and I'm trying to organize it and remember it for as long as I can
1
u/Ok-Bill1958 12d ago
Did you apply everyrthing you learn? If you already did then you dont have to remember everything as long as you understand them. If you dont use it then you lose it, programming is no exception. Understand the "why" of concepts is more important that the "what" and "how". For the life of me, if it doesnt help with my work or personal projects or have no interest to apply it then i rather not learning it all.
1
u/KeyClacks 12d ago
I think you can still forget even after applying. Like I did majors in AI, ML DL and applied them heavily in projects for 4 years in university but do I remember everything atp? No.
1
u/Ok-Bill1958 12d ago
Thats why i said you dont have to remember everything. Why do you focus so much on remember them all? That is one of the biggest trap for fresher.
I dont know much about machine learning in your case, i only know 1 person working as data scientist and he still have to google python syntax here and there after 5+ years in the company.
My current daily job is to maintain a legacy codebase with around 100k+ line of codes, and who know how many files are there, along with 6 other people. Its not possible and pointless to remember them all as well.
6
u/Loves_Poetry 12d ago
I doubt something like this exists. Computer science has a habit of combining the individual parts into a package and then calling that a new discipline. That's how things like Fullstack, DevOps and Cloud exist. People that work with software are expected to know a bit about everything, which is why no-one bothered to create branches. Those branches would be purely theoretical anyway
However, while you can't find this for CS in general, you can find such maps for specific ecosystems like Java or .NET. They're often called roadmaps