
Ask HN: How does one develop abstract thinking for math and computer science? - equilibrium
I&#x27;m working through introductory CS and Discrete Mathematics courses on my own and I&#x27;ve come to notice that I have difficulty thinking abstractly. Any words of advice on how to develop my abstract thinking abilities?
======
PetrG
As a profesional mathematician I can say the following: Always start thinking
from an example - first take the most simple one that you can come up with,
then gradually increase the complexity and include all the possible unusual,
weird, extreme, ... cases to really understand why the abstraction is
formulated the way it is.

No mathematician ever came up with an abstract theory from the top of their
head - they also started from examples and were gradually increasing
abstraction only when they understood the matter on a certain level and needed
to express this understanding in a simple abstract language in order to move
on to the next level of complexity...

It takes quite a lot of time to learn abstract mathematics this way, but it is
the only way when you really want to understand what is going on.. But it's
normal, mathematical texts are just extremely "dense" \- you are not supposed
to read them in the same way (and speed) as say history or biology books. So
take your time , read every sentence and every formula, read it multiple times
if needed, and always have one or more examples in your mind that on which you
visualize (in your mind or on a piece of paper) every single bit of the
abstract theory you read. It is slower than just reading, but with experience
you will be able to it faster and faster until it will turn into a process
that automatically runs in the background of your mind anytime you read a
mathematical text..

Good luck!

~~~
johnsonjo
This comment is mainly for the OP but I really enjoyed your reply. I’m
currently reading A Programmer’s Introduction to Mathematics by Jeremy Khun
which is absolutely phenomenal so far. But he gives the same advice as above.
He states that as soon as you see a theorem or problem in math you need to
instantly start writing down examples. Write down examples and then see that
they fit the rule.

I found when I took Discrete back in University that advice as very helpful (I
got the advice to split up large complex problems into their smallest and
simplest cases from a TA at the time.) in proving things you often work
yourself up from simple examples to more complex examples generally, but often
if you can prove by induction you need only the simplest case (base case) and
the abstract case (induction step from n to n+1). Sometimes these abstract
cases are hard to spot and they definitely take time, but as you learn more of
them over time you’ll find that you can do them a lot easier. My Discrete Math
teacher said to learn something in mathematics you have to basically already
know it. This was just to say with math there is no metaphorical “royal roads”
[1] (short cuts) in mathematics and that things come step by step. You’ll
eventually get enough tools in your tool belt to handle abstract thought
better and better.

[1]:
[https://en.m.wikipedia.org/wiki/Royal_Road](https://en.m.wikipedia.org/wiki/Royal_Road)

------
brudgers
Practice. Hard subjects are hard. But there's no deadline. No test in six
weeks. You've got years and years to work on it. Good luck.

~~~
equilibrium
Thanks, yeah for sure no deadlines is a good thing. Maybe too much of a good
thing.

------
vonwoodson
Many very successful mathematicians “only had a few tricks up their sleeves”
when they developed their life’s work. They reused these “tricks” over and
over. Don’t feel like you have to know everything. I’ve never been more
satisfied (and validated) when I have achieve a great solution to a problem,
only to find out that I’ve re-discovered a theorem. You’d think this would be
a waste of time, but actually it leads to a sudden explosion of knowledge and
gives insight into the edge cases you wouldn’t have thought of without a
lifetime of effort.

------
nanonan
Research inductive reasoning. But beware, ideologies gained from abstraction
are seductive in their simplicity and can utterly fail to handle complexities
of real life. Super Thinking, by Gabriel Weinberg and Lauren McCann is a
fantastic read on using abstractions as mental models.

------
codeslave5
Look up:

The Structure and Interpretation of Computer Programs

It’s a classic text on computer science that starts from basics and goes into
functional programming

~~~
equilibrium
I'm glad I got this response. This is precisely what the programming course I
am working through. CS61A offered by Berkeley. It's in Python though.

------
makstaks
I find drawing abstract ideas helps make them concrete. It's slow at first,
but with repetition it becomes easier.

------
neuroticfish
The only way to learn is to practice. Use practice problem sets in textbooks.

