There's often a huge difference between sitting in a class and solving problems. It's the difference between knowing how to do an integral and realizing that in this specific instance it makes far more sense to use the trapezoidal method to numerically find the integral.
So, how do you learn to solve problems? By solving problems. Which of course sounds mildly circular. Here's what I'd recommend: pick an easier problem, one you know you can solve. [If you're looking for problems, try out the Euler problems, which are a ton of fun, and start easy and then get harder.]
Solve that problem as many ways you can. Try to go for at least five. Bonus points for all the extra solutions you come up with. Then, go through each solution and explain to your handy rubber duck what makes each solution good or bad - the pros or cons to each. Try to invent situations where each solution would be optimal, or decidedly non-optimal.
This sort of work will improve you far more than studying. Studying will expand your toolkit to some extent, but you have to use the toolkit to really understand whether or not certain things will work in certain situations. When you're in a woodshop class, there's a reason you'll spend most of your time on the shop floor. The human mind gains far more from experience than reading or lecture.
Finally, let me make something very clear. While you shouldn't make someone else do your schoolwork, you have to be careful not to completely fence yourself off from help. My dad (an engineer) often says that one of the great mistakes of engineers is believing they are working on a completely unique problem that has never been solved before, or somehow believing that no one can help them (or that they shouldn't have to ask for help). All of that is false.
My time breakdown when working on a project is generally 1% programming, 49% debugging, 50% googling/stack-overflow-ing. It's not a bad thing to ask the almighty google. It's more about knowing when something is within your capabilities, and when you need help. And always, always, read about why the code works - critical so you can adapt it to your application.
Tl;dr: solve them problems. And don't use google too much.
edited …
to see edit history (So you can find the bit I deleted). $\endgroup$