June 24, 2017
June 24, 2017
June 28, 2017
Software Engineering Division
The value of project-based courses in computing, especially software engineering (SE) curricula is widely recognized. Projects reinforce learning by allowing students to apply theoretical concepts to build working systems, to participate in professional practice, and to work on teams creating opportunities to learn non-technical skills, such as communication, leadership, and negotiation skills. Non-trivial projects allow students to solve problems associated with large and complex systems and to build artifacts that may be used as evidence of mastery by potential employers. The 2013 ACM and IEEE Curriculum Guidelines for Undergraduate Degree Programs in Computer Science states that ``students can best learn to apply much of the material defined in the Software Engineering [Knowledge Area] by participating in a project."
The pedagogical literature on project-based computing courses, however, focuses on descriptions of specific instances of a course, of projects used, or of the software development processes employed. This paper describes principles that have emerged from teaching a project-based introductory software development course over the past 12 years and presents specific pedagogical tools designed to support these principles. The principles include the need for students to experience a wide view of software development, to learn about and through workplace practice, to develop strong communication skills, and to learn by doing with frequent feedback and reflection. The pedagogical tools designed to support these principles include a semester-long software maintenance project, workplace scenarios, a real-world software development process, a communication skills rubric, high-level guidelines (instead of low-level prescriptive templates), and reading response questions. To illustrate these tools, we describe several assignments and assessments from a recent iteration of the course.
To evaluate the effectiveness of the pedagogical tools used to implement the guiding principles, we employed several data collection methods during the last offering of the introductory software development course. We designed a survey that asks students to self-assess their achievement of each course learning outcome and we also analyzed the standardized student course evaluations that are filled out by students at the end of each course offered in our institution. We analyzed a course project reflection assignment that students completed at the end of the semester and also analyzed trends in student grades.
The results suggest that students had a positive experience with the course and overall believe that they achieved the course learning outcomes. Some areas for improvement were also identified, including revising the method by which version control tools are integrated in the course and revising the ethics module within the existing course framework.
Hoffman, M., & Christov, S. C. (2017, June), Guiding Principles and Pedagogical Tools for an Introductory Software Development Course Paper presented at 2017 ASEE Annual Conference & Exposition, Columbus, Ohio. 10.18260/1-2--28427
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2017 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015