[Edu-sig] Python projects for CS1
Edward Cherlin
echerlin at gmail.com
Wed Mar 24 02:12:31 CET 2010
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.urner at gmail.com> wrote:
> On Tue, Mar 23, 2010 at 7:29 AM, Bill Punch <punch at 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 at 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/
More information about the Edu-sig
mailing list