Hacker News new | ask | show | jobs
by williamstein 1096 days ago
I received a Ph.D. in pure math (number theory) from Berkeley, and then worked as an academic mathematician for 20 years, so wrote a few dozen research papers and some books. My ability to write software for doing mathematics was obviously better as a result of studying mathematics, e.g., I started SageMath (https://sagemath.org) and wrote a big chunk of it.

Now I mostly do full stack web development (I have goals that require doing it), and I do often think about my programming informed by intuitions from topology and algebraic geometry (e.g., scopes in programming are like neighborhoods in topology). Having experience with formal logic and proofs also helps in reasoning about what code I'm looking at will do. Experience with rigorous mathematics also makes me more humble about just how difficult it is for anybody to ever reason correctly about anything.

I taught mathematics to many undergrads over the years, and I would recommend anybody interesting in a career in programming also learn at least the basics of group theory and abstract algebra. It's extremely beautiful, and probably different than the other mathematics you encountered, e.g., in high school or engineering courses. There's just so many beautiful and deep ideas in an intro abstract algebra course that aren't very difficult to learn. I initially got into mathematics when I was an undergrad browsing the programming section of a used bookstore, and found an abstract algebra book that was misfiled in the programming section.

4 comments

Responding to William here because I was once a student and collaborator of his.

I was long considered "bad at math," a thing my dad said about himself* and an excuse that I readily took on when I got bad grades. I got a career in web development straight out of high school, and that carried me for several years until I got bored and resumed community college classes for enrichment. I took calculus and a beginning algorithms/data structures class my first semester. At the time, I still wasn't ready to jump back into calculus, and only showed up to the algorithms class. I was intrigued -- proofs had a direct application to my life! Later I would realize that programming taught me the basics of rigor and abstraction in a language I was willing to hear.

Thus began my mathematics career. I always had one foot in the computer science, and one foot in the mathematics. The proofs I saw in analysis were... fine, I guess, I got good grades because I did my homework with enough time to focus on it. But William exposed me to a world of computational mathematics that really carried my interest. From there, I learned new classes of algorithms, hairy implementation details, and more. My experience there was incredibly beneficial to my programming experience.

So my path was crooked: programming, then math, then back to programming. It is undeniable that these skills are heavily intertwined. Even if that undergrad analysis course feels like an inapplicable stumbling block along the way. Most mathematicians I know only used calculus to hone their symbolic manipulation skills.

* parents: watch your &$%&@@&$ mouth

I've always been intrigued by higher math, but I never got further than Calculus III, differential equations, and proofs by induction in discrete math.

Do you have a suggestion on how to get into real math?

Could taking a class in Abstract Algebra be a first step? I've thought about auditing the class at a local college, but the syllabus scared me. Groups? Rings? I've never heard about these things in any class.

Any suggestions?

If you've already done diff eq and calculus, you're ready for real analysis.

Abstract algebra has little prerequisites, so you can definitely do that. However, if calculus clicked with you, then you may find real analysis more to your liking. If you've done enough physics/engineering that requires calculus, you probably won't have trouble connecting the analysis material to your experience.

For me (engineering/physics), abstract algebra was ... abstract. It felt like a bunch of abstract ideas and structures that mathematicians invented to occupy themselves. Of course, that's not at all true in reality, but it was mostly irrelevant to my real world problems.

PS: If you've forgotten your calculus, don't worry - most real analysis courses/books start from scratch and don't assume prior knowledge.

Taking a course in abstract algebra is a good first step. A first course in abstract algebra is supposed to introduce you to groups and rings, so you won't be out of place.

You might also consider taking a proof-based course in linear algebra.

You did a PhD in number theory,but you are recommending group theory and abstract algebra?
They overlap in part because the latter two topics are used to abstract over any mathematics.
wow -- thanks so much. I will learn group theory and abstract algebra. thanks