Thursday, January 25, 2018

Thinking About CS Textbooks

There are a lot of subjects where I found textbooks to be very valuable when I was a student. History for example. One of my degrees is in Sociology where I read all the textbooks cover to cover. In Computer Science I tended to use textbooks more as a reference – a place to look things up – more than as something to read cover to cover. I’m sure that is the same for some but very different for others.

I’ve never really figured how to get the most out of a text book while teaching computer science. For the most part I haven’t used them at all. I do have a lot of materials I make available to my students though. They have copies of all my PowerPoint presentations for example. Lots of them have information in the speaker notes. I also link to videos online. Some I’ve recorded and some by other people. Code.Org has some great ones for example. ( I also write up some “how to” for things I don’t necessarily cover in class. This seems to work ok but lately I have been thinking I need more.

As I see it one of the problems with textbooks is that students don’t read them. Flipped classroom (read this at home or watch this at home and we’ll talk about it in class) seems to work for some people but I’m still skeptical. I’ve heard students complain about having to read 150 page books over a months time and wonder how likely they really are to be reading a textbook assignment. Even if they do, what do I have them read?

What I have decided to do is to write my own book. Now I have written traditional textbooks before. I’ve even gotten some good reviews on them. But for now I wanted something different. I want something short and to the point. Something as a reference or a “catch up” for missed lectures. So not pages worth of step by step hand holding. No pages of summary questions or exercises to assign. Just short explanations of concepts with some sample code to read.

I’m starting with my freshmen class. About a third of a semester is spent on learning some basic Visual Basic programming. We don’t got very deep or cover too many concepts. Variables, if statements, and loops – that’s about it. Including title, table of contents and index I’m at about 45 pages. I think that is about right.  Of and about a third of that is stuff I don’t lecture on because they are not core CS concepts but things students can use in their projects to make them more interesting. That way when I get the usual “Mr. Thompson how do I use a timer?” or “Mr. Thompson I want to use images in my user interface” question I can send them to the book. I have half a semester before I can try it out so I can tune it a bit.

For my honors programming class (we use C# there)  I am shooting for between 75 and 100 pages. That is a full semester and we cover a lot more material. Once again I see this as a backup and not my main teaching tool. I’ve got the topics for the first quarter just about finished so maybe I can use that this semester as well.

Now I am wondering how others use textbooks. It’s not a conversation I hear much about. Maybe I would have learned that if I had gone to school for education and not computer science? One of these days I want to attend a birds of a feather discussion about using textbooks.


Garth said...

I always want a textbook. But like you I use it almost exclusively as a reference or guide. I have never been the kind of teacher that teaches the chapter then does the assignments at the end. (I do follow this in some math classes I teach but I do not like it.) I prefer to give a problem then suggest a place to look for solutions. Programming is the perfect platform for that strategy. "Here is what we want to do, now let's figure out how to do it." The students and I learn so much more in the search for solutions than in the solution itself. Having a good textbook is such an excellent aid. Staggering around the internet can be a pain and some of the solutions are nonsense.

I am not a big fan of videos. I use them as a last resort (sometimes they are the only thing available) but videos are difficult to use as a reference. I am working through a Unity video series right now ( If I forget what I did yesterday there is no good way of looking up small bits I missed other than fishing through the video. A textbook is much faster. I would love to have transcriptions of these videos. A couple of years ago I actually had a student transcribe a video to text, screen shots and all. So much easier to use.

Getting the students to read the textbook is almost impossible. The stats class I teach has a great textbook. It is simple and explains well. They will not look in it. It happened today. A student asked how to do a particular problem. "Did you look for an example in the book?" "Nope. Can't you just tell me?" College is going to be a revelation.

dan said...

I have been going through the process of creating a textbook too. In my situation, however, my school division is giving me a bit of time each day to work on it. In my neck of the woods (Saskatoon, SK, Canada), there are recently a bunch more people being asked to teach Computer Science, even if they don't have a CS background. The textbook project I'm working on is intended to give these people a reasonable plan for a high school intro to CS course. I'm using the Runestone Interactive toolset, which allows for running Python in the browser, and in the later parts of the course, using some built in unit testing (a la Coding Bat).

It is certainly still just in draft form, but you can find it here, if you'd like to take a look:

Alfred Thompson said...

Looks great Dan. Thanks for sharing!

Mike Zamansky said...

This is a textbook example of a CS Ed blog post.

Or is that an example of a Textbook CS Ed blog post?

In either case, my thoughts:

Also, Dan -- really great stuff!!!!!!

Unknown said...

Using textbooks makes life easier for students - in some some cases I just skipped classes and learned the subject from the book. When there is no book nor any handouts, all you have to rely on is your own notes. Some subjects require more exercising than studying to master.

The good teachers presumably teach what they see as the important points of their topic and leave the students to read the background from the textbook.

Don Bruey said...

Since you don't want a soup-to-nuts textbook, you could consider a "cookbook" approach. Like sample algorithms/flowcharts/code samples, FAQs like "how do I add an image to my UI", quick references to language features (cheat sheets), etc. Trying to organize it too much might lead to the thick book you're trying to avoid. A hodge-podge of helpful hints and examples would probably bring more value to your students, and if it's in electronic form, you can always add more or remove obsolete ones.

It's always fun to read about your classroom adventures and your quest for the ultimate teaching tool and processes.