I haven't used textbooks in my classes for a number of years. I find that generally it is hard to get students to read them unless you assign homework questions. And I'm not a fan of that method. What I have been doing is making my presentations available online. Students do review them but they are light on detail. Recently I have started writing my own books. They are short - about a third the length the typical textbook - and I am hopeful that they will actually be read.

What are others doing? Are you using standard textbooks or no textbook at all or do you write your own materials of some sort to share with students?


12 Answers 12


This is difficult to answer in general. I have personally used a lot of different solutions depending on the course. For low level courses it may make less difference, but maybe not. I still have many of the text books from fifty years ago that I considered important to my development, and have consulted them.

There are courses in which there are truly classic books: The Dragon Book for compilers, for example, which is dated but still valuable. It would seem a mistake to me to try to teach a class in Scheme without at least one of the two classic books. But there are other courses in which there simply are no textbooks, the material being too recent or in flux.

One reason for not using your own materials exclusively is that your students get to see a view other than your own. That seems to me to be a good thing in itself. Some of your students might use the exercises or worked examples in a textbook for review and exam preparation.

If you intend that your materials won't be valuable to them after they leave your course then informal materials are fine, in my view, but if you want them to have a resource that they can use later then make sure that it is one that will stand the test of time.

I also used extensive materials of my own, but mostly as a supplement to more formal materials. Like you, I seldom referred to the formal text, but it was available to them whenever I was not, including after the end of the course. Think about your student's future, not just their present.

It might be enough, in some courses, to provide an annotated bibliography including, especially, classic works. But if your students aspire to be professionals in the field (academics or not) then they should build up a library starting in their early years. I'm guessing that you have done that yourself, as I have.

There are, of course, situations in which the cost of modern textbooks can't be ignored. Providing low cost or free resources may be essential in these situations.


In my experience, students will try to avoid reading even a single full page if they can get away with it. It has also been my experience that most students don't really know how to learn from text, so that they often need a guided activity that utilizes it. This isn't merely to get them to engage with text in the first place, but also to focus their efforts while reading it. Many students won't learn without this kind of guidance.

Asking for written summaries or short presentations before chapter questions can also help get students to learn this way. And, as silly as it sounds, reading instruction can be subtly provided at the high school (or even university) level by asking students to identify two or three of the most confusing parts of the text, with a promise that you'll go over any section that confused a sufficient number of kids.

  • $\begingroup$ As someone who had read all the Tolkien books, Atlas Shrugged, and A Connecticut Yankee in King Arthur's Court by the age of 14, all I can say is, I hope this internet thing turns out to be better than reading books. Because the folks who built the internet all learned from books, if it doesn't work, it will be a one-way trip. $\endgroup$ – Scott Rowe Sep 24 '18 at 21:25

My school district does not buy textbooks anymore. That has been a policy for at least the last five years. I do have a very old set of books for Programming I that I will refer to myself, and that I will check out to students who request one, but they rarely ask for one.

I would guess that this move to a "textbook-less" world will accelerate. School districts will suppose they are saving money by not buying books. They will reason that with everything online these days, why do you need a book?

But we still need teaching materials. The teaching materials provided by my state are typically Powerpoints of varying degrees of quality and effectiveness created by a contractor (sometimes a teacher) who may or may not have known the content. I often find myself revising and correcting them, or throwing them out completely and starting over. I also have to create exercises, study guides, and tests for my courses as those are not provided. The downside to all this creating is that I spend an inordinate amount of time working on course materials outside of class. The upside is that I know my materials very well since I made them.

Another positive with the Powerpoint method is that it is very easy to "chunk" lessons into manageable pieces. I find that many chapters in programming textbooks are extremely long and cover way too much material. By the time I get to the end of the chapter, I've forgotten what we even started out discussing.

Whether you are using a book or not, it is important to assign reading material from other sources to be accessed outside of class. I often include links to charts, tables, or articles in my lessons labeled as "recommended reading". And I tell my students "it is recommended you read this because you will see something from it on a test". Underhanded, yes, but many of them will be motivated to look at the assigned material just for that reason.

I also give my students a list of recommended books to consider for purchase but make it clear they are not required. Even so, you'd be surprised how many actually end up buying one or more.

I miss having a book because I love books. But are they cost effective? Do students really understand the gravity and importance of what and why they are studying? Do they use and cherish books? I'd say at the high school level most don't.


While I like and upped Buffy's answer, I think there's a bit of a pattern that I follow that I'd like to share.

Unless hardware is specifically involved, or the course is heavy on theory, I prefer to avoid textbook use.

When I think a particular book will be useful, I may add it to a recommended reading list.

For Courses with Emphasis on Hardware:
If there is an emphasis on hardware, it is useful to be able to consult a reference. Diagrams tend to be very useful when discussing hardware implementations or methods. If I use a textbook, then the students have a reference they can consult, instead of just scurrying around the net for diagrams that may be incorrect due to poor google-fu.

Additionally, if a textbook is used, I don't have to worry about looking up copyright info for every image I use or distribute. Often this isn't a big deal, but it's one less thing to think about.

For Theory-Heavy Classes:
Perhaps theory isn't the best term, because in programming, the theory is so practically useful it feels almost wrong to use the word...

The long and short of it is that some concepts cannot be contained by a block of code. There are some texts out there, written by mountain-top CS gurus, that in a few sentences illustrate concepts that can quite literally change your life, your professional life at a minimum.

These concepts are best learned from those texts, and rather than beat around the bush, at least recommend them.

But do you actually need to use them?
After all that, you don't really need to use them.
I've seen almost every scenario. The class where there were some core concepts that code examples themselves could not contain, where there was no textbook. Students asked for a recommended text, to help them learn the concepts.

I've seen scenarios where there was a textbook, but the course was overly results-driven, concepts were glossed over, and textbooks were ignored and sold off.

Myself, personally, as a poor student, sold a textbook only to regret it a few months later, and I ended up buying it again. That's how important that book was to me.

Not all your students will appreciate a textbook, so perhaps make it a recommended read instead of a hard and fast requirement of your course, then supplement with your own digital notes.

  • 2
    $\begingroup$ You never got properly greeted when you joined us in January. Welcome to Computer Science Educators, and I hope we hear much more from you. $\endgroup$ – Ben I. Mar 5 '18 at 14:27
  • $\begingroup$ @BenI. Thanks! This is an interesting channel, I hope it thrives. $\endgroup$ – Gorchestopher H Mar 5 '18 at 17:40

We have a class set of textbooks. When I started at this school I was told that I needed to check them out and use them. I talked them down to only issuing me half of the class set and one book went between each pair of computers. They've been in the storeroom for the past 2.5 years.

The first year we also had codes to give out to students so they could access the same book online at home. I handed out codes to every student - about 125 of them. At the end of the year, about the time the district was deciding if they were going to purchase online codes for the next year, I polled my students how useful they found the online book. 3 out of 125 had gone home and created an account with the code. 1 of those 3 ever logged in again after creating the account. I didn't hand out codes the next year.

Kids are sitting in front of a computer. If they need something for reference it's easier to Google it than to try to find it in a book.

I also think that using online resources, especially ones that I don't curate, gives them the chance to work out what resources are valid and which are not. When I have used a textbook students tend to take what's in the book as the gospel; that it's the only way to do something. If they find something online they're much more likely to doubt it and work through whether it's actually a valid resource. Not directly a CompSci skill, but a really good skill to learn.


Requiring a book makes sense when:

  • The course is big enough, or vice versa, the book is small enough. If you plan to use 1/10 of the book in your course, maybe you should avoid using a book, or you should search for a smaller book
  • The topic is well delimited within the scope of the book. There are courses too broad for a book, especially in our field. If you need 5 books to teach your course maybe it's better if you "roll your own"
  • If the topic is new, the book should be new as well. You can't teach C++ if your book doesn't teach at least C++11. You won't be up to date with the industry at all)
  • You will use it! I hate when they want us to spend +$60 dollars on a book used once in a while. If you require a book in your course, assign pages to read, read it together, refer to it... actually use it

You could start thinking about that first. If you can find a good book for your course, require it, because very often students won't remember/didn't have time to write down/didn't write down becase they were slacking off/etc. what you were explaining to them. A book is also fashionable. It's much more "appealing" reading a well written book than a bunch of essentially copy&pasted notations on a piece of paper (at least, IMHO).

Another thing could be that requiring a book could help the best students to deepen the topics they are interested in. Example: you require a book on "Design Patterns", you will cover a few of them in your course. An interested student could learn even more if he/she is curious about the ones you didn't cover. Or maybe your students will have to do a project where argument X is present, and they remember they had a book covering X.


I have been teaching CS/programming for 30 years and I have always had a textbook of some kind for the kids. But the book is only for reference, not for planned reading. I use only free textbooks (they are out there if you look) and now most are digital. I find most textbooks are strong on syntax and weak on program design. I do not care about syntax because I have no idea what language the kid is going to have to work in in college or job. I care about design and learning a language quickly by finding and understanding how to read references.


Depends on how you define textbook, the subject, how many students and if it is a custom made class for a single student.

Since I work with high school students if the class is a group of students learning their first programming language then no I would not use a regular textbook as I have to agree they won't read it unless it helps them for a quiz or test. What I do use for teaching them Python 3 is How to Think Like a Computer Scientist: Interactive Edition. I encourage them to read the book on their own time but most don't. The best thing about this book is that it is interactive in that the students can run the code from in the book and you can customize the book to your needs.

If the subject is more advanced and there is a standard book that everyone uses then yes I would use a textbook, e.g for Analysis of Algorithms the standard is Introduction to Algorithms by Thomas H Cormen; Charles E Leiserson; Ronald L Rivest, or Prolog Programming for Artificial Intelligence by Ivan Bratko

If the class is a custom class and the subject is so highly specialized that no good book exist then I would use other means. For teaching Minecraft Modding I used an online tutorial and a YouTube video. Yes there is a book or two on the subject but they are out of date already.

Also with custom classes I use inter-library loan books to prep the class and review the material out there. The days of browsing the book store to learn something about programming or purchase a book on-site are long past and while there is the internet, the signal to noise ratio on some subjects just is not worth the effort when borrowing books works better. I typically have to wait a week for the books, but the wait is worth the return.

As for the AP Java class see Java Review for the AP CS A Exam

The e-books I referenced are from Runestone Academy.

On those special days we play puzzle video games, see other answer for list of specific games.


I prefer to use Open Educational Resources (OERs) for a few reasons, but both "roll my own from multiple resources" and "pick a single book - mostly".

The courses I teach most often (intro to linux admin, network services w/ linux) cover a lot of different subjects, so for those it is a "roll your own/collect resources" situation, simply because there aren't any books that do a fantastic job of Explaining It All about system installation, use, and management, networking, and multiple network services (dns, dhcp, samba, http, LAMP, email).

When I've taught single-subject courses (intro to sql, web programming w/ php and sql, intro to java) I've selected single books, but I've made sure that they were either Freely available or available free of cost in the libraries' (college and local county) Safari subscriptions. And even then, I still reference other available materials including specific sub-parts of some chapters from other books in the Safari system.

I think using OERs and creating your own collection of resources increases quality. Using freely available resources I can point to what I consider to be the best explanation(s) or example(s) of concept A, even if that resource has nothing on concept B and poor information on concept C. And I can point to the best resources for concepts B and C respectively.

And it certainly reduces costs for students. I remember having to pay $400 for books for a single networking course where the resale value was close to zero due to the constant change of technology and the way courses were offered at my school. And even with the Internet in its infancy ('97/98) I was able to find better explanations online than what the book provided.


I work as IT teacher since four years ago, in all this time I haven't used any kind of book for it(maybe for the same nature of the subject)

These are my reasons for not using it:

  1. Cost is not accesible for the mayority of my students
  2. all the topics are availables on platforms like coursera or even better platforms like khan academy
  3. books are seen only an extra cost for the parents

What happens when I need my students study some specific topic?

  1. I recommend specific Youtube channels
  2. I create own material for them on PDF format
  3. My final results (theoric and practice) are better than my other colleages

Books are good if you have a structured plan to complement your course with them, for instance you give an introduction about specific areas and the book gives more theory and exercises to reaffirm


Wow. I feel old. Trying to imagine "the once and future world" without people reading books, especially textbooks. I guess there was a golden age in the past century where books were distributed, read, referred to, and useful. Since that is how I learned - with knowledgeable humans in short supply and no computer resources whatsoever - I have a hard time imagining a subject taught without textbooks. I have always leaned heavily on them when I taught, including the accessory files and question banks. Maybe that is why my teaching failed: people don't read books now? Why would they not want to learn from an expert though?

People have learned without textbooks, or often even being able to read, for almost the entire time there have been people. So it is time again to teach by demonstration, mentoring and especially apprenticeship.

If a textbook for my course did not exist, it would be necessary for me to invent it. I simply cannot see any other way to collect the relevant knowledge together in an organized way. Put the textbook online, in the form of slides or a Learning Management System, but it would still be there, a linear sequence of information that will not change or get lost. Even if people cannot read, there could still be a set of images. No 'textbook' == no learning, because people do not retain everything the first time they hear it.


If you teach carpentry, your students will usually also learn to swing a hammer (even if it's not explicitly part of the curriculum). However, one of your students has a metal hand with which they can easily hamer a nail in a board; and as a result they do not use the hammer and instead use their metal fist.

Should you fail this student for not learning to use a hammer, if "using a hammer" is not explicitly part of your curriculum? I say no.

A textbook is a tool, just like a hammer. If your curriculum explicitly includes "how to read a textbook", then reading a textbook can be graded. If it isn't (which I really hope it isn't), then you shouldn't force students to read the textbook.

They should be graded based on their results, not what they did to used/achieved these results.

In my opinion, this counts double for programming, as coming up with your own solution, while not always the best appraoch, is an invaluable skill to have. Many programmers I know are people who inherently figure things out on their own.

Provide the books, suggest that they be read, stress reading the books when a student isn't getting it, but don't require them to be used when a student already understands the subject matter.

Some teachers tend to give points for effort when the outcome is not good. For example, a math teacher may see that your answer is wrong, but your general approach was correct and you made a minor error somewhere. When a student scores a low grade, you could similarly award them some points for having done their due diligence, e.g. shown that they knew which pattern to use, or that they clearly have studied up using your textbook.

However, when the answer is already correct, and the method (read a book/use a particular approach/...) was not explicitly part of the question, then you cannot fail the student simply because they provided a solution that is different from the one you expected.

  • $\begingroup$ I agree, but the import of the question was whether textbooks or self-created 'books' are currently a useful resource for CS teaching. No one was saying that students should be compelled to read them. For anyone who thinks that they "already understand the subject matter", perhaps they should consider what Richard Feynman said. No one understands anything, they are only just starting to learn it. Anyone who doesn't want to avail themselves of a ready collection of information to learn more is pretty short-sighted. $\endgroup$ – Scott Rowe Sep 24 '18 at 21:19
  • $\begingroup$ @ScottRowe: My answer suggests that providing the books but not requiring them is a good approach, which does answer the asked question. The rest of the answer is explaining/justifying that conclusion. $\endgroup$ – Flater Sep 25 '18 at 6:05
  • $\begingroup$ @ScottRowe: Also, not everyone learns from reading for reading's sake. There's a difference between having a book as documentation should you need it, and using the book to actually learn the basics. Especially in IT, you'll find that a significant amount of learners are hands-on learners, who generally only visit their resources when faced with a problem they can't solve (or are interested in finding a better solution). $\endgroup$ – Flater Sep 25 '18 at 6:06
  • $\begingroup$ Sure. When I first sat down at a PDP-11 terminal or Apple ][ 40 years ago, there were no textbooks available, it was all hands-on. But you can never type fast enough to make all the mistakes other people have already written about. Once people have seen all the walls, they will want to read how to get out of the maze. I hope. At some point, one would just reach for the books first thing. Or, not. $\endgroup$ – Scott Rowe Sep 25 '18 at 11:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.