This course provides students with a view into the job of a software engineer through hands-on interaction with course material. Topics covered include engineering processes and their application to the development of software; cost and effort estimation; software testing and test management; team structure, roles and composition; deployment and configuration management; and professional ethics.
This course is taught with a mandatory service learning component, during which you students work on a real software development project in a team context for a real client and reflect upon that experience. It is not possible to pass this course without taking part in this hands-on learning experience.
This course describes engineering processes and their application to the development of software.
One of:
To be successful in this course, students are expected to have practical experience building software, and in particular, should be comfortable working with data structures, designing classes, and writing software modules.
Students will experience the job of a software engineer through hands-on interaction with course material. The course will provide students with opportunities to experience: engineering processes and their application to the development of software; cost and effort estimation; software testing and test management; team structure, roles and composition; deployment and configuration management; and professional ethics.
Upon completion of this course, students should be able to:
Content Delivery. This course is taught in an experiential service learning format. Conceptual material is delivered in lecture and discussion format, and applied when possible through a service learning project experience.
Service Learning Project. A central focus of this course, the service learning project places students in the context of a software team working on a real piece of existing software for a real client. Projects are created by partners with a public benefit mission (usually non-profits or governmental organizations), and partners participate with the class during the course of the project as product owners for the software being built. Through the project, students gain real-life experience of what it’s like to work on a team as a professional software engineer.
Critical Reflection. With an experiential format, research has shown that students retain material better when they reflect critically on their learning. As such, students will be expected to write weekly reflection journal entries, as well as a short personal reflection essay at the end of the semester.
Exams. There are no exams in this course. However, students will be responsible for writing an analysis paper on a software ethics issue of their choice and presenting it in a mini-conference format at the end of the semester.
This course generally covers some combination of the following topics: