I'm working through introductory CS and Discrete Mathematics courses on my own and I've come to notice that I have difficulty thinking abstractly. Any words of advice on how to develop my abstract thinking abilities?
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.<p>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...<p>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..<p>Good luck!
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.
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.
Look up:<p>The Structure and Interpretation of Computer Programs<p>It’s a classic text on computer science that starts from basics and goes into functional programming