Learn to Think Like Your Computer

What CS61A is all about.

Being able to do this is what separates a mediocre computer programmer from a great one.

Human beings are special because we are excellent at lateral thinking. We can look at a statement, consider the many different interpretations, and select the one that makes most sense in the context. Computers cannot do anything like so — they are bound by the strict set of rules we hand them, and execute programs in these fixed, deterministic ways.
Throughout CS61A, our goal is to teach you to start thinking as methodically as a computer. Done correctly, this will give you the ability to look at a piece of code and know exactly what it's trying to do, where the bugs are, and how to fix it.
To be able to do this, we need to set a challenge for ourselves: no hand-waving. We must force ourselves to not shrug away misunderstandings — it is much easier to move on when you sort of understand something than to suffer in the discomfort of not completely understanding it. However, what is executed in what order is extremely important, and critical to deep understanding of class material.
I'd highly recommend investing a lot of time in practicing Environment Diagrams (more on this later) and using PythonTutor while tackling questions. Both of these help greatly in developing intuition.