Title: Learning Algorithms Through Programming and Puzzle Solving