Computer science educators have taken different approaches to teaching software engineering over the years, both as a result of changing methodologies as well as individual beliefs about what teaching methods work best in a particular academic environment.