Here are two approaches you could take to learn something new:
Passive review: Consume an explanation of the topic you’re trying to learn. For example, read a textbook chapter, watch a video lecture, or read an online article on the topic.
It shouldn’t be hard to guess which of these approaches is more effective at reinforcing what you know about a topic. Although you have to consume new information at least once through a lecture or other means, continuing to passively consume the same information repeatedly doesn’t help you learn it much better. The brain seems to take retrieval more seriously than storage: neural connections are strongly reinforced when information is actively used, but information that merely arrives through the senses receives a comparatively weak boost.
It might seem that active recall applies mainly to students of the humanities and social sciences. For example, students commonly use flashcards to learn the vocabulary of a new language. But you can also approach subjects like math and computer science in an active way. For example, how effective would it be to just read the solutions to a math problem set, compared to solving the problems yourself? How much more do you learn from writing code compared to reading it? In both cases, the passive approach has value for learning something for the first time, but it’s best to spend most of your time on the active approach.
Asking the Right Questions
One of the components of active recall is a question or prompt, since active recall consists of reading questions and supplying answers. To come up with questions, you can either find questions that someone else has written, or come up with your own. The main advantage of writing your own questions is that it gives you a virtually unlimited supply: given information that you want to learn, you can always come up with some kind of prompt. Thinking about how to pose the question can also help solidify your understanding of the source material.
Some types of information are easier to invent questions for than others. Vocabulary flashcards for a foreign language (or your native language) are the most straightforward: the word goes on one side, and the definition goes on the other side. But if you need to, you can generate active recall questions from any text. The venerable textbook How to Study in College contains a method called the Q System that you can use for this purpose. It works like this (assuming you’re using a paper book):
- After reading a paragraph, underline the key idea.
- In the margin, write a question whose answer is the underlined section.
- When you finish a page, cover up the text, and attempt to answer the questions in the margin.
While the Q System could be used to study the conceptual material in a math or computer science textbook, it’s best to use more specialized techniques for those subjects. For math or theoretical computer science, Cal Newport’s proof obsession technique would be appropriate. For a more applied CS class where you have to be able to implement algorithms, I outlined a process at How to Learn an Algorithm. Both of these techniques are active recall methods at their core, but the nature of the subjects means they have more steps than the Q System does.
It’s convenient to be able to create as many questions as you need, from any source that you have available. But someone who is learning a topic for the first time may not be the most qualified person to come up with excellent study questions. That’s why textbooks almost always come with questions written by experts.
If you’re using one of those textbooks, you should therefore have access to a set of questions that are better than ones you could easily write on your own. Now you need answers to those questions. Textbooks usually provide some answers, but not all of them. The Quora question Why do people write textbooks without solutions to their questions? covers a number of reasons for that.
This Quora question focuses on CLRS, the famous algorithms textbook that is also infamous in some circles for providing few solutions, and for discouraging others from providing them. The question participants make a number of good points:
For textbook authors, writing answers is a tradeoff. Authors have a fixed amount of time and budget to write the textbook, so any time they spend writing answers means less time to write additional questions. It also takes away from time that they could spend writing examples, which are fully worked-out questions and answers in the body of a chapter.
Writing a good question is harder than answering that question. This is both a deep philosophical truth, and a practical reality about textbooks and courses. The limited time that experts have is best spent writing more questions rather than more answers.
The partial solutions provided at the back of most textbooks may not be very useful. The problems in college-level math and CS textbooks often have multiple correct answers, answers in the form of proofs, or answers in the form of algorithms. None of these answer types lend themselves very well to the tiny answer format found in most textbooks. Even dedicated answer books with plenty of space generally just provide one possible answer, which may or may not help a student who has come up with a different answer and wants to verify if it is correct.
If a textbook provides the answer to a question, instructors probably won’t be able to use that question in a problem set. This is the obvious reason why textbooks don’t provide an answer to every question. Every provided answer slightly reduces the value of the textbook to an instructor, since they can’t assign the question without worrying about how the temptation to peek at the answer will affect their students’ learning process. And since textbooks are selected by instructors, not students, authors have to be mindful of their interests.
The last point above hints at the reality that textbooks are written mainly to be assigned by instructors and purchased by students for use in a class. Although famous textbooks like CLRS are likely to also be picked up by independent learners, they are still written with a traditional education environment in mind: a professor who assigns problems, a TA who grades them and provides feedback, office hours that students can attend, peer study groups, and so on. If you’re lucky enough to get a professor and TA who are good communicators, then this is the gold standard for learning a subject.
The points above about textbook answers are all valid, but I’m glad most undergraduate textbook authors don’t take the extreme view that writing an additional question is always better than writing an additional answer. During the many years after college, it’s useful to have textbooks that are amenable to independent study using one of the following types of answers:
Answers only (no explanation): Despite the danger that some see in providing a simple answer, like a single number or a proof idea, I think it’s better than providing nothing. It allows the diligent student to get some assurance that they’re on the right track in understanding the chapter material. Yes, some students may skip to the answer too early or think they understand the material when they don’t. But I think that’s a worthwhile tradeoff for students who don’t have easy access to another source of feedback.
Worked-out answers: Some textbook publishers provide solution manuals to the general public (not just verified instructors). These supplementary books usually have more space for explanation than the answer guide at the back of a textbook does. There’s still the chance that the guide could provide only one answer for a question with multiple correct answers. That’s just something the user of such a book has to deal with.
Coursera peer review: This is something I experienced in Keith Devlin’s Introduction to Mathematical Thinking course on Coursera. Since the last part of the course involves proofs, there is no good way to use Coursera’s automated grading system to evaluate student answers in those sections. Instead, the course uses peer grading, where each student grades the work of three or more other students. It’s hard to say how effective this is in its current form. The course was mostly a review for me, and I didn’t get any real feedback on my proofs. Other students mentioned getting irrelevant feedback from people who didn’t seem to understand the material. It’s an interesting experiment, but it is certainly still in its infancy.
The wilds of the Internet: Regardless of how diligently textbook authors try to restrict answers to their questions from showing up online, some answers will leak out. As the saying goes, information wants to be free. Of course, there’s no guarantee about how accurate this information is. But with mature Q&A sites like Quora and Stack Exchange incorporating reputation, there’s a better chance of getting good advice.
When it comes to using questions and answers for active learning, competitive programming is an ideal environment for a particular type of programming practice. Contest sites provide plenty of questions (i.e., problem statements and test data) that, while they may not always be worded clearly, are good enough to satisfy expert programmers with a lot of practice time under their belts. While solving a puzzle for competition or practice, participants get the chance to come up with additional “questions” in the form of test data for flushing out bugs in their implementation.
In this scenario, the answers are algorithm implementations that are robust enough to provide correct output for all of the tricky hidden input data, and efficient enough not to exceed the runtime limit. Since participants have to come up with an implementation for each new question, their algorithmic programming skills are continually reinforced.
While competitive programming participants don’t get the type of code review feedback they might receive in a programming class or on the job, many contests allow any user to read everyone’s submitted code once the contest is completed. For a diligent student, this provides as complete an answer as one could imagine for the contest problems: solutions from a large group of expert programmers.
The key to active learning is finding a way to engage with the material you’re trying to learn, beyond just consuming it. One of the simplest and most widely applicable ways to accomplish this is through questions and answers. Learning to ask good questions has value in itself. But it’s also essential to seek out questions that experts have written specifically to enhance learning. For programming practice, you can think of a question as a set of requirements along with unit tests or test data. The answer to that question is a clean and efficient implementation that makes the unit tests pass, or produces the correct output given the input data.