How to Think Like a Computer Scientist: Learning with Python
A Copyleft Case Study

February, 2002

Of all the wonderful things that happened at the Tenth International Python Conference, the two most exciting for me were meeting my web friend of a year's standing, Chris Meyers, and seeing the book that we co-authored with Allen Downey in print for the first time. How to Think Like a Computer Scientist: Learning with Python is now available in print at . The publication of the book marks a milestone in our experiement in free content development, and provides a case study in the benefits of working together and sharing your work.

I first became involved in this project when I wanted to use Python as the programming language in our introductory CS classes at Yorktown High. I decided on Python after making an investigation into availible language choices. Python had what we needed: it was open source, it ran on both the Linux platform we used at school and all other platforms students were likely to have at home. Even more importantly it fit the bill pedagogically. Python has an exceptionally clear syntax and supports a wide range of approaches to programming. It can be used to teach procedural programming, OOP, and even to introduce functional programming.

While the language choice seemed clear to me, Python did have one significant drawback: no textbook or other teaching materials existed for use with it. Fortunately, my investigation into language choices had turned up a potential solution to this problem as well. Allen Downey's excellent introductory text, How to Think Like a Computer Scientist, was just what I wanted in a textbook. It was clearly written and it focused on the processes of mind that go into computer programming rather than the specific issues of a particular language. The programming language used in the book was Java, but it was released as free content. It occured to me that I could modify it for use with Python.

Free content made my use of Python possible. I didn't feel competent to write a textbook from scratch, but I did feel that I could take Allen's book and modify it for use with Python. The idea of leveraging free content in this way excited me. The thought of teachers being able to work collaboratively over the Internet had been a fantasy of mine since I first heard about the Internet. Here was an opportunity to bring that fantasy to reality.

Two years later the first edition of the book is finished. Even more importantly, a world wide community of users has begun to form. The book is currently being translated into Spanish and German, with interest in other languages as well. Free content, like free software, seems to spread rapidly and get adapted in unexpected ways.

A development that I did expect (but still desperately hoped for as well ;-) has been the writing of high quality support materials by other contributors. Tim Wilson's contributions on his Henry Sibley High School site have been especially wonderful. At the Python conference I met Simon Wilkinson, who has begun a project to write a workbook to go along with the text. We have added a section to the Open Book Project site called the Python Bibleotheca to serve as location where community contributions to materials for teaching with Python can be accumulated and made easily available.

The benefits of using Free Content development have already been tremendous, but I think we have only just begun. Chris Meyers is currently beginning work on a feedback system that we will use with the second edition of the book that will allow people to post comments, corrections, and suggestions directly on the website. Allen Downey plans to add a chapter to the next edition on functional programming. As we get more feedback from the growing community of users, I am sure other unforeseen developments will also help to keep the journey interesting.

By sharing and working together we can produce high quality materials for our students at a savings of both time and money, and have fun doing it while we are at it! Now who could ask for more than that?

jeff elkner
yorktown high school
arlington, va