On Learning Mathematics for Computer Science
People can be skilled in the applied arts while being ignorant in the science on which those arts are built – M. Rouse Ball
In my shouting to the void on this blog I’ve mainly been writing about infra, development, and the intersection of the two. However, for the last year, I’ve been bootstrapping my Mathematical knowledge for reading Concrete Mathematics; learning about topics as I encounter them to fully understand what the book is conveying. I want to understand the mathematical underpinnings of computer science so I can write simple, efficient, and maintainable code. Not only that, but what I’ve found over the last year, is that learning mathematics has cultivated a clearer way of thinking about computing problems.
While working through the Algorithms Part 1 Coursera course there were some minor forays into Maths, e.g. telescoping series. While my mathematical understanding was imperfect I could see the representation of the mathematical function in the code; which was magic. This has motivated me to learn more about the mathematics underpinning of computer science.
On a personal level understanding the underlying CS mathematics will (and is starting to although early days) give me a level of confidence in understanding and designing algorithms that I’d not get reading purely coding books. No doubt it’ll improve my programming interview skills far more than just reading something like Cracking the Coding Interview.
Finally, I’ve been enjoying this mathematical adventure much more than I expected. The more effort I put in (as much as one can with a toddler at home haha) the more I enjoy it. I suspect I’ll be doing mathematics for its own sake and branching out from CS topics.
To sum up my reasons in point form (and add some new ones):
- Because I love it and gain much satisfaction from finally understanding something new and see how it applies to my world. It is exciting
- In order to cultivate a more methodical and simpler attitude to problem solving and building tools
- Understand programming algorithms at a deeper level and see why they work the way they do. As well as how to make my own algorithms better/simpler
- Eventually apply mathematics to learning about astronomy/astrophysics and gain a more intuitive understanding to some topics
- As an insurance policy to be able to move to a different career path if I need or want to