Teaching software engineering principles using maintenance-based projects | IEEE Conference Publication | IEEE Xplore