Software Engineering immerses students in the process of creating software and highlights how the field is one that walks a fine line between the creative and scientific. Students engage in a series of projects that hone their ability to design, document, and test their code. These projects require students to work in teams, as they learn how to effectively communicate and delegate. Topics include user-centered design, version control systems, optimization techniques, and code review. This course is taught using multiple programming languages, and projects will vary from year to year.