(often collaboratively for those courses that require teamwork), and finally deliver an application that meets the client’s needs. All of this is done within a limited, semester-based timeframe thereby emphasizing additional software engineering concepts such as planning, project management, and software estimation.