Comment by pygar

Comment by pygar a day ago

18 replies

Most reputable CS courses will have one or two math subjects (often called "Discrete Mathematics" or some variation).

Does anyone have any advice on tackling subjects like these for someone who hasn't done any math since high school more than a decade ago (and has forgotten it)?

modernerd a day ago

https://www.mathacademy.com/ is a great combination of structured learning across an incremental skill tree with practise problems to prove to yourself that you understand. It’s a big commitment but helped me go from “hasn’t done any math for a while and probably missed some basics” to much more comfortable. You can do the self-test to pick a starting level and work up from there.

As with many things you basically have to sit down and do the work, though, you’re not going to get better just by inhaling books and videos. MA isn’t a fun/gamified learning platform like Duolingo, the ‘fun’ comes from putting the work in and seeing yourself improve. For me it went from a grind initially to something I enjoyed doing.

https://www.geogebra.org/ is also worth exploring for its novel visual approach, but is much more rudimentary, less challenging, and less deep than MA.

  • lII1lIlI11ll a day ago

    I second this. Mathacademy is great and there is no way OP would be able to just jump into university-level math courser without re-learning prerequisites, considering they said that they forgot most of the school-level math.

  • nathan_douglas a day ago

    I third MathAcademy. I graduated high school >25 years ago with almost no math skills and had a major struggle with the math prerequisites for my CS degree ~15 years ago. I've been wanting to get into higher math recently, so a few months back I started hitting MathAcademy heavily. Its structure and modularity is exactly what I needed.

    • Rendello 19 hours ago

      > Its structure and modularity is exactly what I needed.

      Through great effort, I completed Mathematical Foundations I & II. I talked about it a bit here [1][2]. If you read through MathAcademy's methodology and reasoning, it's incredibly strong [3], but in practice I never felt confident in my understanding or execution, everything felt quite discrete and I didn't understand the relationships or purposes of what I was doing. I kept going because I was getting better, and because people online who were quite good at math said not to try too hard to understand things fully at first, since the abstraction level of math is so high.

      The weeks before finishing MFII, my motivation was higher than ever. The day I finished, I felt nothing, and in the following weeks I decided that it was time to let it go for now.

      I think MA is good. I've never done so many exercises in my life, and although I wasn't super confident, I was far better at math than I'd ever been. But I think MA probably needs a lot more multi-part exercises so you understand what you're doing and where to use things. I feel like I learned "Discrete Math", but in the sense that all the lessons were discrete and I couldn't draw connections between them.

      https://news.ycombinator.com/item?id=42519882

      https://news.ycombinator.com/item?id=43275665

      https://www.justinmath.com/files/the-math-academy-way.pdf

      • nathan_douglas 11 hours ago

        (I'm actually set to complete Mathematical Foundations II next week, after completing Mathematical Foundations I recently.)

        Thank you for your comment. I had a very nontraditional path to engineering, even in an era of self-taught programmers, and I feel a lot of pain and despair and bitterness and, uh, a vicarious feeling of disappointment, I guess... so discussing this sort of journey does me some good.

        > I feel like I learned "Discrete Math", but in the sense that all the lessons were discrete and I couldn't draw connections between them.

        Very reasonable takes. I think you're spot on. I do have a lot of trouble with the abstractness and disjointedness of it. I'm hoping that repetition will improve it. So far I'm still struggling with the same things I struggled with in college - combinatorics, for whatever reason, just seems to slide right out of my brain.

        By "modularity" I meant that I could squeeze in 10-15 minutes here or there without having to commit multiple hours to a single concept, and that I could take a day off without destroying anything, but that's probably connected to the "discreteness" you mention, without a holistic, oceanic kind of cohesion or connectedness.

        I'm actually working on a project now, an educational site that's kind of along these lines but focused on areas of CS I've always struggled with - Lambda Calculus, Type Theory, Lisp, that sort of thing. I think I have some good ideas. I hope I come up with more, because I definitely want to build a rich mesh of knowledge rather than a catalog of disconnected facts and tools without any underlying meaning.

whatamidoingyo a day ago

I'd recommend going on Thriftbooks and ordering a textbook. I can't remember the exact copy I had years ago when I was self-learning CS, but it was like $4.00 for a really incredible textbook.

Now, I don't have a degree, so take my advice with a grain of salt, but the book was really really good, and honestly, if you've been programming for awhile, I think most of the concepts didn't require a heavy math background (of course, it would probably help). The chapters were like: Symbolic Logic, Set Theory, Proofs, Algorithms, Cryptography, and other things which I can't remember.

Edit: The book is free to read online

EDIT EDIT: Removed link as I don't know if that was a "legal" link.

It's out of stock on Thriftbooks, but looks to go for $6-8 on there.

  • ink_13 a day ago

    What's the name of the book?

    • whatamidoingyo 21 hours ago

      It's called "Discrete Mathematics and its Applications" by Kenneth H. Rosen. A google search reveals a PDF as the first result.

Rendello 19 hours ago

Math Academy is a good option, but I wrote about the issues I had with it here.

Recently, I've been going through Introduction to Graph Theory by Richard J Trudeau. It's from the 70s, and I'm doing all the exercises. It really is an intro, and teaches some set theory and proof stuff. Doing Math Academy at least taught me that doing exercises is incredibly important for mathematics learning.

https://news.ycombinator.com/item?id=46124247

[removed] a day ago
[deleted]
umanwizard a day ago

My advice is to (re-)learn elementary algebra to a proficient level before attempting any other branch of math. That is a core prerequisite for absolutely everything. By elementary algebra I mean roughly everything in classes called “Algebra” or “pre-calculus” that you learn in an American high school before calculus. Geometry and trigonometry can’t hurt either but algebra is more central.

  • tresdots a day ago

    For as much as I've learned in the last 10 years of being a software engineer, I've frankly forgotten at least half of the maths I once knew.

    Of course, I could take the time to re-learn it all if need be, but I'm definitely thankful to have went straight from high school into college. Having to re-learn everything just to be at baseline would make the whole experience far less enjoyable. Kudos to those that have done so.

qsort a day ago

> one or two math subjects

Only one or two? :)

It's not easy as an adult but it's definitely doable, don't get discouraged. The main hurdle isn't knowledge of specific topics, most undergraduate courses assume little to no previous baggage, i'd say it's more the lack of "mathematical maturity"[0], or the ability to "bridge" between the formal language of math and the intuitive "what we're doing here".

When you're writing code, you probably don't stop to think "I need to do this operation for each element of this vector, a for loop is what I need", you instead have a high level idea of what you're trying to accomplish and "make the code happen", filling in the formalities as needed. Trying to go line by line is how beginners operate, and that's why they never get anything done. I'd never get anything done either if I had to work like that!

The reason why many people get stuck in math is similar. You read a definition that goes "for all ε>0 there exists δ such that for all ..." and you immediately get confused, trying to keep the entire "abstract syntax tree" of what you just read in memory. Like in the code example, the "mature" way to see it is that we're trying to capture an idea, and the formalism is instrumental in that. What are the variables "morally" doing? (At a certain point you'll realize the formalism is actually working for you rather than against you, but that's a rant for another time...)

The conceptually easier but more time-consuming thing to do is to practice symbol pushing if you lost that since high school. For example: is it immediately obvious to you what (a+b)^n is if you expand it? Do you remember how to factor (a^3 + b^3)? Do not despair if you don't. Many more people than you think can't do that off the top of their heads, but it's the kind of "mechanical" skills that's probably blocking you at this point.

Another important aspect to learn is a bit of notation, the "standard library" of math, as it were. Understand "for all" and "exists" as quantifiers, and how they interact with negation and logical operators. It should be eventually obvious to you that negation "inverts" quantifiers. Learn at least a little bit how to work with naive set theory: union, intersection, etc. Look up what the "common" sets (integers, rationals, reals, complex) are and how they relate with each other.

And finally, try to get a feel for how proofs work. That's going to be important, even for the type of math you need for computer science.

Good luck!

--- [0] https://en.wikipedia.org/wiki/Mathematical_maturity

  • monero-xmr a day ago

    My university offered the math classes in either CS or Math departments. I always chose the math department. Better teachers and far more interesting professors (as people)

    • qsort a day ago

      I have a degree in CS and I got a lot from it, so I'm absolutely not going to bad mouth CS, but I have the feeling that it's possible to just get a piece of paper having learned little to nothing in a way that couldn't happen with Math or Physics.

      Obviously lots of great people have CS backgrounds, but it also feels like "how did this idiot get a degree" happens far more frequently for CS than Math. It's not like everyone coming out of a Math degree is automatically a genius, but they set the bar higher and as a result math classes "feel" better.

      • mettamage a day ago

        Psychology and business administration is even worse.

        I studied CS, psychology and business administration (I dropped out of BA, it was useless info)