It's Not Just Technology

Dr. Dobb's Journal August 2002

By Gregory V. Wilson

Greg, a DDJ contributing editor, is the author of Practical Parallel Programming (MIT Press, 1995), and now works for Baltimore Technologies in Toronto. Greg can be reached at gvwilson@ddj.com.


Unlocking the Clubhouse: Women in Computing
Jane Margolis and Allan Fisher

MIT Press, 2002
172 pp., $24.95
ISBN 0262133989

The Boost Graph Library

Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine

Addison-Wesley, 2002
321 pp., $39.99
ISBN 0201729148

Web Programming in Python

George K. Thiruvathukal, Thomas W. Christopher, and John P. Shafaee

Prentice Hall, 2002
745 pp., $44.99
ISBN 0130410659

If you're reading this magazine, odds are you're male. Even more than law, medicine, and other professions, programming is still largely a boy's club. As a rule, women do not choose to go into computer science, and many of those who do later choose to pursue something else instead.

Jane Margolis and Allan Fisher's Unlocking the Clubhouse looks at why this is, and at what we can do about it. The book describes an ongoing Carnegie-Mellon University project whose goal is to understand why so few women become programmers. Its first six chapters describe the many small ways in which we are all — male and female — conditioned to believe that computers are "boy's things." Sometimes it's as simple as putting the computer in the boy's room because "he's the one who uses it most."

Later on, the "Who needs a social life?" atmosphere of undergraduate computer labs drives many women away — and many men, too. As the authors point out, almost three quarters of students of both genders believe they do not fit the stereotype of a computer-science student. The result is that many bright people who want to make a positive impact on the world choose to do it in some other way.

The last two chapters describe what the authors have done to remedy the situation at high schools and universities. This work proves that by being conscious of the many things that turn women off computing, and by viewing computer science from different angles, we can attract a broader cross-section of society, which can only make our discipline a better place to be. The results are impressive: Female undergraduate enrollment at CMU rose by more than a factor of four during their work, while the proportion of women dropping out decreased significantly.

The Boost Graph Library, by Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine, is a more traditional kind of programming book which, like Unlocking the Clubhouse, is clearly written, focused, and well organized. The aim of the Boost project (http://www.boost.org/) is to produce portable, peer-reviewed C++ libraries. The BGL is a major part of Boost's current offering. It applies the abstractions first pioneered in the C++ Standard Template Library (STL) to graph data structures and algorithms. The BGL's implementation of shortest path, for example, is templated on the graph representation being used. This layer of abstraction is resolved at compile time, so that programs do not have to pay the run-time cost associated with virtual methods.

The book presents background material on both generic template programming and graph algorithms, and then presents the BGL in all its glory. It takes a few pages to get used to the presentation style, which is based on Knuth's literate programming, but the clarity of the prose and examples quickly come to the fore. Like many programmers, I often find templated code hard to follow, but having read this book, I now believe that says more about the quality of the code than about the technique itself. If you are using graphs or templates in C++, this is the book (and library) for you.

Finally, Web Programming in Python, by George K. Thiruvathukal, Thomas W. Christopher, and John P. Shafaee, is larger, but less satisfying, than either of this month's other two books. The book's subtitle, "Techniques for Integrating Linux, Apache, and MySQL," is actually a more accurate description of its contents. Its first two chapters introduce Python, but the next three discuss Linux, network setup, and Apache configuration. Then there is a chapter on CGI programming in Python, followed by a chapter on MySQL. The second half of the book covers WPL (Web Python Linux), a collection of modules developed by the authors, and Slither, a servlet-style framework that they have also created.

Put together, the book's 700-odd pages cover a lot of ground and present a lot of practical examples. However, that is both a strength and a weakness. Yes, this book does show how the various pieces of an interactive database-backed web application fit together, but anyone who isn't already familiar with these technologies will find the pace daunting. And then there are the misstatements that crop up in much of the background material. Hypertext wasn't invented at Apple; the "A" tag in HTML is short for ANCHOR, not AREA; Marc's last name is not "Anderson;" and namespaces are not Python's "big idea." None of these errors count for much on their own, but there are enough of them in this book to make me feel uneasy about how carefully the authors have done the rest of their research.

DDJ