
A Software Engineer’s Adventures in Learning Mathematics - hecubus
https://medium.com/@warrenhenning/a-software-engineers-adventures-in-learning-mathematics-62140c59e5c
======
decasteve
This topic comes up every so often. I think my previous comment applies here
[1]:

I started a Math degree after 16 years of programming without any Math beyond
high school (the highest being high school calculus). Most of my work as a
software developer didn't require any "higher" Maths.

Once I began studying math, including Modern Algebra, Analysis, Graph Theory,
Category Theory, etc., I realized I understood many topics on an informal
level, in a non-rigorous sort of way, through programming. I had a good sense
of major algorithms and data structures as well as their running times. Once I
did have more math under my belt, things did become easier, and I started to
see connections and commonality between problems across different domains,
i.e. more than one way to skin a cat.

Part of the reason I began studying math, is that I felt it was my limiting
factor. The range of problems I could tackle as a programmer was limited by
math. It turns out this was partly true.

The biggest misconception is that in Math there is one "correct" answer. This
is almost never the case. Some of the most interesting solutions in Computer
Science come directly from Math topics that were once considered "abstract".
Likewise, some of the most interesting problems are solved through
approximation algorithms of seemingly intractable problems, often requiring a
bit of "hacking" and real world experience beyond what you'd get from a formal
education in Math or Computer Science.

[1]
[https://news.ycombinator.com/item?id=7104566](https://news.ycombinator.com/item?id=7104566)

~~~
jordanb
I'm in a similar boat as you. I went up through Calculus in school and hated
it. Around 5 years ago I developed a strong interest in learning relevant
applied math and have been enjoying it since.

Some things I'd add:

1) Math is fun! If you have the aptitude and disposition to enjoy writing
software you'll love working out math problems. They're little nuggets of
mental stimulation that you can work on with just some paper, a pencil, and
maybe a pocket calculator.

2) You're spot on about an experienced programmer already having an intuitive
but non-rigorous understanding of many concepts. It's mostly a matter of
learning to read and write comfortably using the notation, which is really
similar to learning the syntax and semantics of a big computer language with
poor reference material.

3) You really have to have basic math down. This means going and re-learning
stuff like applying FOIL to a binomial or dividing by a reciprocal.

4) Calculus and Linear Algebra are the father and mother of applied math.
You'll save yourself a ton of grief if you learn them first (and I mean
_really_ learn them, maybe you took a calculus class in college but can you
apply the Chain rule right now?). I'm learning Linear Algebra currently, which
is something I should have done years ago. Part of the problem with self-
teaching is getting things out of order.

~~~
tunesmith
I wish there were some sort of open-source prerequisite chain of what order to
learn any subjects in. That's the hardest part of self-learning. Elon Musk had
a reddit AMA recently where he was asked how he knows so much - he responded
that he thought everyone had the capability of learning more than they
thought, but that the key was to look at knowledge as a semantic tree. If you
learn things in the wrong order, they won't have anything to hang off of.

~~~
corysama
You could do a lot worse that going here
[https://www.khanacademy.org/math](https://www.khanacademy.org/math) to "Start
your math adventure!" Khan has set up learning math as an RPG-style skill tree
[http://www.semko.nl/wp-content/uploads/2014/02/khan-map-
half...](http://www.semko.nl/wp-content/uploads/2014/02/khan-map-half-
complete.jpg)

------
csirac2
Mary L Boas "Mathematical Methods in the Physical Sciences" [1] has absolutely
been my favorite and most-used maths text in the 9 years since graduating uni.
It's like a reference manual of just about all the non-CS (i.e.
continuous/non-discrete) mathematical techniques required in my career. Highly
accessible. It's a little too terse in places but I prefer this style of
presentation over the insane long-form verbiage in other books I've since
discarded which can make even simple topics seem overwhelming: the "Boas" book
gets right to the point.

Edit: Calling it a mini-TAOCP of most of the maths needed for physics/EE work
might be a bit of a stretch, but I've yet to see another maths text that does
better as a highly readable, self-contained and compact reference.

Edit2: I moved house once and thought I'd lost my copy from university. I
eventually found it, and yes, I have two copies... It's that important to me
for brushing off the things I've forgotten :)

[1] [http://www.amazon.com/Mathematical-Methods-Physical-
Sciences...](http://www.amazon.com/Mathematical-Methods-Physical-Sciences-
Mary/dp/8126508108)

~~~
thesteamboat
Concrete Mathematics by Graham,Knuth, Patashnik is (explicitly, even) a mini-
TAOCP for much* of the mathematical underpinnings of computer science.

* I say much rather than most or all since it's focused on asymptotics, recurrences, number theory. Modern theoretical Computer Science draws on a much wider variety of mathematical methods.

~~~
pakled_engineer
There's new math Knuth wrote for Vol 4B that's available in draft form on his
Stanford personal site that extends the preliminary in the first book.

------
bitL
What I understood after studying CS for over 10 years at a few universities
regularly ranked highly at ACM ICPC is that math is unnecessarily obfuscated
to most people. There is even an excellent book "Concrete Mathematics" from
Stanford that tries to bring fun back to math instead of drying people with
some formal stuff without explaining how people over the centuries got to that
structure.

I honestly believe math language is seriously outdated. It's like using COBOL
to express everything. Yes, you can do that, but would you really want to
given a choice? The most trivial things are so insanely complicated in math
it's unbelievable (try to describe geometrical objects with the current math
formal language if you do computer vision), yet there is very little work on
developing better formal language of math. It's like with Turing machines and
the complexity theory - who is going to move around a tape in the real world
besides some specialized biological systems, not mentioning magical 'oracles'?
Those abstractions were useful in their day, brought their fruits, but why do
we still stick to them and just increase the gulf between more and more
closed-unto-itself-theory and reality? Yes, it's great some theory is super
cool but what do we do when we find in 20-30 years that the set of objects
satisfying this omnipotent theory is empty? And when somebody like Mochizuki
invents their own formal language to solve some cool problem like ABC
conjecture, we all hate him, refusing to read the proof because it doesn't
follow our outdated formal ways...

~~~
IndianAstronaut
This is what drew me to CS over math. I enjoy describing things with code or
pseudo code, not difficult to understand equations and math symbols. Also, it
is much easier to see the practicality of an equation when presented in code
form.

~~~
pakled_engineer
After I read SICP and HtDP I started retaking math I had forgotten but writing
out the equations in Scheme to further grasp the language. At first doing
Spivaks Calculus in this method took a long time but now I can write formulas
and basic proofs just as fast in a programming language as I can with a
pencil.

I skimmed SICM (Structural Interpretation Of Classical Mechanics) just to get
an idea of how they represented Langrange equations in Scheme and went from
there.

~~~
tokenrove
This is something I like doing. Something I keep meaning to do is take it
further and write my proofs in a proof checking language, or at least write
"unit tests" for my proofs with one (interleaved with the natural language
proof with org-mode!), but they all seemed pretty unwieldy. Has anyone tried
this with any success?

------
bndr
I always thought that being an Engineer assumes you have knowledge of
mathematics. The way this word is being used in Software ist kind of strange.
"I built a blog in php, I'm a Software Engineer" \- this feels kind of awkward
to me.

~~~
Mikushi
And that assumption is wrong. You don't need any knowledge in advanced
mathematics to engineer many types of software, that doesn't make the creator
less of a Software Engineer.

Being an engineer means using technology, science, mathematics to solve
problems. Well in many cases you don't need math to solve these problems. The
word itself as no root in math either, it's based on latin for
devise/contrive, sure it was used for builders at first, where math was
important, but context changes.

Also Software Engineer is wide and reaching, a 3D GFX Software Engineer will
need some heavy mathematics to do his job and do it well, a Web Software
Engineer not much, but he'll need to know a wide range of other knowledge GFX
guy doesn't know (HTTP, network protocols, various languages, server
technology, database technology, browser knowledge,...).

It's not about being good at mathematics, it's about knowing as much as
possible about the domain of knowledge your role entails, and surprise, not
every one of these requires deep math knowledge and understanding.

Your attitude is pure and simple elitism.

~~~
vdnkh
>Being an engineer means using technology, science, mathematics to solve
problems.

That's called practicing engineering. An engineer is a professional
practitioner of engineer. You can practice engineering all you want, but if
you're not a professional (having received an engineering degree from a
certified university), it's dishonest to call yourself one. Honestly, it is
elitist. But those of us who obtained our degrees worked our asses off. And I
personally hate when people abuse the term to mean anything that took skill.
"Candy cane engineer". "Beats engineer". "Drink mixing engineer". It's
linguistic prescription to make yourself sound more important/skilled.

~~~
mcguire
Plus, do you _really_ want to drive across a bridge every day that was
designed by someone you don't know, someone who was self-taught in the ways of
technology, science, and mathematics?

------
lovelearning
About 2 years ago, I had an intense urge to learn linear algebra, statistics
and probability in depth for much the same reasons as the author - to improve
my machine learning and computer vision skills.

Really glad to see I'm not the only one.

I don't have any recommendations for linear algebra, but for stats and
probability (which I always found intimidating in the past), Allen Downey's
"Think Stats" and "Think Bayes" did the trick.

~~~
brational
For LA a great place to start is
[http://codingthematrix.com/](http://codingthematrix.com/)

For programmers with less math experience it serves as a perfect transition
with which to then go into more theoretical aspects of LA.

~~~
DennisP
A Coursera course based on that textbook, taught by its author, just started a
couple days ago.

~~~
kevbin
I'm enrolled in that class. In the introductory lecture Professor Klein shows
a flowchart of the course†. This is the best course overview I've ever seen in
any math class! I've spent /semesters/ in math sequences thinking "how the
#@%! does this all fit together?!?!"

He says: "Don't try to read it all. It's a map... It's there to help you keep
track of where you are and where we're going." Every professor should do that
for their course. And every department should put up a big poster with
something similar: these are the subject areas you will study, how they relate
to each other, and the courses that cover those areas; if you choose this
specialization these are the areas you'll focus on. Put-out a mind-map of the
subject area that relates to the available courses—help students start
building Elon Musks' mental-hyperloop / semantic-tree.

†: [http://picpaste.com/Screen_Shot_2015-02-05_at_1.58.47_AM-
AnX...](http://picpaste.com/Screen_Shot_2015-02-05_at_1.58.47_AM-AnXgh4C4.png)
available on the course website:
[http://cs.brown.edu/courses/cs053/current/graphical-
outline....](http://cs.brown.edu/courses/cs053/current/graphical-outline.pdf)
††:
[https://www.reddit.com/r/IAmA/comments/2rgsan/i_am_elon_musk...](https://www.reddit.com/r/IAmA/comments/2rgsan/i_am_elon_musk_ceocto_of_a_rocket_company_ama/cnfre0a)

------
nadam
Well written, this resonated with me. My day job is a software engineer. At
night I have started to build a speech synthesizer. I had some math knowledge
before, but I need to constantly improve it. (in the territory of signal
processing and everything machine learning related.)

------
andyjohnson0
A related "Ask HN" from a couple of months ago: How or where to begin learning
mathematics from first principles? [1]

I'm at the very start of what I hope might be a similar journey, and have
signed-up for a Coursera "Introduction to Mathematical Thinking" course. I'm
hoping it might give me some insight to build on. The course starts in about
ten days, so apprehension hasn't kicked-in yet.

[1]
[https://news.ycombinator.com/item?id=8697772](https://news.ycombinator.com/item?id=8697772)

[2]
[https://www.coursera.org/course/maththink](https://www.coursera.org/course/maththink)

------
otakucode
When I pick up a book and start to learn something new (which is pretty much
what I do in my free time), I usually do it with an IDE at hand. I try to
implement as much of what I learn in code. If I can teach the computer how to
do it, then I am sure I really understand it, and it often helps me find holes
in my understanding.

I have significant trouble with doing this with mathematics, though.
Programming languages (at least the ones I know) just don't seem to be good
for expressing things like identities and invariants. Anyone have any
suggestions on how to handle such things?

------
nabla9
Usually good books travel from English speaking world to other languages as
translations.

One of the masterpieces that has gone the opposite direction is:

Mathematics: Its Content, Methods and Meaning (three volumes bound as one) by
A. D. Aleksandrov, A. N. Kolmogorov, M. A. Lavrent'ev (18 authors total)
[http://www.amazon.com/Mathematics-Content-Methods-Meaning-
Do...](http://www.amazon.com/Mathematics-Content-Methods-Meaning-
Dover/dp/0486409163)

This book is really good companion for autodidacts. It's basically overview of
mathematics.

~~~
Pyret
I own this book and I'll tell you it's not easy learning math from this book.
Most of it is just very light overview. There are much better rigorous
_textbooks_ that are simpler and more complete.

There are some great textbooks translated from Russian. Analysis by
Kolmogorov, (rigorous) Linear Algebra by Shilov, Complex Analysis by
Markushevich to name a few.

~~~
nabla9
That's why I said it's good companion.

The book covers too much to be thorough. Each chapter gives good introduction
to the subject matter and ends with list of suggested reading.

I always read the relevant parts from this book before going deeper. Not
everyone is going to dwell into non-euclidean geometry, functional analysis
and topology.

Furthermore, I don't think typical self studying engineer in Hacker News wants
to learn math using rigorous introduction to analysis. You can get good
working knowledge and intuition without knowing what delta epsilon is.

~~~
jeffreyrogers
I agree with you, that book is great for giving an overview of the general
areas of mathematics and for providing context before going deeper into an
area. I've used it to get some background in the courses I'm taking classes on
before the semester starts and have found that really helpful.

------
uncultured
If anyone is interested in how mathematicians think and do proofs there are
many helpful books. For example,

 _Mathematical Proofs: A Transition to Advanced Mathematics by Chartrand and
others._

 _How to Prove It: A Structured Approach by Velleman._

 _Learning to Reason: An Introduction to Logic, Sets, and Relations by Nancy
Rodgers._

Elementary Discrete Math books make for great intro to proofs and math
thought:

 _Discrete Mathematics with Applications by Epp._

 _Mathematics: A Discrete Introduction by Scheinerman._

There are tons of terrific introductory books on other subjects in math if
anyone's interested.

~~~
gradstudent
I can't agree more re Epp. Best discrete maths book by a country mile (and
I've seen a few!).

~~~
jonsen
Could you tell what makes it better than Rosen's?:
[http://www.amazon.com/Discrete-Mathematics-Applications-
Kenn...](http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-
Rosen/dp/0073383090)

~~~
ph4
I'm taking Discrete Math now and have both books. Epps' has much simpler
explanations. I haven't taken algebra in 5 years and find that Rosen's assumes
a lot more knowledge, frequently skipping lots of steps in its explanations,
which can be very confusing if you are rusty in the basics.

------
agentultra
Awesome. Good for you. Keep at it. Keep a journal. Share with others what you
learn. Learn from others when they share it.

I'd add a few of books to your list:

Graph Theory by W. T. Tufte: [http://www.chapters.indigo.ca/en-
ca/books/product/9780521794...](http://www.chapters.indigo.ca/en-
ca/books/product/9780521794893-item.html?s_campaign=goo-
PLATest&gclid=CJuA6sbJz8ECFY5cMgodV0MAiA)

On Numbers and Games by John H. Conway: [http://www.amazon.com/On-Numbers-
Games-John-Conway/dp/156881...](http://www.amazon.com/On-Numbers-Games-John-
Conway/dp/1568811276)

And for good re-introduction to geometry and it's practical application to
computer graphics: [http://www.amazon.com/Primer-Graphics-Development-
Wordware-L...](http://www.amazon.com/Primer-Graphics-Development-Wordware-
Library/dp/1556229119/ref=sr_1_sc_2?ie=UTF8&qid=1423062954&sr=8-2-spell&keywords=3D+math+primerp)

I think maths is amazing. It's a useful tool to have in one's arsenal
regardless of your profession or walk in life. It's also not the sole domain
of the highly educated elite. Anyone can do it.

It's not important to be "correct" all of the time so much as it is to be
curious and willing to learn -- and willing to share.

Keep at it! There's so many cool things you can do as you learn more!

~~~
nandemo
"On Numbers and Games" is a great book but it can be tough. "Winning Ways for
your Mathematical Plays" by Berlekamp, Conway & Guy is a gentler introduction
to surreal number. It's also very fun.

------
henrik_w
Barbara Oakley mentioned in the text teaches the course "Learning How to
Learn" on Coursera [1]. It is about the science of learning in general, not
just learning math, but it is very accessible. It's only 4 weeks, and the
lectures are easy to understand. I knew most of the techniques before (spaced
repetition, recall, proper sleep etc), but it was still good with a review.

[1]
[https://class.coursera.org/learning-003](https://class.coursera.org/learning-003)

------
brudgers
I lost interest in mathematics starting in tenth grade. Looking back into the
haze, it wasn't so much mathematics as high school in general and by extension
industrialized education. Boredom begat indifference. Chaos reoriented
priorities across starts and fits with mathematics in post-secondary
education.

I enrolled in Coursera's _Discreet Optimization_ about a year ago. It was way
beyond my ability [No SoA], but I learned a hell of a lot about computing and
solving hard computational problems. It also suggested that mathematics might
be important when grappling interesting problems.

For fun I watched a number of Strang's Open-Courseware videos on matrices. I
hit Chapter 1 of _TAoCP_. I treated it like programming - it was ok to only
partially understand. I took an Algorithms MOOC or two. I actually enjoyed
following the analysis even formal analysis is not something I would do for
pleasure.

The turning point though was when Lamport's "Thinking for Programmers"
[Lamport: Thinking] hit HN. It threw down the gauntlet. Specification is a
prerequisite for a commitment to getting it right, where the it is computing.
And when the it is computing, we are talking about math whether we like it or
not.

It's not that the math and specification replaces testing. It's that tests are
_ad hoc_ without a mathematical understanding of the computation.

[Lamport: Thinking]
[http://channel9.msdn.com/Events/Build/2014/3-642](http://channel9.msdn.com/Events/Build/2014/3-642)

~~~
j2kun
Discreet and discrete are two very different words :)

~~~
brudgers
I already admitted it was beyond my ability...

~~~
j2kun
Math aside, it's an amusing misuse of vocabulary.

~~~
brudgers
It's not a misuse of vocabulary, it's a misspelling. As my typing speed trends
toward my thinking speed, the mechanical action becomes more tied to phonemes.
I've found myself increasingly typing "are" for "our" which is fairly classic.
"One" for "won" not so much.

------
pjmlp
I don't get the title.

At least on my home country, a Software Engineer job title implies a CS degree
with at least two years full of math.

~~~
coldtea
In real life, a software engineer can finish his studies and get a job with
only a tiny knowledge of math, in every country, regardless what the
curriculum says...

~~~
pjmlp
Tell that to the HR guys or the order institution that validates university
degrees and who is allowed to sign projects.

~~~
coldtea
Well, I've seen software engineers with masters degrees that can't math their
way out of a paper bag. In several countries.

And, "validated university degress" or not, I doubt a fizz buzz interview
would have much different results in your country as opposed to the US:

[http://blog.codinghorror.com/why-cant-programmers-
program/](http://blog.codinghorror.com/why-cant-programmers-program/)

~~~
pjmlp
Most likely I would have failed fizz buzz, given that if it wasn't for HN I
would have never heard of it.

~~~
morgante
> Most likely I would have failed fizz buzz, given that if it wasn't for HN I
> would have never heard of it.

If you required prior knowledge of Fizz Buzz to solve it successfully, you
should absolutely never be hired to program anything.

~~~
pjmlp
I develop software since 1986, never needed such dummy tests to be hired.

Companies choose employees, but employees can also chose companies which can
recognize the value someone brings in, besides a few programming exercises on
a sheet of paper done in 1 hour interview.

As for Fizz Buzz, never bother coding it. I see no value.

~~~
morgante
> I develop software since 1986, never needed such dummy tests to be hired.

I've never personally had a FizzBuzz test, but I also have no doubts about my
ability to solve it in my sleep.

I'm against trick interviews or algorithms quizzes, but FizzBuzz is again just
establishing a ridiculously low baseline that you know the most essential
aspects of programming. Someone a few weeks into CS 101 should be able to do
it, so any professional developer who can't deserves to be immediately laughed
out of the room.

FizzBuzz is only a "dummy test" in the sense that only dummies will fail it.

------
aethertap
I am doing this too, with Macdonald's "Linear and Geometric Algebra" and
"Vector and Geometric Calculus" along with "Networks, Crowds, and Markets" and
"Chaos and Nonlinear Dynamics." It's slow going, but very enjoyable.

The most interesting side effect I've noticed from doing this is a dramatic
improvement in my ability to focus. I had been suffering from a general
scatterbrained, distracted feeling for a while before I started. I think it
was due to the way I consume content online, trying to follow too many
interests at once. I set aside about an hour a night to work on these math
courses and within a couple of weeks I noticed that my focus was greatly
improved. For that reason alone I'm counting this project as a major win,
regardless of whether I master these topics or not. Having something to study
seems to be extremely valuable for general mental health, at least for me.

------
calebm
I can personally strongly recommend the book, "Who is Fourier?" for learning
math: [http://www.amazon.com/Who-Fourier-Mathematical-Adventure-
Edi...](http://www.amazon.com/Who-Fourier-Mathematical-Adventure-
Edition/dp/0964350432). It is the best math book I have ever read.

------
tel
Given everyone recommending books for math autodidacts interested in learning
the "breadth" of mathematics, I cannot recommend more highly Saunder's
MacLane's "Mathematics, Form and Function".

It reads as a high level false-historical account of how math might have been
developed, in its entirety, if it unfolded in the most direct and logical way
from the human experiences we all share (guided by understanding of where
mathematics has ended up in the modern age).

The false-historical expose is fantastic. The goal becomes less to express
things as accurately and comprehensively as modernly possible—which you'll
experience as you take on graduate level books or modern papers—but instead to
demonstrate large-scope intuition for why whole fields evolved as they did and
how they are all intermingled.

~~~
marai2
Going back to the "breadth" recommendations, if someone wants a real
appetizing sushi sampler of the breadth of Mathematics, I would highly
recommend "The Joy of X" [http://www.amazon.com/Joy-Guided-Tour-Math-
Infinity/dp/05441...](http://www.amazon.com/Joy-Guided-Tour-Math-
Infinity/dp/0544105850) It covers a number of topics in Mathematics and makes
them really easy to follow for someone with no background in Maths. I
especially liked how in a few pages I succinctly understood div, grad and curl
from vector calculus. For anyone wanting to start out on a full course meal of
Mathematics this would make a very appetizing sampler.

------
tpaksoy
As a software developer who also started learning Mathematics for the same
purpose (Machine Learning), I just could not do it with books. It is strange
to explain, but I need someone with me to study.

I need that person to say: "I don't understand it". Even if I don't understand
it myself, as I try explaining it to my study partner, it starts clicking in
my brain. I suddenly start to understand these parts as I'm explaining it.
Hands down the best way for me to learn: explain to others.

~~~
olavgg
I took Andrew Ng's Machine Learning course on coursera together with a friend.
I had the software engineering skills, he had the math skills. Together we
strived through all the excercises with a lot of discussions, helping each
other and of course we had some disagreements which we learned even more from.

------
stared
For information theory, a really recommend: Thomas M. Cover, Joy A. Thomas
"Elements of Information Theory" \- it starts elementarily, has direct
examples, straightforward definitions and readable notation.

(And first recommendation by Cosma Shalizi:
[http://vserver1.cscs.lsa.umich.edu/~crshalizi/notabene/infor...](http://vserver1.cscs.lsa.umich.edu/~crshalizi/notabene/information-
theory.html))

------
grecy
It's interesting someone who studied Software Engineering didn't get a solid
math education at university.

I studied Software Engineering, and am a certified engineer. I sat next to the
Aerospace, Chemical and Mechanical engineers for all 4 years of "Engineering
Math". (They did crazy physics and chem that I didn't)

How can you call yourself a "Software Engineer" without having studied a huge
amount of math?

------
bradneuberg
Great article. I've recently been self-teaching myself machine learning the
same way. I found that it started to get difficult in the middle of the course
staying on track.

I decided to "scratch an itch" in open source parlance and start a study group
I call colearning. Colearning provides a place for people doing remote
education (or working on their own projects or writing) to have structured
time to study and move forward towards their goals. It helps provide the
positive pressure that a real physical class provides.

Our colearning group currently meets at Borderlands Books in San Francisco on
Sunday's from 11 am to 4 pm. Message me and you can come join!

I've done this to help provide the structure I need to keep learning; its
already helped me advance greatly in my own studies as I make forward progress
every week.

Years ago I also identified a need for community while being self employed and
started the coworking movement.

------
jxm262
I don't mean to go off track here, but as someone who's been casually
interested in math, I'm wondering which branches of math are the most
applicable to software development. I've taken Discrete Mathematics, Stats,
and Calc in college, but now I've been working in the field for a few years
and want to try learning a bit more. I've been thinking of trying some courses
on Cryptography, but it would be a major shift from my current background (web
dev).

I feel like there's so many different directions to take, but which ones are
the most applicable to practical Software Development? Particularly in the
realm of Web Development?

Editing my question to ask what's the most applicable math subjects regarding
the _PRACTICAL_ applications of software development, hopefully clears it up a
bit.

~~~
ibebrett
I feel like that might be the wrong question. If you wanted to really study
formal computer science you could learn things like model theory. If you want
to study the analysis of algorithm run times you may want to study something
like complex asymptotics. Do you want to study math for computer science or do
you want to study math that helps in most applications of computer science
(graph theory, linear algebra, etc etc).

~~~
jxm262
Thanks for this. Edited the question a little to hopefully clarify things. I'm
mostly going back to Coursera just out of pure curiousity, but was hoping I
could take something that has some relevance to my career in Web Development
(practical side, so more of your latter statement).

Sounds like Linear Algebra would be good to learn.

------
henrik_w
I am currently taking a great Coursera course that is meant as a mathematics
refresher course. It's called "Mathematical Methods for Quantitative
Finance"[1]. As the name implies, it's meant as a foundation for financial
calculations like options pricing, but a lot of it is just pure maths, like
limits, derivation and integration.

The lectures are quite clear and easy to follow. I did do all this math at
university, but that was over 20 years ago, so I had forgotten a lot, so for
me this course is perfect. But I think it can be quite useful even if the
concepts a re new to you.

[1]
[https://www.coursera.org/course/mathematicalmethods](https://www.coursera.org/course/mathematicalmethods)

------
manish_gill
I've been doing project Euler problems and I realise it really really helps to
know Number Theory to get to an optimal solution for problems. Can anyone
recommend good books on the subject? While learning via problem-solving is
fun, most of the time it boils down to me sitting with a naive, brute-force
solution that's too slow and then google how to make it fast, discover a new
number theory axiom/tool and then changing the algorithm. There's gotta be a
better way to learn...

~~~
pakled_engineer
MIT OCW has plenty of number theory courses up from beginner to graduate
level. Serge Lang has a good book on Number Theory as well.

[http://ocw.mit.edu/courses/mathematics/18-781-theory-of-
numb...](http://ocw.mit.edu/courses/mathematics/18-781-theory-of-numbers-
spring-2012/)

------
ivan_ah
I like the author's attitude---math really is power[1], and everyone can get
into it. Also reviewing high school math was a good move...

Another thing that can help a lot is using a computer algebra system to solve
tedious arithmetic steps or to verify one's calculations[2].

[1] [http://nobsgui.de/](http://nobsgui.de/)

[2]
[http://minireference.com/static/sympy_tutorial.pdf](http://minireference.com/static/sympy_tutorial.pdf)

------
Bjorkbat
The comments are amusing. It seems there's a popular opinion that to be an
engineer requires a higher understanding of mathematics than what most mere
mortals require.

My understanding was that to call yourself an engineer one must be capable of
building robust and efficient things, whether that thing is a plane, or a
bridge, complex software, even a website, matters not, so long as it is robust
and efficient.

The degree to which you understand mathematics is useful only in how greatly
it can enable you to build something robust and efficient. Thus, if you know
more linear algebra than 90% of all mere mortals, but write inefficient
programs, then at best you are a bad Software Engineer, at worst you're simply
not a Software Engineer.

For that reason, at my current job I was asked to replace a man who earned his
PhD in Computer Science from Georgia Tech who's job was to build an maintain
an API in Go, despite the fact that I'm a college dropout. Smart man, with a
far better understanding of mathematics, but ultimately I could build things
more robustly and efficiently. I had stronger engineering skills.

Going back to OP, right on man. I personally didn't enjoy math until I learned
it using my own rules, by own rules I mean I shunned the established method of
repetition until you memorized the process, instead opting to understand the
underlying concept and keep my thoughts written away somewhere for future
reference, knowing all too well by now that memorization is futile given how
frequently I have to reference Stack Overflow.

~~~
j2kun
> It seems there's a popular opinion that to be an engineer requires a higher
> understanding of mathematics than what most mere mortals require.

> build an maintain an API in Go

Unfortunately, a much larger proportion of engineering jobs require
mathematics than you make it seem. Software engineers seem to forget that
engineering includes designing planes, bridges, cars, lasers, electrical
circuits, materials, and a million other things that require you know
mechanics, statics, statistics, logic, linear algebra, differential equations,
etc.

~~~
Bjorkbat
I clearly brought up designing planes and bridges, I figured both were enough
to demonstrate that my definition of engineering includes the structural, the
mechanical, the electrical, etc.

The point is, the engineer who designs the plane only needs to know enough
math to design said plane. The engineer who designs the bridge? The same.
Theoretically, they're supposed to understand a great deal. Realistically, the
degree to which technology automates the mundane task of calculation could
very well mean that their daily application and actual understanding of
mathematics is overestimated anywhere from slightly to greatly. This will be
especially true as time goes on and the tools of the trade become even more
advanced.

To design a web application that operates efficiently in terms of cost,
response time, and required maintenance, along with a number of other
variables, requires good software engineering. Once upon a time, this required
strong mathematical aptitude. Now, it requires more of an understanding of the
language used for the design of the application itself, an ability to justify
why one approach should be faster through algorithm analysis and efficient
testing, logical thinking, etc, it certainly doesn't require the mathematical
aptitude to design your own cryptography protocol whenever you can simply use
a library demonstrated to be safe and reliable, although an understanding of
the underlying concepts of how said protocol works _might_ be nice, if
anything to understand why you shouldn't roll out your own.

It's not too far off to imagine a near future where the average <insert
engineer here> functionally requires the same degree of mathematical aptitude
as today's current web developer.

------
mdn0420
Do you have issues remembering what you learn? Sure, we've all studied these
topics before in school but have forgotten since. I brush up on some geometry
or linear algebra every now and then for work. But I'm sure I'll forget if I
don't use it after a year or two.

Are there any projects you maintain to keep your knowledge fresh?

------
DennisP
I just started this Coursera linear algebra course designed for software
engineers, which looks really good:
[https://www.coursera.org/course/matrix](https://www.coursera.org/course/matrix)

So far it tracks the matching textbook pretty closely. The first little set of
lectures covered the first 62 pages.

------
aswanson
I hated math from elementary up until i learned Fourier theory. That was a
pivotal moment in my education ; math went from wrote excercise to pure beauty
in a single lecture. Now im trying to self learn lie algebra. I need to find
out what prerequisites i need. A ton of math at this level is notation and
terminology.

~~~
JoeAltmaier
For me it was vector algebra. I was trying to write space games with real
motion, and that was the key to efficient code.

~~~
bholzer
Same here. Linear Algebra is what got me from "math is boring, and I only
learned things to pass a test" to "math is really cool, and can actually solve
these problems in real life"

------
matt2000
Has anyone had any experiences learning different mathematical techniques
using Mathematica? I was wondering if it might be more enjoyable to learn some
areas without the manual arithmetic usually involved in school. Any
recommendations on books or courses appreciated, thanks!

~~~
ingenieros
There's a pretty good Linear Algebra course currently being offered on
edx.org. I just made it past week 1 with relative ease and in the next few
weeks we will be using Mathematica. (Every student gets a license for the
duration of the class)

------
mrcactu5
originally a die-hard math major and now, hacking and dealing with hackers, I
have and to question the foundations of my own subjects. I have come to some
tentative conclusions:

computer science is computer program, when you abstract away all context so it
is just a bunch of symbols

statistics is mathematics applied to the "real world" data, and the art of
turning it into form suitable for computer.

Actually, from Lao Tzu's "Art of War", he put's it this way:

    
    
        In respect of military method,
        firstly, Measurement; 
        secondly, Estimation of quantity; 
        thirdly, Calculation; 
        fourthly, Balancing of chances; 
        fifthly, Victory.
    

a solid 2000 years before the computer.

------
stared
For general introduction to mathematics, there is R. Courant "What is
mathematics?"
[https://en.wikipedia.org/wiki/What_Is_Mathematics%3F](https://en.wikipedia.org/wiki/What_Is_Mathematics%3F).

------
peter303
I didnt really learn math until I had to use it in my work. For example my
thesis worked used a lot of complex analysis and wave equations. I had had
those in Physic and math calss, but really didnt obtain full understanding
until using it.

------
soroushjp
The article title could be "Why and How to Learn On Your Own" and the points
it makes are absolutely correct. Constantly find new things to explore and
learn, and never be intimidated by just how daunting those things may seem.

------
sshillo
Solving fibonacci using eigenvalues [1] was posted a few days ago. A great
example of how powerful math can be.

[1]
[https://news.ycombinator.com/item?id=8980546](https://news.ycombinator.com/item?id=8980546)

------
praveenhm
I am software engineer for last 10 years, I am interested in Phd in
statics/Math and live in silicon valley. what is the starting point for any
courses or degree, any recommendation would help.

------
jafingi
Math is really important for SE's. I had multiple courses in discrete
mathematics when studying MSc in Software Engineering.

I love math.

------
sonabinu
Awesome! My personal experience has been that it is a lonely road but a
worthwhile journey.

------
graycat
Part I -- General

> Why not quit my job and go back to school? Well, that’s not really for me.
> Reading books at my own pace lets me try a subject out without fully
> committing to it and making it a necessity that I find work based off of it.

I respond here in three parts, the first general, the second more specific and
about linear algebra, and the third about statistics.

Really, in school, you still have to learn the stuff. And, there a class might
help but won't be enough; so, right, again, during the course and in the hours
not in the class, you still have to study and learn the stuff. Or for the
class, "mathematics is not a spectator sport". That means you still have to
_study_ the stuff, get it between your ears, understand it.

Eventually you can conclude that mostly college and its courses are more for
_certification_ than education. For the _education_ , that's heavily up to
you.

But there are some dangers in _self learning_ : Not all the ideas and learning
materials are good; the really good ones are only a small fraction of all the
ones you will likely encounter.

So, in praise of college and profs, they can (1) get you on a good track with
good ideas and learning materials and (2) get you unstuck and keep you on
track. In such study, it's possible to do too much or too little -- from some
experts you can see about what is the right amount to do.

I said "college"; revise that to read "one of the world's best research
universities", say, in the US, 1-2 dozen. The ideas and materials you will see
in such a university really do stand to be better than nearly all you will
encounter otherwise. Such learning is where there's not much substitute for
quality. But, still, just to learn the material, you don't really have to
enroll in such a university and, instead, just borrow from their course
descriptions and materials. Indeed, some of the best such universities are
working hard to make their learning materials available to all for free over
the Internet. Why? Because those universities want to concentrate on pushing
forward with research.

Here's a way: Show up at such a university and appropriate department, in your
case, applied math, mathematical sciences, operations research, statistics,
whatever. Maybe show up at some public department seminars. Talk with some of
the students. Say you have a career going, for your career are interested in
what the department is doing, and want to learn more about the program and the
mathematical content. So, get some of the students to talk and explain.

Then for some of the courses you are interested in, see who the profs are and
look at the course materials, say, texts, handouts, on-line files, etc.

Then after looking at the materials and, say, have made some progress with
them, try to get 15 minutes to chat with a prof.

Then take what you just got from that department for free -- broad directions,
what they regard as more/less important, texts, course materials, etc. -- and
go off and study on your own. When you think that maybe you have some course
studied well, try to get a copy of the course final exam or Ph.D. qualifying
exam, work through it, and, if it appears you did well, ask a prof to check
your solution to a few of the most difficult questions. If your solutions look
good, then you will start to _look good_ and may get asked if you would like
to apply as a student in the department. So, here you and the prof and
department are _interviewing_ each other.

Such things worked for me: (A) In my career I kept running into the work of
John Tukey at Princeton and Bell Labs. So, it was stepwise regression,
exploratory data analysis, power spectral estimation, convergence and
uniformity in topology, his statement equivalent to the axiom of choice, etc.
So, I wrote him at Princeton asking about graduate study, mentioned those
topics, and got back a nice letter from the department Chair basically
inviting me to apply.

(B) I applied to Cornell and got rejected. But largely independently I visited
a prof there to discuss optimization, asked about being a grad student, and
soon got another letter accepting me to grad study.

(C) At least at one time, the Web site of the Princeton math department said,
"Graduate courses are introductions to research by experts in their fields. No
courses are given for preparation for the qualifying exams. Students are
expected to prepare for the qualifying exams on their own." or some such.

Lesson: In grad school at Princeton, are still expected to learn the
qualifying exam materials on your own. Well, to do that, don't have to be in
the high rent area around Princeton, NJ.

When I did go to grad school and got my Ph.D., what really saved my tail
feathers was what I had done and did on my own as independent study. Some of
the courses helped in providing high quality directions and materials, but the
real work was nearly all independent.

And, one of the crucial _inflection points_ was when I took a problem in a
course but not solved in the course, did some _research_ , and found a
solution. The solution was novel, and word spread around the department
quickly. My _halo_ got a high polish, and that greatly eased my path through
my Ph.D. That is, I had proven results on the most important research academic
and Ph.D. _bottom line_ \-- I'd done good, novel, "new, correct, significant"
research. Then my hair cut or lack there of, sloppy hand writing, occasional
upchuck at some bad course material, etc. no longer mattered.

My research looked publishable, and it was \-- I did publish it later, in one
of the best journals, easily, no revisions. So, lesson: That _inflection
point_ was from independent work.

So, don't feel that your independent work is inferior to enrolling as a
student. Instead, in the best universities, as a student, nearly all the work
is for you to do independently anyway.

Still, I'd repeat -- try to _pick the brains_ , for free, without hurting your
present career, of the courses, profs, and materials at a world class
department in a world class research university.

Why a _research university_? World class research is a very high bar and some
of the best evidence of good expertise, insight, and judgment in the field --
and you don't want the opposites.

~~~
graycat
Part II -- More Specific

After freshman calculus, it would be good to start with _abstract algebra_.
There you will get _handy_ with (relatively simple versions of, and, thus, a
good place to start -- and, I have to say, put you ahead of a surprisingly
large fraction of the best chaired professors of computer science) theorems,
proofs, sets, axioms, groups (once I published a paper in multi-variate,
distribution-free statistical hypothesis tests where the core of the math used
some group theory), rings, fields, the integers, rationals, reals, and complex
numbers and their leading properties, some important algorithms, e.g.,
Euclidean greatest common divisor (also the way to find multiplicative
inverses in the finite field of the integers modulo a prime number and, thus,
the core of a super cute way to do numerical matrix inversion exactly using
only short precision arithmetic), number theory and prime numbers (crucial in
cryptography), vector spaces (the core of multi-variate statistics and more),
and some of the classic results. Some of this material is _finite mathematics_
at times of high interest in computing -- e.g., error correcting coding. For
such a course, a good teaching math department would be good. Have a good prof
read and correct your early efforts at writing proofs -- could help you a lot.

But starting with linear algebra is also good. There are lots of good books.
The grand classic, best as a second text, is P. Halmos, _Finite Dimensional
Vector Spaces_. He wrote this in 1942 after he had gotten his Ph.D. from J.
Doob (long the best guy in the US in stochastic processes) and was an
assistant to von Neumann at the Institute for Advanced Study (for much of the
20th century a good candidate for the best mathematician in the world). The
book is really a finite dimensional introduction to von Neumann's Hilbert
space theory.

In

[http://www-history.mcs.st-and.ac.uk/BigPictures/Ulam_Feynman...](http://www-
history.mcs.st-and.ac.uk/BigPictures/Ulam_Feynman_von_Neumann.jpeg)

von Neumann is the guy on the right. The guy on the left is S. Ulam (has a
cute result the French mathematician LeCam once called _tightness_ I used
once). The guy in the middle is just a physicist! Of course, in that picture
they were working up ways to save 1 million US casualties in the Pacific in
WWII and were astoundingly successful. Ulam is best known for the Teller-Ulam
configuration which in its first test yielded an energy of 15 million tons of
TNT. There are rumors that von Neumann worked out the geometry for the US
W-88, 475 kilotons in a small package as at

[http://en.wikipedia.org/wiki/W88](http://en.wikipedia.org/wiki/W88)

Von Neumann also has a really nice book on quantum mechanics the first half of
which is a totally sweetheart introduction to linear algebra.

Of course, Ulam was an early user of Monte Carlo simulation, still important.

Other linear algebra authors include G. Strang, E. Nering, Hoffman and Kunze,
R. Bellman, B. Noble, R. Horn. Also for numerical linear algebra, e.g., G.
Forsythe and C. Moler, the LINPACK materials, etc. There are free, on-line PDF
versions for some of these. Since the subject has not changed much since
Halmos in 1942, don't necessarily need the latest paper copy at $100+!

~~~
graycat
Part III -- Statistics

For statistics, that is a messy field. It has too many introductory texts that
over simplify the subject and not enough well done intermediate or advanced
texts.

Also the subject has essentially a lie: They explain that a random variable
has a distribution. Right, it does. Then they mention some common
distributions, especially Gaussian, exponential, Poisson, multinomial, and
uniform. Then the lie: The suggestion is that in practice we collect data and
try to _find_ the distribution. Nope: Mostly not. Mostly in practice, we can't
find the distribution, not even of one random variable and much less likely
for the joint distribution of several random variables (that is, of a vector
valued random variable). Or, to estimate the distribution of a vector valued
random variable commonly would encounter the _curse of dimensionality_ and
require really big _big data_. Instead, usually we use limit theorems,
techniques that don't need the distribution, or in some cases make, say, a
Gaussian assumption and get a first-cut approximation.

Early in my career I did a lot in applied statistics but later concluded I'd
done a lot of slogging through a muddy swamp of low grade material.

A clean and powerful first cut approach to statistics is just via a good
background in probability: With this approach, for _statistics_ , you take
some data, regard that as values of some _random variables_ with some useful
properties, stuff the data into some computations, and get out data that you
regard as the values of some more _random variables_ which are the
_statistics_. The big deal is what properties the output random variables have
-- maybe they are unbiased, minimum variance, Gaussian, maximum likelihood,
estimates of something, etc.

For this work you will want to know the classic limit theorems of probability
theory -- weak and strong laws of large numbers, elementary and advanced
(Lindeberg-Feller) versions of the central limit theorem, the law of the
iterated logarithm (and its astounding application to an envelope of Brownian
motion), and martingales and the martingale convergence theorem ("the most
powerful limit theorem in mathematics" \-- it's possible to have making
applications of that result much of a successful academic career). And,
generally beyond the elementary statistics books, you will want to understand
_sufficient_ statistics (and the astounding fact that, for the Gaussian,
sample mean and variance are _sufficient_ with generalizations to the
_exponential family_ ) and, also, _U-statistics_ where the order of the input
data makes no difference (and _order statistics_ are always sufficient).
Sufficient statistics is really from (a classic paper by Halmos and Savage
and) the Radon-Nikodym theorem (with a famous, very clever, cute proof by von
Neumann), and that result is in, say, the first half of W. Rudin, _Real and
Complex Analysis_ (with von Neumann's proof).

Also with the Radon-Nikodym theorem, can quickly do the Hahn decomposition
and, then, knock off a very general proof of the Neyman-Pearson result in
statistics. How 'bout that!

Thus, to some extent to do well with statistics, both for now and for the
future, especially if you want to do some work that is original, you will need
much of the rest of a good ugrad major in math and the courses of a Master's
in selected topics in pure/applied math.

So, for such study, sure, at one time Harvard's famous Math 55 used the Halmos
text above along with W. Rudin, _Principles of Mathematical Analysis_
(calculus done very carefully and a good foundation for more), and Spivak,
_Calculus on Manifolds_ , e.g., for people interested in more modern
approaches to relativity theory (but Cartan's book is available in English
now). It may be that you are not interested in relativity theory or the rest
of mathematical physics \-- fine, and that can help you set aside some topics.

Then, Royden, _Real Analysis_ and the first half of Rudin's _R &CA_ as above,
along with any of several alternatives, cover measure theory and the
beginnings of functional analysis. Measure theory does calculus again and in a
more powerful way \-- in freshman calculus, want to integrate a continuous
function defined on a closed interval of finite length, but in measure theory
get much more generality.

And measure theory also provides the axiomatic foundation for _modern_
probability theory and of _random variables_. Seeing that definition of a
random variable is a real eye opener, for me a life-changing event: Get a
level of understanding of _randomness_ that cuts out and tosses into the
dumpster or bit bucket nearly all the elementary and popular (horribly
confused) treatments of _randomness_.

 _Functional analysis_? Well, in linear algebra you get comfortable with
_vector spaces_. So, for positive integer n and the set of real numbers R, you
get happy in the n-dimensional vector space R^n. But, also be sure to see the
axioms of a vector space where R^n is just the leading example. You want the
axioms right away for, say, the (affine) vector subspace of R^n that is the
set of all solutions of a system of linear equations. How 'bout that!

Then in _functional analysis_ , you work with functions and where each
function is regarded as a _point_ in a vector space. The nicest such vector
space is Hilbert space which has an _inner product_ (essentially the same as
angle or in probability covariance and in statistics correlation) and gives a
_metric_ in which the space is _complete_ \-- that is, as in the real numbers
but not in the rationals, a sequence that appears to converge really has
something to converge to. Then wonder of wonders (really, mostly due just to
the Minkowski inequality), the set of all real valued random variables X such
that the expectation (measure theory integral) E[X^2] is finite is a Hilbert
space, right, is complete. Amazing, but true.

Then in Hilbert space, get to see how to approximate one function by others.
So, in particular, get to see how to approximate a random variable don't have
by ones you do have -- might call that _statistical estimation_ and would be
correct.

Then can drag out the Hahn-Banach result and do projections, that is, least
squares, that is, in an important sense (from a classic random variable
convergence result you should be sure to learn), best possible linear
approximations. And maybe such an approximation is the ad targeting that makes
you the most money.

So, that projection is a baby version of _regression analysis_. There's a
problem here: The usual treatments of regression analysis make a long list of
assumptions that look essentially impossible in practice to verify or satisfy
and, thus, leave one with what look like unjustified applications.

Nope: Just do the derivations yourself with fewer assumptions and get fewer
results but still often enough in practice. And they are still solid results.

For the usual text derivations, by assuming so much, they get much more,
especially lots of confidence intervals. In practice often you can use those
confidence interval results as first-cut, rough measures of _goodness of fit_
or some such.

But the idea of just a _projection_ can give you a lot. In particular there is
an easy, sweetheart way around the onerous, hideous, hated _over fitting_ \--
it seems silly that having too much data hurts, and it shouldn't hurt and
doesn't have to!

And the now popular practice in _machine learning_ of just _fitting_ with
_learning data_ and then _verifying_ with _test data_ , with some more
considerations which are also appropriate, can also be solid with even fewer
assumptions.

Go for it!

~~~
nkurz
Fabulous write up. Do you somewhere besides here to publish it so it's easier
for people to wander across in the future? I'd be interested to see what else
you've written.

~~~
graycat
> Fabulous

All praise welcome!

> I'd be interested to see what else you've written.

For some more math, more technical,

[https://news.ycombinator.com/item?id=8919311](https://news.ycombinator.com/item?id=8919311)

------
gtani
I read this the first time posted (didn't get any comments), very poignant,
especially the part about relearning trig/geometry, precalc. There's boundless
resources for learning now but you don't get little endorphin/epinephrine
releases like you do when your gcc/clang/VS compile succeeds, it's still
mostly notebooks, whiteboards, pencils and 4-color pens (tho i've seen lots of
cool JS animations, ipython notebooks, and libs in R, matlab/octave and now
julia)

\- a few universities have put (many/most) of lecture notes and student notes
up:
[http://www.maths.cam.ac.uk/studentreps/res/notes.html](http://www.maths.cam.ac.uk/studentreps/res/notes.html)
as well as study guides:
[http://www.maths.cam.ac.uk/undergrad/studyskills/text.pdf](http://www.maths.cam.ac.uk/undergrad/studyskills/text.pdf)

\- books about how to think like a mathematician: Keith Devlin,
Kolmogorov/Alexandrov et al did 2 Dover books, and Houston:
[http://www.amazon.com/How-Think-Like-Mathematician-
Undergrad...](http://www.amazon.com/How-Think-Like-Mathematician-
Undergraduate/dp/052171978X/) and [http://www.amazon.com/How-Study-as-
Mathematics-Major/dp/0199...](http://www.amazon.com/How-Study-as-Mathematics-
Major/dp/0199661316/) and Ellenberg: [http://www.amazon.com/How-Not-Be-Wrong-
Mathematical/dp/15942...](http://www.amazon.com/How-Not-Be-Wrong-
Mathematical/dp/1594205221)

\- Concrete Math by Patashkin, Knuth et al; Streetfighting Math by Mahajan and
his newer, freely available: [http://mitpress.mit.edu/books/art-insight-
science-and-engine...](http://mitpress.mit.edu/books/art-insight-science-and-
engineering)

\- this machine learning/data science list:
[http://www.reddit.com/r/MachineLearning/comments/1jeawf/mach...](http://www.reddit.com/r/MachineLearning/comments/1jeawf/machine_learning_books/)

\- Cal newport blog: [http://calnewport.com/blog/2012/10/26/mastering-linear-
algeb...](http://calnewport.com/blog/2012/10/26/mastering-linear-algebra-
in-10-days-astounding-experiments-in-ultra-learning/)

\- besides Dover, Schaum Outlines are a good cheap resource abundantly
available in used bookstores(tho there are in fact some type-ridden ones also)

____________

the best advice general advice i've seen is the same as what they tell you in
college: form study groups and make commitments to regular discussion.
Stronger students strengthen their understanding by tutoring others at the
whiteboard. There's lots of machine learning and data sciencey meetups and
informal groups springing up e.g.[http://machine-
learning.meetup.com/](http://machine-learning.meetup.com/)

------
icantthinkofone
This guy claims to be a software engineer but then asks this question, "Why
spend your spare time learning math, which is challenging and sometimes dry?"

The question invalidates anything he has to say on the subject and makes me
question his claim of being a software engineer. No self-respecting person in
that position would ever need to ask that question or write an article about
it. Nor is it worth wasting anyone's time to read past the first paragraph.

~~~
brudgers
Margaret Hamilton coined the term "software engineer." Anyone not doing
landing-humans-on-the-fucking-moon level work can have their claim to the
label questioned under any absolute standard.

------
mcguire
" _Get your fundamentals on lock so that you can start getting into the ill
advanced shit. This is universally applicable. — Earl Sweatshirt_ "

"ill advanced shit"? I know, I know, it's a quote and probably intended to be
funny. Heck, it might be.

But I swear, if I start hearing people say that without an awful lot of irony,
I'm going to be kicking people in the testicles.

~~~
jonathantm
Dude... have you __listened __to Earl? He can put out a tape every 4 fours and
_STILL_ have shit on lockdown.

Yo.

