Sign In

Communications of the ACM


Crossing the Software Education Chasm

man leaping a chasm, illustration


An Agile approach that exploits cloud computing.

The full text of this article is premium content



I'm also teaching a software engineering course mostly based on the course materials including the coming book -

I'm also getting a very positive feedback, (well - from most of the students and even some alumni who joined the course). The students enjoy the challenges of learning new but very relevant ideas while practicing the materials hands on.

I would like to thanks the authors for their open attitude, for all sharing and even supplying technical help. The course's supplied virtual machine (bookware) saves a lot of valuable time spent in practicing and learning instead of setup and configurations.

I believe a big challenge for this effort is keeping it updated, since many of the course tools and practices are still forming as we talk.
Reuven Y,

David Patterson

Thanks for the nice comments!

We agree with the challenge of keeping up to date of computer science in general, but especially for software related courses, since the software tools change more quickly than traditional textbooks do.

That is one of the main why we were intrigued by the potential of three relatively new technologies:
1) Electronic textbooks
2) Virtual Machines (where old is new again)
3) Massive Online Open Courses (MOOCs)

1) Ebooks (and print-on-demand paper books) means there is no warehouse full of books that must be sold before you can make a revision. Hence, dedicated authors can track changes to software and include great new software tools by releasing a new version of the book, say, every year. Moreover, instead of errata, for ebooks you can release new versions with corrections immediately and readers with old editions can automatically get corrections to their copies. This option is particularly important when you're writing about software, as its easy to get some detail wrong that might frustrate readers trying to do what you say in the book.

2) Virtual Machines means the authors can put together a stable set of software tools that all work together, and hence all students can use the same version of all the software that goes with the book without configuration hassles. We just need to update the VM with each edition of the book.

Note that we worried whether VMs would really work with 50,000 students around the world, but amazingly, it did. We got no complaints from students who downloaded the VM and installed our image.

3) One challenge for textbook writers is how do you teach the teachers about relatively new ideas, new tools that they haven't seen, and perhaps even programming languages and frameworks that they haven't used. The MOOC means professors willing to learn new ideas can do it in their spare time. Moreover, instead of just seeing Powerpoint slides and trying to guess what the authors meant, they can watch the lectures themselves to see what they want to incorporate in their classes.

The more radical version of solving the "how do you educate the educators" is the "flipped classroom," where students watch the online videos before class and the lecture becomes a recitation where the professor works with students in small groups, clearing up misunderstandings and answering questions. We've never tried this, and have no strong opinions one way or the other, but some are strong advocates and it's an option for the even more adventuresome to try.

Dave Patterson
UC Berkeley

P.S. Our next MOOC starts May 18, in case anyone is interested. See


I very much enjoyed this article. It was refreshing to see how Professors Patterson and Fox have updated this important course at Berkeley (CS169), which I think has often been a hard course to teach in a relevant way. Although an human-computer interaction researcher by training, I had the opportunity to teach this once at Berkeley. Given my lack of expertise in the area I was forced to follow a textbook, which seemed overly theoretical. Having this type of material available at the time would have made the course much more practical and impactful on my students' future software careers.

As an aside, I'm not surprised that the graduates have not found the low-fi prototyping techniques a common part of their job as I think the UI part of projects are often more likely given to more experienced engineers or even usability/design specialists (at least in larger companies).

James Landay
CSE Department
University of Washington

Klaus-Erik Schauser

Hi Dave and Armando,

Congratulations on the the success of the class, book, paper, and video !!! It is AMAZING that you were able to teach that many students. I am proud of you. We wish that all computer science students had taken such a course.

At AppFolio we have been using Rails, TDD, Pivotal Tracker, Selenium, etc for the past 5 years and our team loves it. We now probably have one of the largest commercial Rails application.

We are onto our third product (latest is and still do releases every 2 weeks, which our customers LOVE !! Being agile is even part of our company values :-).

Good luck with the next class.

Warm regards,


Armando Fox

James, thanks for posting, and my anecdotal experience about design jobs being given to experienced UI/UX designers accords with yours. We plan to continue covering this material if only to instill the virtues of a user-centered process, and indeed, students reporting back on their experience working with customers told us that they now appreciate the value of lo-fi UI prototypes as a way of reaching agreement on what the customer actually wants. Equally important, though, is we want to reinforce the case for including exposure to this material in what is considered a "core" software engineering class, and influencing others to do the same.

I'd be very appreciative of suggestions on how to better approach this material in the course or book. (Our mutual colleague Marti Hearst has already pointed me in some good directions for this.)


David Patterson

By the way, CACM asked us to record a 5-minute video to demo some of the Rails tools that enabled the autograding of the thousands of programming assignments for the MOOC. The plan was to put it on the CACM web site, but it wasn't ready yet.

Here it is:

Displaying all 6 comments

Log in to Read the Full Article

Sign In

Sign in using your ACM Web Account username and password to access premium content if you are an ACM member, Communications subscriber or Digital Library subscriber.

Need Access?

Please select one of the options below for access to premium content and features.

Create a Web Account

If you are already an ACM member, Communications subscriber, or Digital Library subscriber, please set up a web account to access premium content on this site.

Join the ACM

Become a member to take full advantage of ACM's outstanding computing information resources, networking opportunities, and other benefits.

Subscribe to Communications of the ACM Magazine

Get full access to 50+ years of CACM content and receive the print version of the magazine monthly.

Purchase the Article

Non-members can purchase this article or a copy of the magazine in which it appears.
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account