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)?
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.
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!
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.
I studied CS, psychology and business administration (I dropped out of BA, it was useless info)
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.
But this is the first guide that I know the material! I have “learned computer science” (somewhat). And I have to say it has propelled Beej’s other guides to the top of my reading list. The subchapters I skimmed and their content are just so relevant and I know many new and experienced devs (myself included) who would still benefit greatly from reading this. Just exceptionally well done.
Anyway, the audience is
> Undergrad students just getting into programming
so it's naturally biased toward the engineering part of the subject.
Reading the chapter of AI seems to support that feeling. It was about tips on where to use it, where to not use it as a shortcut, how to be critical of any output, and some personal speculation.
> Are you getting into Computer Science, or thinking about it? Or maybe you’re in it already. This super-high-level guide is for you!
> I’m not going to talk about how to write code (much). I’ll I’m going to talk about in these roughly 40 pages is more about how to learn when you’re a nascent software developer.
Page 1
> You gotta want it. Do you want it enough to go through the tremendous amount of effort it takes to learn it? Maybe you hate programming, but you want the money enough. Maybe you don’t care about the money, but you want to program every second of the day.
> Just make sure you have the drive to make it happen.
Man this is so true
All of his material is absolutely top notch. His guide to network programming was instrumental to both my understanding and career. It often feels like thanks isn't quite enough.
> [...] But nowadays they tend to punt to some AI. Beginning developers should not do this.
It reads like a chess Grandmaster in the 90s telling up-and-coming players to ignore Deep Blue.
Point 7.5 of this guide reminds me of the Einstellung effect, I built my own "pomodoro" timer with notifications saying "go stretch" or "go drink water" (https://github.com/reciperium/temporis in case someone is interested)
bencornia•1d ago