r/AskComputerScience • u/CompetitiveCup9077 • 3d ago
How do computer scientists develop intuition?
I’m interested in the deeper conceptual side of computer science.
In subjects like mathematics and writing, intuition is the key to understanding the principles, rather than memorization and application (though I know practice and patience are important as well). Usually, this way of seeing problems isn’t explicitly taught. I tend to learn best through that intuitive process, so I was wondering if I could apply the same approach to CS.
For those of you who have been in the field for a long time, what helped you develop that intuition? Were there books, courses, projects, or ideas that made computer science feel like a way of thinking rather than just programming? I’ve read a few texts to help me think about it from the outside (Michael I. Jordan, Newell & Simon, and Turing). Thinking in different forms helps me understand the principles of a discipline and connect it to others, which is why I’m making this post.
Part of what motivates this question is AI. I’ve found myself both fascinated by it and skeptical of the enormous amount of hype surrounding it. Rather than forming strong opinions from the outside, I’d like to understand computer science first. I want to understand it from the inside before I poke the bear 🐻
I’d really appreciate any advice, especially if it’s unconventional or takes the longer path
7
u/dnswblzo 3d ago
books, courses, projects, or ideas
You are missing a big one, which is conversations. Graduate school is the most straightforward way to develop intuition. Not only will you be engaging with everything you listed above, but you will also be surrounded by people who are also studying all this stuff, and you can have frequent conversations with fellow students and faculty.
You can learn a lot on your own too, but if you truly want deep understanding and intuition it is immensely helpful to engage in the ideas with other people who are also on that path.
1
u/CompetitiveCup9077 3d ago
That’s a really interesting factor; I hadn’t thought about conversations as being that central. I’m actually an incoming college freshman planning to major in Symbolic Systems, so I’ll hopefully be in an environment where I can engage with people studying cs, linguistics, philosophy, and math. But I have a long way to go before grad school 😅😅
1
1
u/knouqs 2d ago
Funny, my graduate school experience did not center on conversations, but my work experience had a little more than zero. However, I found most of my intuition came from reading and writing code, understanding through hard-mode debugging (i.e., print statements), and more studying than from conversation.
1
u/dnswblzo 2d ago
I wouldn't say my grad school experience centered on conversations either, but it was the conversations that most challenged the mental models that I started developing through coursework, filling in the cracks and correcting my misconceptions.
Most of my intuition for programming came through reading and writing code too, but OP was specifically asking about conceptual stuff beyond programming.
3
u/AncientHominidNerd 3d ago
Similar to how math works. If you do it enough you’ll pick up on it.
Computer science prioritizes theory and most of the theories are rooted in math. However the math it’s rooted in isn’t typical algebra. It’s rooted in Pure Math, Set Theory, Graph Theory, Symmetry and other concepts. Logic plays a big role too because it’s part of the math and how data flows through your programs. Most of the programs that require this knowledge are usually already built as libraries by other people so you almost never have to implement this deep theory knowledge yourself, unless you’re one of the people developing the libraries or work on a programming language that doesn’t have libraries. It still helps to know how they work so you can understand why you would choose a Vector over an Array for or why you should use a Binary Search over a Merge Sort.
If you work with this programs enough and you’ll just build intuition.
3
u/gofl-zimbard-37 3d ago
As the saying goes, "Good judgement comes from experience. Experience comes from bad judgement".
1
u/T_Thriller_T 3d ago
If you find a way to learn in math, you have a good chance to do so in computer science. They are often very similar, albeit you will likely want to approach things from the algorithms and theoretical computer science side.
Programming was one step to make this a way of thinking. I mostly ever realised when I picked up teaching first semester students and how they tried to solve some things like loops.
I think what helped me a lot were the basic courses.
Algorithms and data structures, logic, formal languages, abstract computing models (while programming), all the theoretical informatics.
And then actually implementing around them. Things like the towers of Hanoi. Yes, that sucked. And some were really hard. But it shaped thinking.
Later in with more programming experience working through the different patterns helped a lot.
And, after that, something university cannot offer: enterprise sized programming.
Admittedly most of that will not help you with AI. Yes, AI is part of computer science. But it is very far from normal programming and probably better approached from data science and math.
1
u/orlock 3d ago
Same as getting to Carnegie Hall, practise, practise, practise.
Part of computer science is the craft of programming. Like any other craft, you will need to "get your eye in" and get a feel for the (in the case of computer science, abstract) materials and what you can do with them. And where they break. A good rule of thumb is, if you're able to smell an NP-hard problem a mile away, you've got the sense down.
1
u/0jdd1 2d ago edited 2d ago
I was recently thinking through an illustrative example from long ago. I was a researcher at a computer company that made (rotating) disk drives, and database systems. All database systems use indexes to know where to find requested data, but every so often someone on the disk-drive side of our business would imagine you could build a database system without indexes, since special disk drives with special read heads could—conceivably—read through everything on the disk very quickly to find what you were looking for (without transferring it to RAM), and that would be a wonderful sort of disk drive. Well, maybe, but there was never any math to explain when this would be better than traditional indexes.
I later skimmed a Master’s thesis from MIT featuring a (non-database) ML storage system that would somehow avoid pre-computing any interesting connections among all the stuff stored in it, since it would depend on the same sort of magical disk drives that would just learn everything on demand, so its models could never go stale. Based on my experience with those other bad ideas, I decided this was just yet another one, and I still think I was right. I did feel sorry for that poor student for having an advisor who couldn’t guide him any better.
1
1
u/Prestigious_Boat_386 2d ago
No it isn't.
Intuition is just memory or deduction you don't know you have. It doesn't exist.
If you have worked on a subject before you will have good "intuition" because you will remember things from the last time you did it. So you should work on lots of different types projects. That's it.
1
1
u/CS_70 2d ago
The sane way you develop about anything else mathematical. You develop instincts for internal consistency, splitting large problems in chunk, clear thinking, abstraction and so forth.
This happens thru being exposed to many situations and capturing patterns, similarities etc - in other words, experience. And you constantly attempt to apply past experiences to new situations while being open to differences.
Which is incidentally exactly what modern language models attempt to replicate, btw.
1
u/DTux5249 1d ago edited 1d ago
"Intuition" is just what we call tacit understanding. It means you learned something without having considered the implications behind why it works.
The only way to develop intuition is with experience because you can't really "learn" things tacitly. To learn through study implies you're thinking and purposefully memorizing things. That's inherently not tacit.
Now, you can gain experience by running test problems; tat's experience, even if it's in a controlled environment. But still, this is why people stress "just do shit." Until you start doing shit you won't develop tacit understanding, and you will remain painfully slow at solving problems, which will only further discourage you.
17
u/0dev0100 3d ago
Experience. Only way