Last month I was honored to be a keynote speaker at the Conference on Software Engineering Education and Training (CSEE&T) annual meeting. Open Source has become a major topic on campuses, not just the enterprise, and I was delighted to meet with some of the leaders in setting the agenda for software engineering education.
When I was a student in the School of Engineering and Applied Science at the University of Pennsylvania, I did not give to much thought about how the faculty chose to teach Sorting and Searching and not DOS for Idiots or why the core curriculum was constructed in one way and not another. At the time it all seemed like useful and exciting stuff to me, and I learned it all (as best I could).
I believe that the basics that I learned in college were the right fundamentals for me doing my job as a computer researcher and software developer. My education gave me a rich toolbox, and the educational process gave me a method of expanding that toolbox when new ideas came along or when old ideas clearly didn't fit so well anymore. But having watched the evolution of the software industry and the emergence of a software society, it is increasingly clear to me now that an educational focus on the nuts and bolts of traditional texts does not tell the larger story of one of the greatest revolutions of modern times. Put another way, a course in civics that looked at the US Constitution only from writings of the Supreme Court justices would miss the larger story of the struggle for civil rights that unfolded outside the courtroom steps.
Talking with participants at the CSEE&T event, it is clear that these acaemic leaders are being proactive in trying to understand how the impact of open source on the software industry will reshape the context and content of what they teach the next generation of software engineers. They are becoming aware that it is not only important to teach the basics of how to sort and search, but also how to collaborate, communicate, and innovate in ways never imagined by the dominant proprietary software model. They understand that a proper education of the next generation is not just about making the software control the machine, but also about teaching the programmers how to build sustainable projects and software communities. And with a little help from the open source community, they can teach many, many others how to benefit by joining our community.