Teaching an Undergraduate Software Engineering Course using Active Learning and Open Source Projects
Mohsen Dorodchi, Erfan Al-Hossami, Mohammad Nagahisarchoghaei, Rohit Shenvi Diwadkar, Aileen Benedict · 2019
This work in progress presents a model for first undergraduate software engineering course as a core course of the computer science curriculum. The course is designed to be offered in the fourth or fifth semesters (i.e., end of sophomore or beginning of the junior year) for students who have completed the introductory programming and data structures courses. In addition, they may have some basic knowledge of databases and web technologies. Moreover, in our curriculum, students at this level have not been exposed to any codebase of real-world application and particularly of large size (>10,000 lines) codebases yet. Based on such situations, the major focus of this course is on teaching the fundamentals of software engineering as a methodology of developing real-world software with an emphasis on: 1) software systems in the enterprise level, 2) basic modeling using functional, flow, and behavioral diagrams, and 3) team-based agile project development. The paper discusses our novel course configuration of the three emphasized elements above, where students work with open source software in this class as part of course activities and assignments to simulate working on an enterprise project and learn agile development Our observation as well as our industry partners indicated that students enjoy the open source challenges and demonstrate professional competency after this course. Our initial findings include a positive impact of open source and team work on our students.