This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:

Citation(s): 2 (selected).

This document is also available in PDF format.

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

© ACM, 2006. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in Communications of the ACM, 49(8):13, 2006.

Future CS Course Already Here

In his "President's Letter" ("Computer Science Education in the 21st Century," Mar. 2006) David A. Patterson suggested creating a course that would leverage high-quality examples from open source software. I've been teaching just such a course for the past three years at the Athens University of Economics and Business. The lectures (see focus on how students comprehend, evaluate, maintain, and enhance large software systems. Students' grades are derived by assessing their contribution to an open source project they select based on their own interests. The course's theoretical background is covered in my books Code Reading and Code Quality: The Open Source Perspective (Addison-Wesley, 2003 and 2006, respectively); all the examples I use come exclusively from large existing open source projects. Two of the software systems I use for drawing examples are the very ones Patterson mentioned in his column: BSD Unix and PostgreSQL. I also use the source code of other systems (such as the Java HSQLDB database engine, the Apache Tomcat application server, the ACE networking framework, the X Window System, ArgoUML, and Perl) to cover subjects like object-oriented programming in Java and C++, networking, language processors, and graphics.

Diomidis Spinellis
Athens, Greece