Spring 2019 Course Descriptions
The scale of modern software systems is truly amazing. We regularly use software that is hundreds-of-thousands to millions of lines of code, and that software, while certainly not bug-free, mostly does what it is supposed to. Achieving this kind of scale has been the result of steady progress in software engineering over the last several decades. In this class, we will study the foundations of software engineering, focusing on the core principles and ideas that enable us to build large-scale software systems. Our focus will be on the coding side of software engineering. Equally important, but deferred to a different course, is the people/team side of software engineering. We will explore ideas such as abstraction, modularity, architecture, specification, testing, and debugging, among others. The course will be conducted in Java, and will include a short introduction to Java at the beginning. During the course, students will complete a number of programming assignments, and the course will also include some reading assignments.
Prerequisite: COMP 40, graduate standing, or instructor consent.