Beginners in CS will generally benefit from changing and expanding their thinking skills. Some of our thought processes may not be intuitive to a beginner and exercises can help them expand their thinking _tool box_. 

Lectures that make these new ways of thinking explicit can help, of course, but exercises can deepen and reinforce the knowledge. Especially helpful are exercises that lead a student to an _a-ha_ moment in which that was unclear has become clear. 

In the context of extending their thinking and problem solving skills, what particular problems and exercises would you suggest to use at the novice level for teaching computer science?

In discussions in the [CSEducators Classroom](https://chat.stackexchange.com/rooms/59174/the-classroom) it was originally noted that "puzzle problems" may be especially helpful in this regard - especially those problems for which a person's ordinary intuition might not be helpful, but which lead the student to a deeper understanding of the essence of CS thinking.