Mathematical thinking is difficult to define precisely but most authors agree that the following are important aspects of it: conjecturing, reasoning and proving, abstraction, 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 mathematical thinking in learners of mathematics at all levels. The
frameworks presented here aim to guide task designers when
writing a set of exercises