Fifteen years ago I began work on an open textbook called "How to Think Like a Computer Scientist". Having worked on Summer curriculum projects in 1993 and 1994 organized by the visionary supervisor of Mathematics in Prince George's County Public Schools, Dr. Martha A. Brown, I had already seen both the power of collaborative educational materials creation as well as the show stopping limitations caused by the inability to effectively reproduce and distribute the end products of such effort. The World Wide Web was just beginning to appear at that time, and I began dreaming of the day when educators would be able to use it to create and share educational resources. The non-hierarchical nature of such collaboration would be liberating, I imagined, freeing the creative spirit within teachers who participated and providing direct educational benefits to the whole world. About 6 years later I had the opportunity to test this idea in practice, and now about 15 years after that I can look back and describe how it worked.
I've just returned from Pycon 2014, the 12th annual community sponsored conference of the international Python community. I attended the the 2nd annual education summit this year, and inspired by both the summit and the graduate class I'm taking this semester, I spent some time online researching the availability of open textbooks and other open educational resources, which appear to be proliferating at a sizable rate of late (Open educational resources, n.d.).
While poking around these materials I came across a new interactive version of How to Think Like a Computer Scientist (Miller, B., Ranum, D., Elkner, J., Wentworth, P., Downey, A., & Meyers, C. 2013). I was aware this existed since Brad Miller emailed me when he started working on it back in May of 2011. Unfortunately, I haven't been teaching Python during the regular school day for the last 5 years, so I didn't have time to get involved with this project, and it slipped from my mind. Rediscovering it now, I was amazed. As the overview page for the tools that Brad and David are developing illustrates, they are extending the document publishing tool we use in the Python community to include sophisticated assessment item types as well as visualization tools (Miller, B., & Ranum, D., 2013). They have packaged their work into a project called The Runestone Interactive Library (2014), and have a collection of books already using their tools. With the prospect of the STEM program for which I changed jobs 5 years ago finally emerging, it is time for me to get back into working on Python resources, and I am delighted to see how much progress has been made developing and enhancing the free tools to do this while I was away.
Looking back, I am struck by how much I have benefited from contributing to How to Think Like a Computer Scientist. I suspect that most of the other contributors would echo this sentiment. Here are some of the different versions of the book together with the people who worked on them:
1998: Original Java version by Allen Downey
1999 - 2002: First edition of the Python version translated from Java to Python by Jeff Elkner. Professional Python programmer Chris Meyers joined shortly thereafter. Allen published this version of the book through Green Tea Press (Downey, A., Elkner, J., & Meyer, C., 2002).
2002 - 2012: 2nd edition of the Python version, rewritten to be more "Pythonic" by Jeff and Chris (Elkner, J., Downey, A., & Meyers, C., 2012, April 12).
2012: Prof. Peter Wentworth creates the third edition of the Python book using Python 3. (Wentworth, P., Elkner, J., Downey, A., & Meyers, C., 2012, October 1). He has since created a version of the text using C# (Wentworth, P., 2014, March 7).
2013 - Present: Brad Miller and David Ranum create tools to make an interactive version of the book (Miller, B., Ranum, D., Elkner, J., Wentworth, P., Downey, A., & Meyers, C., 2013).
Without Allen Downey's original version of the book using Java, I would not have been able to make the switch to Python in my classroom back in 1999. Because I did, Allen was introduced to Python (by "reading his own book" as he said in a preface to a later work). Allen is now a regular author of books published by O'Reilly but still available as free textbooks, including his "Think" series. Several of the books in this series, including Think Python, Think Complexity, and Think Bayes, use Python. When Peter Wentworth wanted to try Python in 2012, he benefitted by having a free book to start with together with the right to modify it to suit his purposes and the tools to make it easy for him to do this. When he wanted a C# book a few years later, he could use these same tools and his own early book as a foundation to start from. When Brad Miller and David Ranum wanted to experiment with building new tools to make textbooks more interactive, they were aided by having a free textbook to which they could apply their work.
As I prepare to return to teaching computer programming and start working on a new textbook aimed at aspiring web developers (2014) , I will borrow from and build on the work and ideas of each of the other contributors to this project. This blog post has actually only scratched the surface of documenting how and where this book has been used. It has been translated into many other languages, both natural and programming. It has been read by people all over the world. I've received emails from people as far away as Korea telling me how much they appreciate this book being available to them online. I'm glad for this opportunity to write some of this history down, and wish I had the time to dig further, but it is more important now to get back to work on the book.
ReferencesDowney, A., Elkner, J., & Meyer, C. (2002). How to think like a computer scientist: learning with Python. Wellsley, Mass.: Green Tea Press.
Elkner, J., Downey, A., & Meyers, C. (2012, April 12). How to Think Like a Computer Scientist: Learning with Python 2nd Edition. Retrieved April 18, 2014, from http://openbookproject.net/thinkcs/python/english2e/
Elkner, J. (2014). Beginning Python Programming for Aspiring Web Developers. Retrieved April 18, 2014, from http://www.openbookproject.net/books/bpp4awd/
Miller, B., & Ranum, D. (2013). An Overview of Runestone Interactive. Retrieved April 18, 2014, from http://interactivepython.org/runestone/static/overview/overview.html
Miller, B., Ranum, D., Elkner, J., Wentworth, P., Downey, A., & Meyers, C. (2013). How to Think like a Computer Scientist: Interactive Edition. Retrieved April 18, 2014, from http://interactivepython.org/courselib/static/thinkcspy/index.html
Open educational resources. (n.d.). Wikipedia. Retrieved April 18, 2014, from http://en.wikipedia.org/wiki/Open_educational_resources
The Runestone Interactive Library. (2014). Runestone Interactive. Retrieved April 18, 2014, from http://runestoneinteractive.org/
Wentworth, P., Elkner, J., Downey, A., & Meyers, C. (2012, October 1). How to Think Like a Computer Scientist: Learning with Python 3. Retrieved April 18, 2014, from http://openbookproject.net/thinkcs/python/english3e/
Wentworth, P. (2014, March 7). Think Sharply with C#: How to Think like a Computer Scientist. Retrieved April 18, 2014, from http://www.ict.ru.ac.za/Resources/ThinkSharply/ThinkSharply/index.html