Live data from Hacker News

A Software Engineer’s Adventures in Learning Mathematics

medium.com

71–80 of 227 posts

Re: A Software Engineer’s Adventures in Learning Mathematics

#71
post #62

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 fr…

Computer science is pretty broad. What do you want to do? Just because I use linear algebra all the time for machine learning doesn't mean it will help you (that much) with computational complexity analysis.

Re: A Software Engineer’s Adventures in Learning Mathematics

#72
post #55
post #3

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.

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…

>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.

Re: A Software Engineer’s Adventures in Learning Mathematics

#73
post #26

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 verbiag…

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.

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.

Re: A Software Engineer’s Adventures in Learning Mathematics

#74

Earlier quoted context omitted.

CompSci is not engineering. It's almost math major, heavily on the discrete side of things.

This could not be further from the truth. I doubt my CS professors would be able to solve a PDE (or algebraic geometry etc etc). Likewise, few math professors would be able to write a parser generator (or code worth a damn). In contrast, I know engineers who live and breathe PDEs and tweak compilers to solve them faster.

It wasn't that long ago that most schools did not have a separate CS degree, but rather it was a math degree w/ a concentration in computer science (or some other verbiage to describe the same thing)

Re: A Software Engineer’s Adventures in Learning Mathematics

#75
post #62

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 fr…

Linear Algebra is definitely one you can make use of. When I studied it at uni I did it from a mathematical standpoint and only some years later discovered how useful it is in computing.

Have you done any study of Graph Theory? I've found that a surprisingly large number of problems in computing can be morphed into graphs. I was working on an issue last week (in a web app) that turned out to be a variant of Exact Cover which straight away gave me a large body of literature / algorithms to pull from - and told me I was in a slightly dark place :). Graphs and the algorithms around them feel very close to the work we do with computers, so it will probably be pretty approachable given your background.

My advice would be to not worry too much about how applicable it will be to web development and just pick something to study. Ultimately, it will end up being useful in time. And maths is just beautiful.

Re: A Software Engineer’s Adventures in Learning Mathematics

#76
post #34
post #3

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.

I'm employed as a Software Engineer now but my degree is in ECE. The engineering curriculum at my university (Rutgers) was extremely math intensive. I didn't take a whole lot of software classes but I'm glad I did take all that math. I think it's dishonest to call yourself a Software Engineer and not have an engineering degree. Semantics, but I earned the title.

I understand where this feeling comes from. You worked hard to earn what is (or what should be) a title with prestige: engineer. I too worked hard to earn degrees in engineering. I try to live up to that title every day, and I'm sure you do, too.

But my years of engineering experience have shown me that the title "Engineer" is really more about how you approach problems and what you do to solve them and less about degree credentials. Now, the following example is in the context of electrical engineering on airplanes, not computer programming, but I think it holds true.

One of the best people I work with does not have a college degree. But over years of self-study and real world experience, he has taught himself electronics, some computer programming, and enough mathematics to get by. And when there is a technical problem to be solved on one of our airplanes, he will chase after it relentlessly, and smartly, until it is solved. His system designs are clean and well thought through. He has taught me much about designing for real world implementation. Is he not an engineer? He does more than many of my coworkers who are degree holding EEs. I am not afraid to call him an engineer, because he has earned the title in a different way.

Re: A Software Engineer’s Adventures in Learning Mathematics

#77

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 t…

> The range of problems I could tackle as a programmer was limited by math. It turns out this was partly true. Would you mind expanding on this? I've often thought about going back to school for a math degree, or at least for the core degree courses. Did functional programming, particularly in a pure language like Haskell, become easier to reason about once you had studied Category Theory in depth?

You can actually go the other way around, from functional programming to mathematics: http://homepages.cwi.nl/~jve/HR/

Re: A Software Engineer’s Adventures in Learning Mathematics

#78

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 t…

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.

Re: A Software Engineer’s Adventures in Learning Mathematics

#79
post #62

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 fr…

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…

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.

Re: A Software Engineer’s Adventures in Learning Mathematics

#80
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...

Post reply on HN