Software engineering courses should prepare students for industry careers by providing an authentic experience similar to real-world practice. Because working on existing products accounts for more than 65% of working software developers’ effort, curriculum guidelines for computer science now recommend that software engineering courses work with established products, instead of the standard practice of creating apps from scratch. In such project-based learning, or PBL, students work on authentic engineering problems with characteristics that they will encounter on the job, such as a large code base, sophisticated architecture, rich feature set, and source code quality standards. Not only is working with realistic projects better for learning, but it also motivates and engages students; active learning practices including PBL have been shown to help raise examination scores and reduce failure rates.However, education researchers caution that while PBL motivates and engages students, instructors must provide enough scaffolding and supports or risk that students become bogged down with performing unessential tasks or being overwhelmed and giving up instead of progressing to learn targeted concepts. This is strikingly consistent with the experience of many software engineering education researchers, who report that their students are often hampered by poorly documented, difficult-to-build code bases, while instructors find themselves overwhelmed by students’ getting-started questions. To this end, we propose to develop what we call scaffolding at scale; a ready-to-use, curated open-source project that will enable instructors to significantly improve the effectiveness of software engineering PBL. Instead of small, individual problems, we will provide realistic tasks and problems in the context of a large-scale real-world project and rich development environments. This would be accomplished by developing effective scaffolding and supporting materials that will empower instructors to help students in PBL in two crucial ways: (i) by providing scaffolded learning activities for the assigned course project, and (ii) by providing supporting documentation to give context to the course project. Our project is similar in spirit to recent education innovations in its emphasis of both authenticity and reduction of impediments to learning, but here, we target team-based, semester-long junior and senior level course projects rather than introductory programming.Our project is in the first of the three-year program (Year 1: developing; Year 2: testing; Year 3: piloting). In the first year of developing, we have created three software engineering course projects and tested out these projects in two courses at CU and VCU respectively. The developed material for each project includes definitions of project tasks with solutions and a reference course to demonstrate how the project can be integrated into the course. Other support material includes software project overview video and background, installation video and written guide, and other active learning activities for students to ramp up in the project. We have rigorously evaluated and improved the developed project material based on feedback from both undergraduate research assistants and two advisory board meetings. If successful, this project will impact the educational quality of a new generation of software developers.
Daqing Hou, Yu Liu, Jan DeWaters, Mary Margaret Small, Clarkson University, Potsdam NY; David Shepherd, Virginia Commonwealth University, Richmond VA