Guido van Robot

An homage to Guido van Rossum, Guido van Robot uses a simplified syntax and helper functions to teach students procedural and/or systematic thinking.

Advertisements
Published in: on 2009.06.28 at 16:25  Leave a Comment  
Tags: , , ,

Kirby Urner

O’Reilly features one of my math pedagogy heroes, Kirby Urner, in an article “Teaching Math with Python“. Yeah, the article is way old and the links out of date, but you can see what Kirby is up to at Oregon Curriculum Network (OCN), his own project.

Published in: on 2009.06.28 at 16:19  Leave a Comment  
Tags: , , , , ,

software facilities for teaching mathematics, part 2

I thought I’d follow up on my post about using a “Deal or No Deal”-type game to teach math.  If I were starting off with beginners to Python, I probably wouldn’t use so much functional syntax, but I thought I better show some code.

# "Deal or no deal"-isomorphic game
import math

values = [0.01, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000]

class Possibilities(object):
    def __init__(self, possibilities=values):
        self.possibilities=possibilities
    def E(self, fcn):
        return sum(list(map(fcn, self.possibilities)))/len(self.possibilities)
    def mean(self):
        return self.E(lambda x: x)
    def standard_deviation(self):
        return math.sqrt(self.E(lambda x: x*x)-self.mean()**2)
    def population_deviation(self):
        n=len(self.possibilities)
        return self.standard_deviation()*math.sqrt(n/(n-1))
    def beat(self, val):
        n=len(self.possibilities)
        m=len(list(filter(lambda x: x>=val, self.possibilities)))
        return m/n
    def remove(self, n):
        self.possibilities.remove(n)
    def __contains__(self, n):
        return n in self.possibilities
    def __str__(self):
        return 'The '+str(len(self.possibilities))+' possibilities are: '+str(self.possibilities)+'\n mean='+str(self.mean())+' ; SD='+str(self.standard_deviation())+'\n P(beating mean)='+str(self.beat(self.mean()))

if __name__=='__main__':
    x=Possibilities()
    while(len(x.possibilities)>1):
        print('')
        print(x)
        inp = input('What value was revealed? ')
        float_val = float(inp)
        if float_val in x:
            x.remove(float_val)
        else:
            print(float_val, 'is not a possible value.')
    print('You win', x.possibilities[0])    
Published in: on 2009.06.25 at 21:17  Leave a Comment  
Tags: , , , , ,

software facilities for teaching mathematics

Two stories caught my imagination today.  One is a geometry program akin to something like Geometer’s Sketchpad, KIG (for KDE Interactive Geometry), described by an article in Linux Journal.  The KDE EDU project has a number of great programs available for education.

The other is an idea for talking about averages, expectation, and probability.  It uses the TV show “Deal or no Deal” as backdrop, trying to evaluate whether or not to accept the Banker’s deal.  I got the idea while reading an issue of Linux Journal with an article by Dave Taylor (subscription required).  To my taste the implementation in shell script is a might obscure.  I would probably use Python to craft the solution while students described how to calculate the various quantities, as the notation appears (or could be made to appear with a few prior function definitions) more mathematical.  The program would ask which boxes we opened and progressively give updated statistics on the likelihood of winning it big.

Published in: on 2009.06.23 at 12:48  Comments (1)  
Tags: , , , , , , ,