^this.
Some courses just plain suck. It could be the contents of the course, or the way its been taught.
For example, a few of the best courses (as in, content of the course looks pretty sweet) my uni has are taught by the most boring and incongruent teacher I had. One time we were being introduced to Java (actually OOP through Java), and the teacher was talking about objects identities (objects = references, primitive types = values), so one of my classmates asks "So, if object1 = object2; means that both object1 and object2 are pointing to the same object, how does someone copy an entire object?"
I swear to god that my teacher couldn't answer the question. She started to talk about identities (repeating what she said 5min ago) and it said something related to the slide she had displaying by that time, which of course, had nothing to do with copying an object. To this day (course already finished) no one told us how to copy an object in Java lol (spoiler: it involves overriding an Object method).
Imagine that situation with every single question directed at her. You couldn't ask her anything. Only like 3 out of 15 people went to her theory classes, most of us passed the course anyway because the practice class teacher re-explained everything to us on his class and we could actually ask him something and get a good answer.
What I'm saying is, bad courses will happen, bad teachers too.
If you expect try to pass every course exactly the same way, you're going to have a bad time (had to do it
![tongue.png](http://public.gamedev.net//public/style_emoticons/default/tongue.png)
).
Pay attention to those courses you like, save the "good enough" effort for those courses you don't like, and if you like the content of the course but you don't like the way is been taught, its time for some good ol' self-teaching!
![smile.png](http://public.gamedev.net//public/style_emoticons/default/smile.png)
(which you seem already doing btw).