Even though I consider myself one of the better programmers on my CompSci course, I am fascinated by people who are really good at math. I have to say whenever I had a math-type assignment or exam my approach has been very formulaic, i.e. if I encounter a problem that looks like A I must use method B and the result should look like C, or else I made a mistake. I only really know how to solve the problems I revised.
I'd really like to devote some time this summer to understand mathematical problems and their solutions better in order to dive deeper into fields of algorithmics and computational complexity.
Any tips?
A really great resource is a book called Competitive Programming 3 the book is great overall, and most importantly the Math chapter in it. The authors have really gathered a lot of Math-related problems and if you solve just a few you will definitely improve your Math and Problem Solving skills.
Being good at math is important for certain types of programming, like designing games and inventing complex algorithms. But for many other types of programming, such as developing business or web applications, you can become a successful programmer without having to study advanced math.
It sounds like you have decent math skills -- you understand the mechanics and maybe a little bit of the intuition behind what you've learned -- but that you're a little short on good problem-solving skills, especially since you say "I only really know how to solve the problems I [previously encountered]".
To fix that, I'd take a look at Project Euler. There is definitely no prescribed way to solve these problems, and they often require a synthesis of multiple knowledge areas to tackle each one successfully. You'll have your cake and eat it too -- becoming a better programmer/mathematician and a better general problem-solver, by seeing how to bring many things to bear against a particular problem. And you'll gain deeper insights into how things that seem completely different can actually fit together in a unified whole. (This is particularly true of many areas of math.)
Finally, kudos to you for your desire to become a better practitioner of your craft! If everyone displayed the same level of ambition, I can't help thinking that software in general would be a lot better.
Ultimately, you need to "spend some time in the saddle" and pick something of interest and then learn how to use it. I was interested in game programming math and picked up the New Riders book on the subject - don't remember the name at the moment. It had concepts and exercises and as I progressed through it, I felt that not only did I understand the concepts and theory but how to put it into practice.
You might take a look at some of these related questions. There are some good answers there. They might not all be applicable in your case, but some will be.
How can I learn the math necessary for working with computer vision?
How to learn mathematical notation?
https://stackoverflow.com/questions/651865/basic-math-book-for-a-programmer
Learning Applied Statistics with a focus on R
https://stackoverflow.com/questions/568899/user-friendly-math-textbooks
https://stackoverflow.com/questions/509488/recommendations-for-discrete-math-resources
https://stackoverflow.com/questions/488502/best-language-to-program-some-math-free-fast-easy-cool-etc
Learning game programming (part 2) (math)
Math Resources for C/C++ Programmers
https://stackoverflow.com/questions/420500/helpful-math-classes-for-programmers
Math, programming, and learning
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With