Learning Objectives


The process of developing software involves the application of a number of interesting techniques and tools. During this class, we will explore the phases of the software engineering lifecycle and examine the principles, challenges, and open questions associated with each phase. Throughout the semester, we will investigate the interplay between the theory and practice of software engineering. Specifically, we will delve into the details of requirements elicitation, design, implementation, testing, documentation, maintenance, and deployment through a discussion of book chapters and articles from the software engineering literature.

Along with learning more about how to effectively work in a team of diverse software developers, students will enhance their ability to write and present ideas about software in a clear and compelling fashion. Students will develop an understanding of the fascinating connections between computer science and software engineering and other disciplines in the social and natural sciences and the humanities. Students also will gain software engineering experience when completing practical assignments and large-scale projects.