Redesigning An Undergraduate Course: Principles of Programming Languages | IEEE Conference Publication | IEEE Xplore