See also Mr. Babbage's Secret: The Tale of a Cipher--and APL. Step-by-step through all of the kinds of cipher that Charles Babbage found in the agony column (Personals) in The Times, and a legal case where he testified about a cipher he cracked.
On Tue, Mar 23, 2010 at 20:58, kirby urner <kirby.ur...@gmail.com> wrote: > On Tue, Mar 23, 2010 at 7:29 AM, Bill Punch <pu...@cse.msu.edu> wrote: > > << snip >> > >> If you have any comments, we'd love to hear them. >> > > > Hi Bill -- > > I enjoyed poking through some of these, reminiscent of some of the > SuperQuest challenges for Oregon's annual software competition, > high school students working in teams, with a language of their > choice, to come up with a working solution in a time race. > > I like how you cover a lot of territory. Just looking at your page > reassures a student that computer programs are ubiquitous i.e. > in all walks a life (or a lot of 'em). Teachers should feel heartened > as well, especially math teachers, seeking new relevance > amidst real world topics, like strangers in a strange land > (some of them). > > I'm wondering if you sometimes revisit the same problem suggesting > different strategies for solution, perhaps after students have struggled > and turned in some work. The same problem tackled multiple times > may help boost student self-confidence, as they perceive how their > powers are growing (like working out in a gym, lifting that same stack > more easily). > > For example, the Caesar Code stuff is pretty interesting, as a generic > introduction to permutations, wherein rotations might be "multiplied". > You've got finite groups going here -- a topic I try to import from the > college math world, much of which hides behind "calculus mountain", > a killer peak most have to climb before they're even told "abstract > algebra" exists. Yet so much fun could be had, so much cavorting, > if we could just play with "math objects" that play in groups. > > http://www.4dsolutions.net/ocn/flash/group.html (annoying noise!) > > Another definition of a Caesar Code (Nero Code? Hadrian Code?) > allows these codes to be completely random, though still one-to-one > of course, and includes the space character as another one to > encode, makes it all seem the more cryptic cuz of the wrecked > word boundaries. > > So what if a student hasn't used dictionaries yet, or has only just > discovered them, and sticks with indexed strings, as your hints > suggest. Coming back to the same problem later, newly armed > with a dictionary, list comprehensions, maybe the whole exercise > seems easier and more concise? Don't wanna get *too* concise. > > Example > > IDLE 2.6.4 > >>>> from string import lowercase as lowers; from random import shuffle > > Get lowercase a-z plus space character > >>>> thechars = lowers[:26]+" " > >>>> def makekey(instring): > thecopy = list(instring) > shuffle(thecopy) > return dict(zip(list(instring), thecopy)) > > Build the secret key with thechars, get back a dictionary: > >>>> coding = makekey(thechars) > >>>> coding > {' ': 'g', 'a': 'x', 'c': 'w', 'b': 'c', 'e': 't', 'd': 'n', 'g': 'h', > 'f': 'm', 'i': 'j', 'h': 'k', 'k': 'a', 'j': 'o', 'm': 's', 'l': 'u', > 'o': 'p', 'n': 'l', 'q': 'y', 'p': 'z', 's': 'f', 'r': 'b', 'u': 'q', > 't': 'i', 'w': 'e', 'v': ' ', 'y': 'r', 'x': 'd', 'z': 'v'} > > Define encoding and decoding functions, then test them. Pass through > any letters not in the key: > >>>> def encode(phrase, secretkey): > output = '' > for char in phrase: > output += secretkey.get(char, char) > return output > >>>> def decode(phrase, secretkey): > output = "" > reverselookup = dict((value, key) for key,value in secretkey.items()) > for char in phrase: > output += reverselookup.get(char, char) > return output > >>>> p = "Able was I ere I saw Elba" > >>>> e = encode(p, coding) >>>> e > 'AejlgfwtgIglclgIgtwfgEjew' > >>>> decode(e, coding) > 'Able was I ere I say Elba' > > My propensity, coming from a math teaching perspective, is to look > at a Python module as a "fish tank" with multiple mouths to feed, > i.e. I like to publish a simple API and feed arguments to functions > (other denizens) directly, sans raw_input prompts. > > This more directly corresponds to the idea of a grab bag of tools, > a library, whereas a raw_input cycle more corresponds to polling > in a GUI, staying alert for user inputs. > > Both modalities make a lot of sense, so I'm not saying I wouldn't > go with raw_input sometimes -- I know students like being prompted, > even by their own code. > > Sometimes I even use text menus with switching. :) > http://www.4dsolutions.net/ocn/pymath.html (example at the end). > > Didn't see whether some of your challenges drop the raw_input > to seem more like libraries, or whether you ask for a menu. Another > thing is to ask for command line arguments and use sys.args > -- so much fun, we might have, eh? > > Anyway, we're all aware of these possibilities -- just thought I'd > remind myself of some of them. > > Again: reassuring to see the broad-based examples. > > Hitting the same challenge multiple times, but with new tools > and/or concepts each time, is what many teachers call > "spiraling" as you likely know. > > Pre-written code may be called "scaffolding" if you wanna > sound like you know the shoptalk. > > In the high school math teaching world, John Saxon is often > cited for making especially strategic use of "spiraling" > although his detractors would consider this unmerited > crediting of an interloper (something of a maverick that > guy -- never met him). > > I mention all this by way of background, in that I cite him > in my Notes for Teachers for Pycon 2009 re spiraling FYI: > > http://www.4dsolutions.net/presentations/py4t_notes.pdf > > On another note, thanks to Edward Cherlin (and Maria too) > for jumping in on math-thinking-l this month. That's a > functional programmers' hangout and any incursion of > "imperative programmers" tends to generate some ire > -- kinda like West Side Story? In the old days, we'd > find some eligible prince or princess to marry into the > Great Lambda tribe (as in lambda calculus). > > I've been bugging philosophers to devote some bandwidth > to this feuding but they're busy with paper and pencil logic, > can't be bothered with "CS" apparently. > > Maybe I'm being overly judgmental, and anyway it's not like > there's anything much at stake. Or is there? -- math teachers > like Maria get caught in the cross-fire, Gary too for that > matter, though he seems to hold his own. Maybe the > floodgates would open for more funding of discrete maths > at the high school level, if only the engineers weren't seen > to be fighting amongst themselves so much? Nothing scares > away wannabe investor-sponsors so much as feuding and > acrimony eh? > > Speaking of Gary (Litvin), he got the ball rolling by commenting > on corestandards.org, a K-12 standards-building initiative > purportedly with real state governors on board. He sees signs > that discrete math topics are losing ground, not gaining it. > But that's perhaps more testament to an unimaginative > and uninformed bureaucracy that has yet to achieve > a strangle-hold? One may fondly so hope I suppose. Over > on math-teach, I mention that our Pauling Center has not > been consulted, and we're at the epicenter (evidence that > these bureaucrats have gone way out on a limb?). > > http://mathforum.org/kb/message.jspa?messageID=7013136&tstart=0 > > See math-thinking-l archives if wanting more substance > behind these ramblings (wanderings). > > Bill, if you're still with me, I look forward to poking around > in more of your exercises and may well have more to say, > hope OK. > > Kirby > _______________________________________________ > Edu-sig mailing list > Edu-sig@python.org > http://mail.python.org/mailman/listinfo/edu-sig > -- Edward Mokurai (默雷/धर्ममेघशब्दगर्ज/دھرممیگھشبدگر ج) Cherlin Silent Thunder is my name, and Children are my nation. The Cosmos is my dwelling place, the Truth my destination. http://www.earthtreasury.org/ _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig