|Math for Programmers (Manning)|
Author: Paul Orland
Mathematics has suddenly become important in many branches of programming. There are good jobs for data scientists and for machine learning experts. If you are looking to upgrade your programming then math might be what you need to add.
There is an assumption that maths people are going to be good at programming, but there are lots of programmers who missed out on math because they encountered bad teachers or just had it drummed into them that they were no good at it. One of the problems is that math in its early stages is mostly arithmetic and it is often said that if you can't do arithmetic you can't do math - which is rubbish as there are pocket calculators and computers free you from the need to be good at arithmetic. To do math you need to understand ideas from geometry and know how to do algebra. It may all look like squiggles on the page, but there are some profound concepts behind it all and learning the concepts is the best way to understand the squiggles.
The book deals with the math you might need for 3D graphics,. machine learning and simulations.So nothing on stats and so little help if you are wanting to do data mining. All examples are in Python and if you don't speak Python the book isn't going to be of much use as its basic premise is that programming the math helps you understand. I don't really agree with this idea. Programming the math helps demystify it and makes it more real, but it often doesn't help you understand. Being able to create a program is proof that you do understand, but I'm not convinced it helps. What does help however are the very many illustrations throughout the book. Given the subject selections this makes sense.
The book starts with an intro that is essentially a pep talk to get you to overcome you fear of math. It also attempts to motivate you by explaining how lucrative math can be.
Part 1 is about vectors and graphics. This is probably the most intuitive subject because you can draw diagrams. It runs to short of 200 pages and covers 2D to 3D graphics complete with matrices. The approach isn't very abstract and this might be a problem for some. Abstract can be initially difficult, but because it sums everything up concisely it is easier to remember. It mostly concentrates on transformations, but it also covers solving linear equations. Nothing about eignvalues or eigenvectors so you wont be able to follow PCA and other similar machine learning. data processing technique.
Part 2 is about calculus and it is very basic and very much aimed at simulation of systems with acceleration and gravity. Oddly, to my mind, is a chapter on symbolic differentiation using computer algebra packages. The book goes into detail about how to implement symbolic math using Python - interesting but not really helpful if you are simply trying to understand the math. The section ends with a look at optimization - hill climbing and Fourier series. The Fourier section includes how to work with audio using Python which again is fun but I'm not sure its core to the purpose of the book. It is also in the calculus section because you need an integral to work out a Fourier transform but I think this would be better in the vector section as what we have is an infinite dimensional vector space.
The final part is on machine learning and it is a fairly traditional approach to introducing the ideas that you would find in almost any introduction to the subject. The math explained comes down to least squares and gradient descent optimization. Along the way we meet sub-spaced, logistic regression and neural networks.
Overall this is a good book of its type. It is clearly written and has lots of exercises and projects to keep you busy. It might be that it has too many such things for some readers as I have no idea how long it would take to actually work you way thought the book but it wouldn't be quick. This is not a quick introduction to the mathematics typically needed in graphics, simulation and particularly machine learning. If you really wanted to master any of these subject areas then you would find the book short on details. For example in the graphics section there is nothing on homogeneous coordinates (theory) and nothing on collision detection (practice).. This is OK for a book that is about the basic math, but you need to know that it doesn't go very far into any of the practical topics discussed. This is not a book that majors on concepts. It prefers to give concrete examples and then point out the concept involved. If this is the way you like to learn then this is a book you will get on with, but be warned it is a lot of pages and a lot of work. At the end of the day you will still only have made a start on learning math, but perhaps this is all you can really wish for.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.
|Last Updated ( Wednesday, 13 October 2021 )|