Enabling independent learning of programming concepts through programming completion puzzles | IEEE Conference Publication | IEEE Xplore