Contemporary Canonical Software Courses 

The project I'm part of is a three year long NSE funded project. Here's an overview:
Computer science curricula usually include the teaching of canonical software systems, such as operating systems and compilers, because these systems embody the concepts and technologies that constitute an important part of the knowledge base of computer science education. The proliferation of the Internet has changed the way people interact with computers. Hardly a day goes by without using a web browser, checking email, or instant messaging. The concepts and technologies behind these new canonical systems are important computer science knowledge. In particular, understanding how web browsers and web servers function and interact is fundamental to Internet-based application development. It becomes important for students to be exposed to the formal study of these modern canonical systems.

The objectives of this project include 
developing and offering courses introducing the architectures of two dominant open source systems: Firefox and Apache, and the interaction between them. These two systems represent modern canonical distributed, multi-platform, and multi-language systems. Their internal structures exemplify highly expansible and flexible architecture that contribute to their survival as open source projects. Both systems have received significant attention and their inner workings have been studied by researchers. However, much of the information available has not been distilled into a form that is amenable to classroom use.

In this project, we plan to develop new learning materials along with a teaching package that systematically introduce the key technology and software design concepts behind the two important canonical software systems. We are going to (1) organize the key knowledge, as well as how Firefox and Apache relate to this knowledge, into slides; (2) develop a teaching tool, which we call a structural navigator, to illustrate the relationships among the key features, architectural structures, and source code modules of these canonical systems; and (3) design lab assignments that require students to build lightweight web browsers and web servers for mobile devices. The slides, tool, and the assignments constitute the teaching package. These activities integrate research discoveries into teaching. We plan to offer and integrate these courses into the Drexel University undergraduate Computer Science and Software Engineering curricula. The classes make use of the teaching package, and both individual and overall student learning outcomes will be evaluated using the standard evaluation instruments of the College of Engineering at Drexel University.


My role is to get this project started, and do as much as we could to gather the source code architechture for firefox and apache, and organize the developers mailing list information for both the open source projects.