>A well-taught computer science course will not force anyone to rote-learn algorithms.
Agree but with the correction that you mean well-structured computer science course. The UK national A-level syllabus for "Decision 1", that which is under discussion, largely demands rote-learning for the examination. To avoid this, for whatever reason, would be very poor teaching.
There are structural deficiencies here, which teaching cannot overcome. (Also worth noting that this is part of the HS maths course, and mathematics teachers are typically not knowledgeable enough to offer the flavour you demand)
> Instead it ought to walk the students through the discovery process of improving from a naive but simple bubble sort, through more complicated algorithms.
Bubblesort is not naive and simple. Given the opportunity to invent a sorting algorithm from scratch, as a total beginner or as an expert, nobody would spontaneously suggest bubblesort in 2013.
If you open your course with bubblesort, it's my belief that a lot of capable students are going to be thinking "why did we start here? => computer science is not for me".
Overall, I agree with your teaching method - but bubblesort to quicksort is the wrong route. If sorting algorithms are introduced (I don't think it is a good start point), insertion/selection sort to bucket sort would be more pedagogical. The start point more closely matches students' naive understanding, and the end point forces teachers to be more clear about what the key learning points are.
Decision 1 brings back memories ... As I recall, that was the 'easy' module that everyone would do well at (precisely because it was rote-learning basic algorithms, possibly without even the use of the word 'algorithm'), to compensate for the world of pain that was Pure 3.
10 years later, however, most of it spent doing literature degrees, I remember a lot more integral calculus than box-filling.
> [...] To avoid this, for whatever reason, would be very poor teaching.
Depends. You can teach for the grades, or you can teach for lifes. In general, it's mostly university entrance requirements that care about the grades. Otherwise, don't worry about the grades at all.
Agree but with the correction that you mean well-structured computer science course. The UK national A-level syllabus for "Decision 1", that which is under discussion, largely demands rote-learning for the examination. To avoid this, for whatever reason, would be very poor teaching.
There are structural deficiencies here, which teaching cannot overcome. (Also worth noting that this is part of the HS maths course, and mathematics teachers are typically not knowledgeable enough to offer the flavour you demand)
> Instead it ought to walk the students through the discovery process of improving from a naive but simple bubble sort, through more complicated algorithms.
Bubblesort is not naive and simple. Given the opportunity to invent a sorting algorithm from scratch, as a total beginner or as an expert, nobody would spontaneously suggest bubblesort in 2013.
Here is a more complete criticism of using bubblesort as an educational tool: http://www.cs.duke.edu/~ola/papers/bubble.pdf
If you open your course with bubblesort, it's my belief that a lot of capable students are going to be thinking "why did we start here? => computer science is not for me".
Overall, I agree with your teaching method - but bubblesort to quicksort is the wrong route. If sorting algorithms are introduced (I don't think it is a good start point), insertion/selection sort to bucket sort would be more pedagogical. The start point more closely matches students' naive understanding, and the end point forces teachers to be more clear about what the key learning points are.