Math for Programmers
by Paul Orland
The book of the week from 15 Feb 2021 to 19 Feb 2021
To score a job in data science, machine learning, computer graphics, and cryptography, you need to bring strong math skills to the party. Math for Programmers teaches the math you need for these hot careers, concentrating on what you need to know as a developer. Filled with lots of helpful graphics and more than 200 exercises and mini-projects, this book unlocks the door to interesting–and lucrative!–careers in some of today’s hottest programming fields.
Where to buy this book:
Questions and Answers
Wendy Mak
Hi Paul, my questions are:
Are there topics that you really want to cover in the book, but decided against in the end?
Paul Orland
There are a lot of topics I wish I could have included! Originally, I wanted to write about abstract algebra and functional programming. This is a bit more advanced, and so I decided with my publisher to focus on topics that were more accessible and interesting to a broader audience. Also, there’s not much on probability or statistics in this one – I hope to write another book on “statistics for programmers” soon.
Wendy Mak
Most of the topics in the list of contents seems more or less fairly general, except the chapter on gravity simulation– what made you add that particular topic?
Paul Orland
I tried to have at least one application in each chapter – the new math in that chapter is the concept of partial derivatives and the gradient. I think that force fields are a useful example to think of when learning about the gradient, which is why I picked it!
Wendy Mak
In the intro, you mentioned that you wrote it partly with the idea of ‘scientific software engineer’ in mind– it’s not a job description I see very often, outside of universities, where do these jobs come up? And what sort of skills do they usually look for? (ie do they assume you’ll have a background in the science as well?)
Paul Orland
Job titles vary, but some software engineer job postings require more math than others. I would say there are a lot of data science and quantitative finance jobs out there that require math, as well as software eng. jobs at high-tech companies (e.g. aerospace, biotech, hardware)
Evren Unal
Hi Poul,
The book’s cover is interesting.
But particularly the lady’s hand sign is prominent.
İs there a meaning in it or is it aimless?
Paul Orland
I wish I could tell you! My publisher (Manning) has a tradition of putting people in old-fashioned dress on their covers. This woman is wearing traditional dress from Finland from a few hundred years ago. I picked this one from three options, because I like her smirk! No idea what she is doing with her hand… but it almost looks to me like she’s gesturing at a blackboard
A McCauley
Hey Paul Orland , great book 👏🏼, this is definitely something I want to expand my understanding in some more.
I like that you’ve added exercises at the end of the topics; How did you get your ideas for the exercises you listed? Are they short questions to test understanding or small practical project styled etc?
Paul Orland
Glad you’re enjoying it so far! Good question. I’ve designed most of the exercises to be doable in 1-15 minutes
Paul Orland
They are supposed to be relatively quick checks of your understanding, to help you make sure you are keeping up with the material. Then, if one takes longer than a few minutes to figure out, it’s a good sign you should reread the chapter and think through the topic again.
Paul Orland
Anything more involved is marked as a “mini project”, indicating that it will take what you’ve learned and go a bit beyond the material introduced in the text.
Paul Orland
The way I come up with these is roughly: I think of some small example I could work through in a paragraph, and rather than explaining it, I try to give a carefully worded hint so you can basically connect the dots and figure it out yourself.
Vladimir Finkelshtein
Will there be a book called “Programming for mathematicians”? Asking for a friend.
Paul Orland
Maybe not with that title, but yes 🙂 Later this year I’m releasing a book relating abstract math and functional programming, and I think it is the right way for mathematicians to learn programming!
Poornima
Hi Paul Orland, glad to converse with you. Are you covering the mathematical fundamentals needed for computer vision ( I saw you were covering 3D graphics) such as various image transforms. Thanks.
Paul Orland
Hmm… I don’t know much about computer vision in general, so I can’t say for sure. I bet many of the topics in the book are used in computer vision. And, the last chapter is on image recognition using neural networks!
Poornima
That sounds great !🙂 Will give it a try and thank you for answering.
Matthew Emerick
Hello, Paul Orland! Thanks for doing this. My question(s): if you were going to expand your book, what would you add? What would you expand? What would you cut?
Paul Orland
I would definitely add some content on probability and statistics! I think it is increasingly important math for applications, and I’m sad it didn’t fit in this book. It’s also not my area of expertise. I think most of the big topics in the current book are good, but if I could do it again, I might trim down some of the les useful sections and subsections (not thinking of any off the top of my head, but there are surely some!)
Matthew Emerick
I agree that statistics and probability are very important. I also think that too many rely on them without full understanding. Do you think machine learning engineers, data scientists, and AI practitioners in general need to focus more on math?
Paul Orland
I suppose most engineers, data scientists, etc. know the math they “need” to do their jobs, but I suspect there is room for most people to think more deeply about the math they use. In my book, I’ve tried to emphasize the philosophy behind each topic, as in why it is the way it is, and how it fits into the grand scheme of things. This perspective, I think, is similar to a software engineer taking the time to understand how the compiler of their favorite language works. It gives a deeper perspective on how your tools work.
Doink
Hi Paul Orland do you plan to have a separate book on the lines of Maths for Data Scientists? Slightly more deeper and covering topics on numerical optimization,infinite series etc but not in the typical classical math textbook format.
Paul Orland
I don’t, but I am trying to convince one of my friends to write such a book! One of the challenges is including enough relevant example to make the book interesting. Will keep you posted!
Alexey Grigorev
Hi Paul!
Which learning plan would you recommend for software engineers who want to get into machine learning? What kind of math do they need to focus on - to make the learning most effective? And would your book be enough to cover the math fundamentals?
Paul Orland
Alexey Grigorev good question! I think Math for Programmers has a lot of math necessary for ML – namely linear algebra and multivariable calculus. The main topic not included in my book which is necessary for ML is probability. I suggest buying my book (obviously 😇 ) and taking Andrew Ng’s free coursera course on ML . If you work thorough the exercises in my book and this ML course, you should be prepped to do a deeper dive in any area of ML you want
Alexey Grigorev
Thanks! Andrew Ng’s course is awesome!
In your opinion, how a programmer should approach learning probability and stats? You mentioned you might write a sequel for your current book - I guess you already thought about this question
Paul Orland
I would say, try to learn whatever you want to do in ML or elsewhere, and read about anything unfamiliar. A lot of what I wrote about in Math for Programmers is stuff I learned for some application (e.g. Physics). having a goal/application in mind is a great way to motivate yourself to learn something, and focus on the most important topics.
Paul Orland
I wish I had a good enough 50,000ft view of probability to give more specific advice. This is part of why I’d like to research and put together a book on it.
Alexey Grigorev
Makes sense, thank you!
Vladimir Finkelshtein
What’s your favorite example, that shows importance of understanding math behind ML? Most of the examples I can think of don’t really justify a deep dive…
Paul Orland
I am kind of a novice, but I think gradient descent is very important!
Paul Orland
It is good to think of learning as an optimization problem, and gradient descent is one optimization algorithm you can use pretty widely
Vladimir Finkelshtein
I agree that it is important to learn what an optimization problem is and to frame machine learning as one. But it seems like the focus of machine learning is on what to optimize, rather than how.
To me gradient descend feels kind of “academic”. I imagine that not many ever write their own optimizer for machine learning. Probably for most people reading two nontechnical paragraphs explaining the intuition behind gradient descent will be more than enough.
Paul Orland
Yeah, I guess it’s a matter of opinion. I think deriving the backpropagation formulas for a MLP (using gradient descent) and implementing them is a worthwhile exercise, because it demystifies machine learning. I totally agree that ML in practice is more about deciding what to optimize.
Doink
Paul Orland How is this book different from Think Stats?
Paul Orland
I don’t know that book, but presumably the difference is that it covers stats while my book does not 🙂
Ben Wilson
Paul Orland I have absolutely and thoroughly enjoyed reading your book. Not only are the progressions throughout the examples highly engaging and approachable to a wide audience, but the accompanying explanations are very clever and entertaining. I’m curious to know if you’re planning on ever applying your teaching style and examples to the world of geospatial processing (2D and 3D) algorithms? I think you’d do a rather great job at making a topic such as that approachable to the rapidly growing community of practitioners that are entering that specific space.
Paul Orland
Glad you liked it! I don’t know much about geospatial algorithms, but sounds like it could be a cool application for 2D and 3D geometry. Can you recommend any good references for me to get started?
Wendy Mak
Ben Wilson do you mean projection algorithms? or stuff like spatial indexes, spatial search and so on?
Ben Wilson
great circles intersection, polygonal collision, distance measurements with z-components, et. al. I think that with your presentation style you could write an effective primer to basically GIS ( 🙂 ) http://wiki.gis.com/wiki/index.php/New_to_GIS#Related_links
Wendy Mak
nice :)) I used to do a lot of spatial stuff (postgis mainly but also a bit of python). Would be nice to have a deeper dive into some of the maths definitely
Alexey Grigorev
I know great developers who want to get into machine learning, but they are scared of math. The moment they see a formula, their mind goes blank.
What would you recommend them to do? How can they overcome this fear?
Alexey Grigorev
I think the fear comes from school/university when teachers just force math down our throat without really explaining why we should learn it
Roman G
this may help to manage fear
Evren Unal
Alexey Grigorev same problem goes for me
Roman G
It was the same for me, but if you take your time to break a complicated formula to parts and dig into each of them, then after a couple of iterations it won’t be that scary
Evren Unal
I usually learn difficult topics by finding good explanations
Paul Orland
Roman G I have found there is a delicate tradeoff between lowering inhibition and keeping ones mental faculties intact with the method you propose 🙂
Alexey Grigorev
This one? https://xkcd.com/323/
Paul Orland
I like this question because it is a problem I still have – sometimes I find myself looking at a page in a math textbook and thinking to myself this looks hopelessly complex.
Paul Orland
Alexey Grigorev yes exactly!
Paul Orland
I would say, start by writing down the formulas you do know or drawing diagrams (related to the topic), without looking at a book or other resources. That should show you where the holes in your understanding are. Then go back to the book and try to fill these holes as needed. Over time, you should get some more confidence!
Alexey Grigorev
Makes sense, thank you!
Paul Orland
I would say, start by writing down the formulas you do know or drawing diagrams (related to the topic), without looking at a book or other resources. That should show you where the holes in your understanding are. Then go back to the book and try to fill these holes as needed. Over time, you should get some more confidence!
Alexey Grigorev
Why knowing math is a good idea for programmers? Might it be useful for developers even if they don’t need it at work?
Ennio M.A.
I would say yes, I believe that algorithms are basically about breaking mathematical constructs into simple step by step processes or approximations, at school too much emphasis is given to paper math, I think more emphasis should be put into computational thinking in all engineering degrees not only computer science.
Paul Orland
A lot of ideas transfer directly from math to computer programming: logic, functions, sets, etc. I’m a strong believer that math skills help you think more rigorously about software (of any kind) that you build
Alexey Grigorev
Also I’m curious what you think about the way math is taught at schools and universities. Is there something you’d change?
Paul Orland
Yes, I would change some things! I think math classrooms should be flipped, meaning record lectures so students can consume the content at their own pace, independently. Then save class time for exploration and problem solving. I would also say that most people who take math in college are not going to become mathematicians, so there should be a greater emphasis on applied math and using technology to solve math problems (e.g. Python or even Excel)
Alexey Grigorev
Nice! How would you motivate students to watch the content at their own pace before the classes?
Alexey Grigorev
That’s a problem I also have when teaching adults =)
Paul Orland
Obviously some students are more self-motivated than others, but I think this would increase the quality of the learning experience and have most people more engaged overall.
Alexey Grigorev
Yes, makes sense! Thank you!
Join the Book of the Week Discussion
To take part in the book of the week event:
- Register in our Slack
- Join the
#book-of-the-weekchannel - Ask as many questions as you'd like
- The book authors answer questions from Monday till Thursday
- On Friday, the authors decide who wins free copies of their book
To see other books, check the book of the week page.