Introduction The computing sciences are complex fields that combine both theoretical and practical components. Students successfully completing an undergraduate computer science program should have instruction in both the mathematical and theoretical foundations of computing as well as the more practical aspects of how to effectively use computers to solve problems. Software engineering, as its name implies, is more directed toward the practical aspects of how to successfully develop complex systems that meet user requirements and are reliable, usable, and maintainable. Computing Curricula 2005 recognizes the need for more extensive education to produce professional engineers than what can be reasonably provided in a typical computer science program (ACM, 2005). As such, they propose engineering be treated as a totally separate discipline within computer science education. However, while there has been some debate about the exact role engineering should have in a computer science program (Curran, 2003), the ACM Curricula has maintained the importance of engineering to all computer science students and has kept it as a core element in computer science education (ACM, 2008). For purposes of this paper, we will focus on the teaching of engineering within the computer science discipline. Unlike other topics in the computer science major, the techniques and principles taught in engineering are often first developed and refined in industry before arriving in the classroom. As commercial development techniques and tools evolve, so pedagogical methodologies change. Computer science educators have taken different approaches to teaching engineering over the years, both as a result of changing methodologies as well as individual beliefs about what teaching methods work best in a particular academic environment. This paper is a case study in applying current productivity tools (specifically Redmine) in a engineering course at our institution. The objectives of the study are to investigate how to integrate the tools into the existing structure and evaluate their impact. We describe our experience in recently changing our approach to teaching engineering to be more aligned with current tools and how to effectively use them in an academic environment. The paper begins with an overview of engineering teaching methods, then describes our traditional approach and motivation for changing, how the new approach was integrated into the course, our experience with the change, and, finally, our plans for the future Software Engineering Education Background Software Engineering is defined as the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software (Petkovic, Thompson, & Todtenhoefer, 2006, p. 294). The need to teach engineering in colleges has been identified for decades. Stiller & LeBlanc (2002) point out as far back as the early 1990's, ACM Computing Curricula suggested that the at least one engineering course should be required in accredited computer science programs. They point out that the number of large projects in industry demand this and suggest that the proof of the success of these accredited computer science programs should be seen in the reduction of failure in the design and operation of large computer programs. Software engineering programs can be thought of as a replacement for the old apprenticeship programs which taught the trades to workman (Stroulia, Bauer, Craig, Reid, & Wilson, 2011). The issue, however, is how to bring this effect into the classroom. Many educators feel that current practices of teaching engineering are not adequately preparing students for the real world of development. Nurkkala & Brandle (2011) summarize the problems with current teaching approaches: * No product--students are creating projects, not commercial grade products * Short duration--single semester, or two-semester, courses impose an artificial time constraint * High turnover--new students each semester means the talent pool remains shallow and student skills are not developing based on previous experience * Low complexity--by necessity given time constraints and skill sets * No maintenance--as a result of short duration, students do not experience a key aspect of development, the maintenance phase * No customer--most engineering projects do not interface with a real customer To address these shortcomings, different approaches to teaching engineering have emerged and been proposed in the literature. …
Read full abstract