From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public From: eachus@spectre.mitre.org (Robert I. Eachus) Subject: Teaching sorts [was Re: What's the best language to start with?] Date: 1996/08/08 Message-ID: #1/1 X-Deja-AN: 172967267 references: <31FBC584.4188@ivic.qc.ca> <01bb83f5$923391e0$87ee6fce@timpent.airshields.com> organization: The Mitre Corp., Bedford, MA. newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-08T00:00:00+00:00 List-Id: In article <4udb2o$7io@solutions.solon.com> seebs@solutions.solon.com (Peter Seebach) writes: > However, the algorithm is *NOT DEPENDANT ON* moves and branches. > I can do quicksort. In my head. On paper. I can sit down, with > a pencil, and implement quicksort. You can say "these operations > correspond to moves and branches", but really, moves and branches > are corresponding to more general operations. If you teach the > students that it's all moves and branches, they end up with more > understanding of the specific hardware you teach them on, and > current trends in CPU design, *and less of the algorithm*. > I think algorithms should be taught on paper. *Away* from implementations > on computer. > Believe me, you understand quicksort much better after *DOING* it than you > can from writing any reasonable number of implementations. My favorite way to teach sorts is with cards. You can use playing cards, but a set of index cards numbered from 1 to 25 (or even random four digit numbers if you are teaching radix sort) eliminates distractions. I managed to do the "fun" experiment once. Take three students and have them learn Quicksort, Heapsort, and Bubblesort on "small" decks. At even 50 to 60 cards, the students doing Heapsort and Quicksort are racing each other*, and the Bubblesort victim is still hard at work well after they have finished. *The race really is to finish the Quicksort before the Heapsorter has built a heap. This also shows why quicksort is quick, since the Quicksort step of picking up the cards is O(n), not O(n log n) -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...