Mathematical thinking is difficult to define pre-
cisely but most authors agree that the following are impor-
tant aspects of it: conjecturing, reasoning and proving, ab-
straction, generalization and specialization. However, recent
studies have shown that many sets of mathematical tasks
produced emphasize lower level skills, such as memorization
and the routine application of algorithms or procedures. In
this paper we survey the literature on the design and use
of tasks that aim to encourage higher level aspects of mathe-
matical thinking in learners of mathematics at all levels. The
frameworks presented here aim to guide task designers when
writing a set of exercises.