Today I'm really pleased to announce that have launched version 2.0 of our interactive computer science textbooks:
- How to Think Like a Computer Scientist: Interactive Edition 2.0 (CS 1)
- Problem Solving with Algorithms and Data Structures using Python (CS 2)
We first launched these books on our interactivepython.org website in May of 2012, after around a year of private testing in the classroom. Since then we have had 1.3 million page views by a quarter of a million unique visitors. Daily, we get around 2,000 unique visitors. Not bad for a site with zero dollars for an advertising budget.
What Makes these Books Unique?
These books are unique because they are interactive. We have developed a set of authoring tools that make it really easy to write an interactive textbook with many interactive features. We call these the Runestone tools. Some of the interactive features that are possible include:
- Codelens: Using the amazing power of the pythontutor.com tools you can step through examples one line at a time, forward and backward. While you are stepping through the code you can see variables and other data structures change values.
- Parsons Problems: For beginning programmers Parson's problems are like refrigerator magnet poetry. You can provide your students with the statements needed to write a program, but they must put the statements in the correct order.
- Inline Quizzes: Each section of the book contains some inline quizzes that allow students to check their understanding of the material. The quizzes have different feedback for each correct or incorrect answer that try to point students in the right direction.
- Online Homework: At the end of each chapter are programming assignments. In this new edition we have provided the answers to the odd numbered questions, and discussion forums for students to exchange ideas or ask questions about the homework problems. As an instructor, you can grade your students programs on one convenient page.
- Highlighting This is another much requested new feature. Students can highlight text using the mouse and the highlights magically reappear on any supported browser. In addition we will remember the students last location in the book and offer to return them to that position when they return.
- There are many other features but the best way to understand what we are doing is to actually have a look at our overview page, which shows everything I have mentioned here and a lot more in action.
Over this past year we have discovered that we serve two different audiences with these books.
- Instructors looking for a textbook to use in their own course
- People who are interested in teaching themselves some computer science and have found our books through google search, the Python wiki, or some other word of mouth source.
Textbooks as a Service
When we launched the site last year we decided to not only provide the books free and open for anyone who wanted to read them, but also as a service for instructors who wanted to have their own custom copy of the book where they could track their students progress, review their answers to quizzes, and grade their students homework. If you want to use our books in your class you are welcome to do so. You have two options:
- You can use a copy of either book as is with the order of the chapters just as they are on the books linked to above.
- You can try our custom interface where you can mix and match chapters from both books to create your own custom textbook.
Once you have created your own course then you will be able to see the assignments your students have completed right in the textbook. I find this to be very valuable as an instructor. For example if I have assigned the students to read and do the quizzes for a particular section, I can simply go to the quiz question and click on the 'Compare Me' button. As an instructor I will see a summary of the answers my students gave, as well as the details of the answers that each student tried.
Supporting the Independent Learner
Perhaps the biggest surprise of this project is the number of people that have found one of the books through google, and are simply teaching themselves to program. We are hopeful that some of the new features we have added will help foster a community of learners so that people just learning to program can talk to others in the same situation. Some things we hope are particularly helpful include:
- Answers to odd numbered questions. This was probably the number one request I got through email all last year. How do I know if I did it right? We decided to risk it and provide the answers, but only to the odd numbered problems. In addition a student must try to answer the problem at least once before the answer becomes "unlocked"
- Discussion threads for homework problems. Again this may seem like a risky move where students can just publish their answer and others can copy. But, what we are hoping for is that students will see that there are many ways to get to the "right answer" There are different approaches and programming styles that can be used to solve the same problem.
- Compare Me Although we aren't sure about the title on the button, the idea is that after answering one of the quiz questions a learner can check on their overall 'grade' for all quiz questions, and see how their answer compared to all the other learners. We haven't gone so far as to give out badges, but we think this is a nice intermediate approach.
The Runestone Tools
The books above were built using our Runestone Interactive toolkit. These tools are freely available on github. If you want to write your own interactive book, or even just use the tools to create some interactive labs for your students you are welcome to do so. You can write your materials in an easy to use markup language called restructuredText and add examples or quizzes using very simple tags. Complete documentation for our extensions to restructuredText is provided on the website. In addition to our own books, the team at Harvey Mudd College has published CS for All another introductory textbook using our tools. I know of at least two other books in progress!
If you are interested in following our development or getting involved You can do so in several ways:
I am grateful to the many people who have provided us with feedback over the last year. And I am especially grateful to the ACM SIGCSE social projects committee for providing me with a special projects grant that allowed me to work with a student (Isaac Dontje Lindell) this summer. He did a ton of work and will be graduating next year. You should hire him. In addition this project relies on many open source components which I will mention and link to below.
- The original text for How to Think Like a Computer Scientist comes from Allen Downey, Jeff Elkner and Chris Meyers. We have modified it a lot, but without a starting point for us to experiment with our interactive ideas this project never would have taken off.
- The Problem Solving with Algorithms and Data Structures text is published as a paper textbook by Franklin Beedle and Associates. Without the forward thinking of Jim Leisy this book would be stuck. Thankfully Jim freed us to use the text in an interactive form online.
- Mark Guzdial, Barbara Ericson and the rest of the CSLearning4U research group at Georgia Tech have provided questions, assessments, and many other features and ideas.
- The Activecode examples are made possible by skulpt
- The Codelens examples are made possible by Philip Guo and his pythontutor.com
- The look and feel of the book is based on the bootstrap templates
- The system that builds the website from source is called Sphinx and is really the backbone of the system that allows us to write our interactive extensions.
- Ville Karavirta wrote the original js-parsons library and Mike Hewner integrated it into the Runestone Tools.