Towards a Practical Software Engineering Curriculum: A Data-Centric Study
Date
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
This research explores effective pedagogical approaches to create a practical software engineering (SE) curriculum such that students develop strong fundamental SE knowledge and hands-on skills. This research takes a data-centric approach to carefully study and examine several innovative pedagogical approaches with roots in the literature that can offer a constructive Software Engineering (SE) education. The first approach studied is hybrid-PBL to provide a trade-off between teaching fundamental knowledge and developing the habit of designing with respect to SE best practices in students using contextualized learning and Just-in-time teaching (JIT). The data is collected over two semesters in 2019 and 2020. The results from quantitative and qualitative analyses indicate that hybrid-PBL is a practical pedagogical approach. Moreover, students can ensure that they adhere to optimal design patterns and best practices through JIT lectures. The second approach studied is integrated learning, in which two separate courses, namely software design and architecture and database design, offer one final continuous project. Previously, courses were taught in silos resulting in students’ lack of knowledge of how different topics may integrate. Following the new approach, students implement the object-oriented programming phase in the first course; followed by the implementation of a corresponding database in the second course. The study data is collected from an end-of-term survey and the final projects’ artifacts. Analyzing students’ design diagrams reveals that students faced all impedance mismatches in the project and were satisfied with the overall learning from the joint project. Afterwards, a hackathon is integrated into the software development and architecture course curriculum. This research aims to evaluate the effect of working on a real-world web development project in a hackathon on deepening the students’ knowledge of theoretical concepts learned in lectures. The data is collected through two surveys accessible to students before and after the hackathon, and students’ code commits on GitHub. The results from comparing survey responses against Bloom’s taxonomy and their code quality in two phases show the importance of hackathon participation on students’ performance. Ultimately, a hackathon toolkit was designed to support female participation by facilitating discussion about the biases and barriers reside in hackathon environments.