Innovative Teaching Activities

Experimental Laboratory Exercises

I have developed and used several laboratory exercises in my graduate courses. These labs are patterned after the physics or chemistry labs with which many students are familiar. The goal of these labs is to bring the scientific method into the classroom. We challenge the students to experimentally test hypotheses about software engineering processes. We also teach them the statistics they need to analyze the data and draw conclusions. So far I have developed four such labs and they have been used by several professors around the world.

Very-Large Scale Software Development

I have significantly redesigned our software development project course (CMSC 435). The old way was to divide the class into small teams and have each team develop the same, relatively small project. I felt that this approach ignored the hardest part of building real software: scale. Consequently, I developed and am giving a course whose goal is to teach software engineering for large scale systems. With my new approach all students work together to develop one large-scale project. This project is a real application, for real customers with real needs. This makes it clear that the software is not disposable and that dramatically simplifying assumptions won't be tolerated. The students work together to develop one very large-scale software package (These classes have successfully delivered systems on the order of 50,000 lines of code).

The Cycle-Time Reduction Laboratory

I have created an educational lab for developing computer-supported cooperative work applications. This lab is used in conjunction with the CMSC 435 course.