When I was in university, I encountered this a little too often for my comfort. I spent about a semester wondering if college-level material was so far advanced that I wasn't as prepared as I'd thought I was. Eventually, I came to understand the idea of learning styles. Just as every instructor has a communication style for course materials, we all have individual styles for learning that information. I find that I learn best in small groups and one-on-one instruction. I often do not follow a specific PATHWAY to learn material, as much as I jump around the edges of it, ask questions, learn various parts, and eventually come to understand the whole.
Unfortunately, in a university setting with large lectures, this approach for information does not help me understand or retain the information. The instructors, out of necessity, present the material only one way, and likely the textbook publishers have used a number of focus groups to find out the most commonly effective way to present the material.
Right now, I am studying object-oriented programming for the first time, after years of procedural programming. I am also working as an IT contractor doing Java and .NET development. My teacher has no practical experience with programming in a business environment, and many of the examples and techniques she's showing us make no sense to me because of similar examples from a live production environment with which I work every day. This dissonance makes it extremely difficult to wrap my head around what she's teaching us and what I need to demonstrate in order to get a good grade. Like you, I am frequently frustrated with my class.
I know that for me to learn effectively, I need small groups and one-on-one instruction. I've worked with my instructor during office hours to better understand what she's talking about. I bring in samples of source code from the projects I'm doing at work, compare them to similar things we're doing in class and have her explain why she's teaching "X", but the legacy code I'm modifying is built like "Y". I have lunch with colleagues regularly who help me understand these differences as well. I've also found four other students in the class who are having similar problems; we regularly communicate our problems and solutions.
The point I'm making is that by understanding my learning style, by understanding what I need to best assimilate new information and ideas, I can be a lot more effective in asking for what I need. I'm not just saying "I don't get it." I find better or different ways to ask questions that will mesh with my learning style and help me understand more clearly. Showing my teacher "this is how we're modifying the customer address in a production environment" while looking at the "make an address book application that allows you to add, edit and delete records" assignment helped HER understand my difficulties, and having her point to various sections of code and explaining why the differences existed allowed me to better understand what she was looking for in the class. But this all started from my understanding that this is an better way for me to learn, and being proactive about ensuring that the instructor can give me that support.
Understand your learning style, and a lot of your questions about HOW to learn will become self-evident.