CS 520: Theory and Practice of Software Engineering

Fall 2024


CS 520 introduces students to the principal activities and state-of-the-art techniques involved in developing high-quality software systems. Topics include: requirements analysis, formal specification methods, software design, software testing and debugging, program analysis, and automated software engineering.

This course will cover the following high-level topics:

Besides becoming familiar with Software Engineering principles and best practices, students will learn about cutting-edge research in areas such as Programming Languages, Software Engineering, and Human-Computer Interaction. The exercises and the group project provide additional hands-on experience in using state-of-the-art techniques.

Students should have taken an intermediate course in software engineering and have built, in a team, a software system of roughly 10,000 lines of code or more. Students are expected to be familiar with an object oriented programming language, such as Java or C++. The ability to use a Unix-like operating system (e.g., Linux, Mac OSX) and download and use off-the-shelf tools are expected.