> if you don't find the answer, someone will show you, and you'll think "OMG why didn't I think of that?"
Really? There are many times where I thought "How am I supposed to think of that?" In fact, that's probably what would happen most of the time.
The problem with high school math is that it has no context. It's just a bunch of seemingly arbitrary rules.
It's as if when learning programming, you would learn fragments of various languages here and there but never connect the various pieces into anything meaningful.
Lesson 1: boolean variables in Java
Lesson 2: If statements in python
Lesson 3: Three-part for-loop in C
Mid-term exam:
Q1: In the C language, how do you separate the components of a for loop? (correct answer: semicolons)
Q2: What can you put in the right hand side of the '=' symbol in a boolean variable declaration in Java? (correct answer: an expression that evaluates to either true or false).
Q3: You are supplied a function that can take any number and determine if it's a Crastomarian number. We have 20 foot ball players each wearing a T-shirt with its own number. The numbers go from 5 to 24. We want to find how many players have Crastomarian numbers. The program to find the correct answer will use a for loop. Write the header part of the for loop. (correct answer: `for(i = 5; i < 25; i++)`)
...
And this is supposed to be how you learn programming.
Also note: there's almost no way to know the answers without rote memorization. Of course you will never absorb these concept by osmosis because your day to day activity will not involve writing programs that do things. Instead, you're just memorizing the rules given to you and doing exercises that help you recall which rule to use for which situation.
If you haven't memorized the for syntax and written 25 different variations of it, you will not be able to know it.
And when I say that you write 25 different variations, I mean you write them as part of pointless exercises of course because these are not in the context of a program.
It's more like just repeating these lines until the pattern somehow hopefully sinks into your mind.
for(x = y; x < z; x++)
for(y = 10; y < j; j--, y++)
.. etc