You know how to write a "program". But how do you create a software "product" as part of a team, with customers that have expectations of functionality and quality? This course introduces students to various tools (source control, automated build systems, programming environments, test automation, etc.) and processes (design, implementation, testing, and maintenance) that are used by professionals in the field of software engineering.
Topics will include: software development lifecycle; agile and test-driven development; source control and continuous integration; requirements gathering and analysis; software architecture; object-oriented design and design patterns; Android application development; software testing; refactoring.
Students should be proficient in Java and have completed CIS 121.
Tues/Thurs 1:30-3:00pm, Towne 100
In addition to registering for the Lecture, students must register for one of the Recitation sessions.
Registration for one of these sessions is mandatory; however, rather than actual weekly recitations like in other courses, these times are simply placeholders for potential group project meetings and other activities (so don't worry, you won't actually have class on Fridays!).
Software Process Models
We will also have 1-2 guest speakers from industry.
There will be no required textbook for this course. There will be numerous assigned readings over the course of the semester, but they will be made available to you via Canvas.