Much more effort is spent modifying existing software systems than creating new ones. In general, the process of evolving a software system to ensure its continued usefulness and relevance is complex, costly, and risky. This course will explore issues related to software evolution: the reason why it is difficult, and the theories, techniques, and tools we can leverage to cope with this difficulty. The course will also involve the study of research methods in software engineering.


To take this course, you will need:

Course Work and Evaluation

Most lectures will center around the structured discussion of scientific articles taken from the software engineering research literature. In addition to regular mandatory readings, the course work will involve: