Just give me a computer and i will move the earth: Programming as a catalyst of a cultural revolution in the mathematics classroom

P2: Write a computer program that accepts any three points in the plane (given by their coordinates) and returns the center and the radius of the circle through them. On the face of it, our meta-problem MP seems trivial: surely P2 is more difficult than P1. While tackling P1, the problem solver executes concrete operations on concrete numerical data; while dealing with P2, she has to reflect on these operations without actually performing them. She must consider all the possibilities one by o n e not a trivial task for a person who doesn't want to overlook anything, not even the most "pathological" and least likely of cases. One does not really need the help of Piaget, Vygotsky or Freudenthal all of whom made lots of insightful observations on the difference between doing versus reflecting on doing to realize the significant difference between these two types of activity.1 Can we then definitely conclude that P2 is more difficult than PI? Yes, as long as by 'difficult' we merely refer to the logical complexity of the task. Yes, too, if by 'difficult' we mean the cognitive demands imposed on the students. Surprisingly, the answer becomes 'No' when we switch to the standard measure of difficulty, namely, students' success rate. The good news come from our own classroom experience, where year after year we have been witnessing the same phenomenon: The rate of success on P2 was