Effective pedagogical principles and practices in teaching software engineering through projects | IEEE Conference Publication | IEEE Xplore