In-depth study of the process of developing software systems, including use of software processes in actual product development, techniques used to ensure quality of the software products, and maintenance tasks performed as software evolves. By the end of the course, students will understand the role of software processes in the development of software and experience several types of processes, from rigid to agile ones. They also will be familiar with a variety of modern technologies and development techniques and understand their connection to software processes. Prerequisites:
Students should be familiar with at least one programming language (Java preferred but not required) and are expected to have taken an undergraduate software engineering course or have some experience in industry.