What Not To Do When Attempting Practise Questions
So, you wanna do practise questions? That's great! I'm glad you're actively engaging with the material and trying to do better.
However, there's a pitfall to doing practise questions that I want you to be aware of.
Just Doing Practise Questions Is Harmful
The way I started doing 61A practise tests was quite straightforward. Print the exam, do it best I could, then check answers for where there were mistakes. Try not to make those mistakes again. Rinse and repeat.
The problem with this approach was that it was passive engagement with the material. CS isn't like AP History, where you can learn all the mistakes and never make them again. That's because you literally can't make the same mistake again –– every question is unique.
Each mistake in 61A has a reason: an incomplete way of thinking, confusion about a concept, misreading a question, or even laziness. Without the reason, you'll keep making the same mistakes over and over again.
What's worse –– you won't even realize you're doing this. You won't see the commonality behind your mistakes because you won't be looking for any.
Engaging With The Material
Now that I've highlighted a potential problem, you may come up with your own way to fix or avoid it. I'll share how I changed my approach.
I started making comments all over the paper. Things like
return type? string and
single line: use λ
helped me think in a streamlined manner and improved the way I approached questions. More importantly, it created a reference
for me to go back to when checking my answers.
Then, I made comments with a different color, this time about what was incorrect, not only in the answer but also my thinking. As a simplified example, the incorrect answer may be 17 instead of 18, but the actual problem was forgetting to apply PEMDAS.
This seems obvious, but gets harder to do as the difficulty of the question increases. When both your answer and the exam solution seem equally complex, it's hard to tell why you're wrong and they're right. You must not give in to the urge to shrug and move on. Don't give up on a question till you understand exactly what you did wrong and the official solution did right.
Litmus Test For Understanding
It's usually a smart tactic to have a way to self-test your understanding. My litmus test is explaining the difference between the official solution and my solution to someone (often a mirror).
If I can explain every single aspect convincingly, then I believe I've understood the concept behind it and can move on. Otherwise, I have to go back and try again.
I didn't know this at the time I came up with it, but this is popularily known as the Feynmann Technique, named after the incredible Richard Feynmann. As an aside, if you ever find the time, read his hilarious book Surely You're Joking, Mr. Feynmann.
You'll probably hear me say this many, many times over the course of this... course –– the concepts we cover are the fundamental building blocks of CS. I'd encourage you to ensure you know every ridge and dent in them: it makes for a much richer experience in this class and beyond.