Should we be using printed textbooks?
A couple of weeks ago a friend posted to Social media asking for a text book recommendation. As it happened, the one he had been using for his class was no longer going to be published. One of the replies was strongly against using printed text books stating that online resources are superior.
I thought this was worth exploring.
First thing worth discussing is cost. For public K12 students this generally isn't an issue. Schools receive (or should receive) funds for textbooks. Students sign them out at the beginning of the semester in each class and return them at the end. To be honest, I don't know if any of this is now being done electronically or not but the big issue is finding the right textbook. I wrote about that here.
At the college level, costs become an issue. Textbooks - be they printed or online can be expensive and even the rental price can be a reach for low income students. I've seen text books being sold for well over one hundred dollars for really no other reason than because they can.
Taking publisher greed out of the equation, I do believe that authors should be fairly compensated for their work so I'm not of the school of thought that all educational resources should be free but I'm also sensitive to educational costs out of control.
For the sake of this post, let's take all that out of the equation and just focus on textbook vs online resources and pretend the costs are the same.
The principal argument against textbooks and for online resources is that textbooks quickly become outdated while online resources are perpetually maintained. This might be true for fast changing APIs or rapidly evolving technologies like Javascript build systems but it generally doesn't hold true for the materials covered in many CS classes.
Take a data structures or algorithms text. While a standard text like CLRS has had multiple editions over the years, a single class won't cover the full text and the text is at its core, the same. That is to say that CLRS has easily been useful and appropriate as a class text for at this point, decades. The same can also be said for most algo and DS texts. The limiting factor in terms of longevity would really be implementation language and possibly programming style.
For data structures and algorithms, a printed text could also be superior to an online resource - online resources on these topics usually just present finished code and rarely developmental exposition which can be extremely helpful to a student. A printed text also has another advantage over even an online textbook - easier bookmarking and random access. You can't easily flip back and forth online.
What about programming language based classes. I recently looked over some older programming books I have. C, C++, Go, Clojure, Java, Javascript. Ocaml, Haskel, Lisp, Racket, and Prolog. While the books vary in overall quality from meh to great they'd all still be perfectly servicable as class texts. Languages just don't change that quickly.
Neither do most tech topics. Sure, you might get unlucky and purchase a text book right before a major change and there are a few cutting edge topics that you might want to avoid but by and large a CS text should give you five to ten years easy.
Now, this isn't to say that an online textbook can't be great or even superior in some ways. Online texts can be more interactive for instance and can be updated with new assignments and projects and the exposition can be easily updated if needs be.
All this is to say that both printed textbooks, online texts, and other online resources can all be great and can all be important and if cost isn't an issue, I think having a printed text can be a huge benefit to a kid - another point of view to complement the instructor. That said, due to cost, I ended up using online resources extensively over my last few years of teaching.
As a final note, for online texts, do check out Runestone - they provide a number of high quality online texts for free. They don't cover everything but for what they do, they have some great stuff.