Reading the Book

The Book Sucks

Once I was approached by a student, who was taking a discrete math course, and he said to me "Is there an easier book I can read? I don't understand this book". I told him, no, that there isn't a better book you can read. As discrete math books go, that was about as easy as they come.

Each year, departments run evaluations, and each year, nearly every computer science books, especially in early courses, get poor reviews. Why do books always get bad reviews?

Let's face it, technical books are hard to read. You're not reading a novel (and realize, novels are usually meant to be fun to read). You're not reading a newspaper. You're not reading a magazine. You are trying to learn.

If books were so easy to read, then you wouldn't need the course.

However, books aren't written in a difficult manner just to make your life tough. Books are also tough to read because people aren't patient. Does it irritate you to have to sit still and read for more than 10 minutes? Does it bother you that the book can't answer your questions? Do you prefer to watch television over reading books? Would you rather see a movie rather than read a book?

People major in the sciences because they don't like to read and analyze literature. But if you were a math major, or if you were an engineer, or a physics major, you would have to read a book. The book would have equations. The writing would be tough to follow. It would be a pain. Computer science books are far easier to read.

And yet, they're still difficult for the average person.

Ultimately, learning to read a book is like riding a bicycle. You simply have to be patient. You have to be willing to read a page every 5 minutes or slower. Most people don't like that kind of pace.

Why Learn To Read

You might wonder why you should learn to read. Suppose you are working at your first job. Your boss says I need you to set up Oracle server or write a C# program. You think "I haven't the first idea about Oracle servers, or C# programs". So you tell your boss "I don't know anything about that". She tells you "here's a book, read up on it".

Your ability to learn new things on your own involves learning how to read a book or read a webpage. Sure, you can ask friends, but there's not always going to be a teacher out there to explain everything to you. Your boss is not always going to sit and explain things.

While many students learn well from listening, they learn poorly from reading books. Learning from reading books is an essential skill. It may take you a while to learn how, but you should learn.

Tips for Reading

There are two goals you should have when reading a technical book. First, you want to get the big picture of what's going on. If someone said "What was section 2.1 in the book about?", you should be able to summarize that chapter in your own words. If you can summarize what happened in your own words, that's learning.

You want to learn, learn to summarize. Learn to say what the book says in your own words.

Think about this. Who's the person that learns the most from a class? Is it that brainy person that got an A+ on the exam? That person learned a lot. But the teacher, if they're any good, learns more. When you teach something, you can't learn something half-heartedly. You are trying to explain it to the students, so it needs to make sense to you.

For example, you may think you know something, but just try to explain it to someone. If you fumble over your words, if you scratch your head, if you say "I know the stuff, I just can't explain it", then you realize that you could know it better.

A lot of learning something is organizing it in a way that makes sense to you. You really, really learn something when you can explain it to a friend, because any doubts you have need to be cleared up. You may be forced to generate explanations on your own.

OK, so first step to reading is learning to summarize. I suggest you get a piece of paper, and summarize what a section of a book was about (a chapter is too long), and write it down in a page or less.

Second step is aimed for exams. What kind of questions can you solve on an exam? Ultimately, if you're in a class, you're taking exams. If you're taking exams, you need to be able to answer questions. If you want to answer questions, you need to come up with exam-like questions.

You can make up questions by testing yourself on the basic facts of the book. You can make up questions by looking at the questions already in the book.

The goal is to learn how to answer those questions.

Take Notes!

It may seem odd, but one very good idea as you read, is to take notes. What kind of things should you write down?

What do I mean by silly questions? For example, suppose you're reading some fact. You might ask "Do I really need to know this fact?". For example, a book might be explaining a programming langauge. A good question might be "write a program that does so-and-so". However, as a reader, you might never think "oh, i need to learn how to write a program on an exam?".

Books are Packed Full of Stuff

You'd be surprised at how much information a book has. You'd be surprised how many questions that you can ask from a book.

I'll give you an example from English. Suppose you are reading a book. The book describes the main heroine, what she looks like, what she wears, what kind of person she is, and the plot surrounding her. Suppose someone asks you "What was her hat size?". You might think "Was I supposed to learn that? That's a stupid question. It's unfair". It may be, but it illustrates that a book has information that you may be skipping over, and not really understanding.

You may be asked to compare her actions with actions of similar women in books of the era. Again, this asks you to think about the book in more than just the information contained in the book. It asks you to compare it with other books of the same time period.

What's the analogy in a programming book? Perhaps you need to read the examples from the book, and go to a compiler to try it out. You'd be surprised at the number of people who read a programming book and don't even bother to try out the examples. And as long as you're writing examples, you might as well try some variation of the examples, asking yourself "Can I write a program that does this?"

Why do I point out the fact that books contain lots of information? Because people routinely skip over lots of the information. Have you ever a read a book with a word you didn't understand? Did you look up that word in a dictionary? Many people skip it over, because the work it takes to look it up it too much. Yet, they might gain that much more out of reading by looking up words in a dictionary.

For example, it was said Malcolm X, who spent time in prison, spent a lot of time reading words in a dictionary to improve the words he could use while giving speeches.

Books Have Mistakes

Are books perfect? Are you perfect? People write books. People edit books. Nevertheless, mistakes occur. Sometimes it's nice to have a book written informally for a class (like these set of notes). You know there are going to be mistakes, so you look out for them. Your ability to find mistakes shows a true understanding.

I've seen people read books as if they were a religious tome. Every word and every phrase must be true, even if it doesn't make sense. Books often have errors, and learning that what you're reading is an error means that you're learning to read well.

For example, when I read a book, sometimes I know what the author is saying is incorrect, or a little bit wrong. Or that they could have explained the idea in a different way. Most published books are edited well enough not to have many errors.

Recently, a student questions her understanding of big and little endianness in a 411 book. She couldn't understand why the book's answer was what it was. After asking the teacher, who then consulted with others, it was concluded that the solutions were wrong, and her understanding was correct. These things happen. Be happy when you find an error. It shows that you are beginning to understand what you read.

Think for Yourself

Computer books are technical in nature. Therefore, they offer few opinions. Nevertheless, the opinions exist. How many books on Java tell you how wonderful the language is? How many books on Java tell you how great object oriented programming (OOP) is? Do you really think OOP is great? Why? Have you really tried the alternatives?

Most people who read the newspaper realize that newspaper articles have bias. In the US, we like to think reporters have no bias, but of course, they do. In Europe, the biases are much clearer.

For example, some claim media types are too liberal. Some say they are too conservative. Some say news of a certain kind never shows up. These readers are thinking for themselves. They don't necessarily agree with what they read.

It's much tougher to do this for technical books. You really need to read a lot of different books with differing opinions to get ideas about the book.

Learn to think for yourself, and you are really learning.

Read Another Book

Not all books make sense to all people. Some people get several books and try to read them all. If you have money or a library card, this is a good strategy.

Conclusion

As you read a technical CS book, I suggest the following advice.