In CS/math which topic would you place in that category?
For me in math it was linear algebra and for CS it was learning to write an interpreter for a language (or learning about programming language theory in general using an incremental interpreter).
Compiler class: Same as above, but it also gave me that 'fearless' mindset when working with new problems/codebases.
Probability/stochastic processes. This is definitely the most useful one. Stochastics is just everywhere, and addressing risk is something we all do all the time.
differential equations / scientific computing class. I think DE are an under-appreciated gem, and almost everything is modelled with differential equations. It's literally how we describe the world.
HPC: Made me throw many of my texts from adv. algorithm classes into the dumpster. Just measuring actual code performance made me realise that std::vector / linear structures is very hard to beat, and most of time its about knowing your problem and hardware and not about being fancy.
Computer-Graphics/Rendering: This class actually taught mere more about programming and algorithms than those two classes combined. Computer-Graphics is one of those rare subjects where you need all the tricks.
Once you realize that everything is stored at an address (or group of addresses) "somewhere", your life gets much easier :)
Whether it's memory addresses for a linked list, inodes for [local] file storage, or an IP address for a network resource, they're all "the same" in the sense of "this thing can be found by going to that place"
The world wide web is just a complex linked list/graph with loops
But if you don't grok address/reference indirection, your life is much harder
- Figure out which parts of a process can be safely parallelized
- Represent a complex process as a state machine/graph, and then achieve high test coverage by writing a test for each edge.
- Write code analysis tools
- Implement various phases of a compiler
for maths, I think being able to quickly read binary and hex or at least quickly gauge the magnitude of a hex number is pretty underappreciated. Multi variate calculus and linear alg was also very useful in general in reasoning about programs especially those involving lists, vecs, matrices, and ML
compilers are great too but I feel like most resources and thinking around it is a bit too focused on parsing and the frontend, not enough on the "essence" of languages and compilers, abstraction, and more recent developments in static analysis other than simple typing
After getting my head around it is just everywhere. Sometimes I wonder if we actually have another big trick.
Thinking in functions have made my life easier in programming, at least.