Miikka asked me how I read a maths textbook the other day, and I didn’t have a better answer than “badly”. I’ve mostly tried to read textbooks linearly cover to cover, and this doesn’t actually work – I sometimes end up understanding the material, but it’s usually not until long after I’ve finished or given up on the book.

After some thought and experimentation, I think I now have a better answer that helps integrate understanding and reading immediately. It’s very much a work in progress, and I’m sure I will refine the process over time, but initial experience with it seems promising.

It’s designed along a couple of important principles:

- The goal is not, in fact, to read the textbook. The goal is to understand the material the textbook covers, and reading it helps you achieve that.
- Your obligation to the author ended when you bought the book. You may make use of it in whatever way you like, regardless of how the author intended it to be used. In particular you are under no obligation to read the material in the order in which it is presented, and you don’t have to read the bits you don’t care about.
- If you’re constantly making progress in the right direction, you will benefit even if you stop midway through the process.
- If it feels easy you’re probably not learning very much.

It’s very loosely based on some of the principles of active reading outlined in How To Read A Book, but they mostly don’t cover this subject so I had to invent my own techniques.

The technique we’re going to use is one of goal-directed learning. If we try to take in the entire textbook at once we’ll be overwhelmed completely (textbooks are large), so instead we repeatedly pick a goal and try to achieve that goal. You’ll end up essentially rewriting just enough of the book in your own words to understand the parts of the material that you need to achieve that goal.

A good goal is a theorem or an exercise (really an exercise is just a theorem with the proof omitted): You want to be able to prove the theorem or solve the exercise. For these purposes a proposition or a lemma is just a small theorem.

Pick one. It doesn’t really matter how. If there’s something specific you want to learn, use that. Otherwise, open the book randomly somewhere in the middle and scout around until you find something that looks interesting.

Now, get a large quantity of paper and a pencil or pen. First dedicate two sheets and create two lists: One is your Current list, the other is your Pending list. Items on the Current list are numbered, items on the Pending list are unnumbered.

The Pending list starts empty, the Current list starts with one item on it (numbered item 1), which is your chosen starting point.

Now, repeatedly iterate the following procedure:

- If every item on your Current list has a tick next to it, move an item from your Pending list to your Current list by crossing it off from Pending and adding it to the bottom of Current. If your Pending list is empty, stop. You’re done for now.
- Pick an item on your Current list that does not have a tick next to it. The highest number is usually a good default.
- Read the part of the book (only a paragraph or two usually) that describes that item.
- For any definitions or theorems you don’t currently know, add them to the Current list if they’re not already on it. If any of these were already on the Pending list, cross them off it. Once you’ve done this, go back to step 2.
- If you understand all the referenced items, start a new sheet of paper with the item number and its name at the top. Write that sheet (see below), then put a tick next to the item on your current list.
- Anything interesting you encounter in steps 3 and 4 that is not directly part of solving your current goal, add to the Pending list.

A sheet for an entry on your list depends on the type of item:

If it’s a theorem, the sheet is a proof of the theorem. You should write this out by hand. Try to prove as much of it yourself as you can. If the proof is complicated and you don’t feel it provides much insight into your current goal, add “Prove this theorem” to your pending list and instead just write out the statement of the theorem in a way you understand and treat the proof as a black box for now.

A sheet for a definition consists of a statement of that definition that you understand followed by the answer to two or three questions:

- What is an example of this?
- Why do we care? (This may be just “We need it for X on the list”)
- Why is this well defined? (Optional as this is often obvious)

At the end of this, you should have written a proof that you understand of the thing that you wanted to understand, and also picked up a significant chunk of the textbook along the way. Congratulations! You should definitely now take a break (to be honest, this process probably took you multiple days so you’d better have been taking breaks along the way anyway). When you’re refreshed, you can either decide you’ve got enough out of the textbook or pick another starting point. Try to pick one that is at least related to your last one so you can build on previous understanding.

### Worked Example

I am applying this technique to the combinatorial optimization textbook I got as a gift, and it seems to be helping a lot, thought it’s early in the process so it’s hard to say for sure.

For my purposes I picked “Edmond’s Matroid Intersection Algorithm” because it sounded interesting and I didn’t know what a Matroid was so it seemed like a good test. I’m in the middle of it still, so the following is a work in progress.

My Current list is:

- Edmond’s Algorithm
- Matroid intersection problem ✓
- Matroid ✓
- Independence Oracle ✓
- Circuit ✓
- Independence System ✓
- Proposition 13.4
- Lower Rank
- Rank Quotient
- Proposition 13.29
- Rank Function ✓
- C(X, e) ✓
- Theorem 13.12(b)
- Theorem 13.8
- Proposition 13.7
- Theorem 13.10 ✓

My Pending list is:

- Duality of Matroids
- Best-in greedy algorithm
- Worst-out greedy algorithm
- Theorem 13.19
- Theorem 13.20

How does it feel?

Well, it feels like a *lot* of work. But it feels like useful work. I think I have a decent grasp on what a Matroid is and why they’re interesting, and how we can work with them.

Also, understanding this book was *always* going to be a lot of work. The problem was that I wasn’t doing the work, and the great thing about this technique is that it’s given me a process which actually lets me do the work without feeling overwhelmed, because I can let go of the idea of trying to read the whole book and just focus on the specific goal and the process of getting there.

Once I’ve completed this section I’m going to turn my attention to the Simplex algorithm section, which is entirely different in that I *am* familiar with the Simplex algorithm but have never really managed to understand it to any significant degree. If this approach helps me achieve that then I’ll definitely regard it as a winner.

Pingback: Weekly reading post #4 | David R. MacIver