Evolving an introductory programming course: Impacts of student self-empowerment, guided hands-on times, and self-directed training | IEEE Conference Publication | IEEE Xplore