Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A well-taught computer science course will not force anyone to rote-learn algorithms. Instead it ought to walk the students through the discovery process of improving from a naive but simple bubble sort, through more complicated algorithms.

Once they understand the complexities, they can appreciate the genius of quicksort. And with the sort problem well established in their minds, they're ready to appreciate the value of more complicated data structures than the list they were working with.

The difference is between understanding how to make computers do things with the tools available (knowing about built-in sort methods) and understanding how computers actually work (learning how sort algorithms have been developed).

You may be right that a programmer doesn't need to, on a daily basis, think about how sort() is implemented. But learning to work out a well understood problem with a knowledgeable instructor will teach her how to solve the next problem she comes up against on her own that no one has yet solved.

Just like any scientific pursuit, the best way to appreciate the tools and knowledge that is currently available and what methods and processes ought to be followed to improve the tools and increase the knowledge, is to walk through the process of understanding step by step, from simple to complex. If rote is involved then someone is screwing up.



>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.

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.


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: