<div>Greetings edu-sig folks:</div>
<div> </div>
<div>I've got a somewhat long one here. I encourage any responders not to quote the whole thing, just go for the gusto and quote the one thing you wanna do a thread on? I welcome changes to the subject line. One of my bad habits is to introduce new topics in response to a pre-existing thread.</div>
<div> </div>
<div>1. PYCON</div>
<div>=========</div>
<div> </div>
<div>An entreaty that usa.pycon 2010 education track events get some chronicling here, by those lucky enough to attend. </div>
<div> </div>
<div>I'll be following remotely.</div>
<div> </div>
<div>2. OSCON</div>
<div>=========</div>
<div> </div>
<div>I've just submitted a proposal to OSCON for an education track talk in that Portland venue this summer. </div>
<div> </div>
<div>I'll let you know how that goes. There's no explicit education track in that conference I'm pretty sure.</div>
<div> </div>
<div>3. MFTDA</div>
<div>=========</div>
<div> </div>
<div>More thoughts on 'Mathematics for the Digital Age' (MFTDA):</div>
<div> </div>
<div>This could obviously be used at the college level as a discrete math course offering. </div>
<div> </div>
<div>The introduction clearly links it to 'Concrete Mathematics' which we used to discuss on this list. Tim Peters first brought it to my attention as I recall, whereas most other subscribers likely already knew of it. CM is used at Stanford (even today?) as a kind of on-ramp to TAOCP by Knuth. In fact, Knuth is a co-author of CM -- not news to many subscribers here I'm guessing.</div>
<div> </div>
<div>What I'd forgetten entirely, and what the MFTDA introduction reminds me of, is that 'Concrete Mathematics' is an amalgam of "CONtinuous" and "disCRETE" -- hence CONCRETE.</div>
<div> </div>
<div>3.a: DISCRETE AND/OR DIGITAL?</div>
<div>============================</div>
<div> </div>
<div>In my thread with Gary Litvin, this was one of my chief concerns: are we boxing ourselves in, by calling it discrete math?</div>
<div> </div>
<div>In taking Python (or any computer language) into the math classroom, we're *not* wanting to exclude topics simply because they're not traditionally considered "discrete math" topics, right? </div>
<div> </div>
<div>Consider calculators. They're digital devices just as surely as computers are, and they permeate the math curriculum at all levels. Teachers use those TIs and Casios to study continuous curves in one or more variables, to explore calculus concepts. Consider Mathematica, likewise digital....</div>
<div> </div>
<div>Some of us have been hoping to interest local community colleges in serving as venues for these teacher training programs that in some cases equip math teachers already in the field with some of these new skills. The idea, as I've posted about already, was laid out during a workshop last summer: lets add a new high school course that satisfies a math requirement, isn't an elective. </div>
<div> </div>
<div>As such, this course wouldn't be on the CS AP track. Trying to prepare students to pass some AP CS test would just take too much time away from the math we want to study. </div>
<div> </div>
<div>Or could there be a new test, call it AP something else? </div>
<div> </div>
<div>I doubt ETS has much interest in new categories of AP (not that all of us care that much about US tracks in the first place).</div>
<div><a href="http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/index.html">http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/index.html</a></div>
<div> </div>
<div>
<div>I've been hyping "digital mathematics" as a kind of niche marketing term, as distinct from "discrete" but is this wise? </div> </div>
<div>Per math-thinking-l (another list), I'd say I'm in the distinct minority in thinking "digital math" is a good term. It's unexplored, not conservative, whereas discrete math is already accepted and entrenched. </div>
<div> </div>
<div>To try going in with some "digital math" is just stacking the deck against one's own efforts, increasing the odds against success. Still, we need to call it something. Computer Math? Computational Math? Discrete Math?</div>
<div> </div>
<div>3.b WHAT LEVEL OF DIFFICULTY?</div>
<div>=============================</div>
<div> </div>
<div>Back to the Litvin text, which has a lot going for it, I think it might be too difficult for some of the students we're hoping to reach. </div>
<div> </div>
<div>Phillips Academy is one of the most prestigious, reminiscent of Catlin Gabel or Oregon Episcopal in our neck of the woods (I could rattle off a few more). The text comes across as "early college" i.e. college level for high schoolers, or at least as a kind of advanced Algebra 2 (thinking of the chapter on polynomials in particular). </div>
<div> </div>
<div>It goes all the way through RSA (public key crypto) as I've typically advocated we do.</div>
<div> </div>
<div>The good news is MFTDA (Math for the Digital Age) could be like TAOCP or SICP by Abelson, Sussman & Sussman, by forming the nucleus of a genre. In additional to full blown texts, we'll perhaps see a growing inventory of cyberspace assets contributed directly by teachers and students? </div>
<div> </div>
<div>That's hardly a hypothetical question actually, as those materials already exist in abundance (including as Youtubes in some cases), just need to be organized, glued together, and connected into curricula more successfully. </div>
<div> </div>
<div>For example, I often circle 'Warriors of the Net' as a great little cartoon about TCP/IP. But then do we want to get into those guts? </div>
<div> </div>
<div>MFTDA takes the more traditional route in diving into CPU / registers / memory, offers 8088 assembler, relates these to byte codes running on a VM ala Java and Python, other so-called interpreted languages. It's not either / or though: dig down to the chip on the one hand, dig down to bits over the wire on the other.</div>
<div> </div>
<div>The way I heard some of the teachers talk at our workshop on Aug 7, was more in terms of serving a refugee population feeling burned out on more traditional fare. They do Algebra 1, Geometry... and then decide against Algebra 2. </div>
<div> </div>
<div>These first two courses haven't been all that successful necessarily, meaning the motivation to continue along the pre-calc/ calculus track may not be present, and yet a 3rd year of math is required for that high school diploma. A computer science elective wouldn't satisfy that requirement. A discrete math offering would. </div>
<div> </div>
<div>So.... where do we go with this? What topics? In what depth? What solutions are already out there?</div>
<div> </div>
<div>3.c WHAT KILLED CODING?</div>
<div>====================</div>
<div> </div>
<div><a href="http://www.salon.com/tech/feature/2006/09/14/basic/">http://www.salon.com/tech/feature/2006/09/14/basic/</a> (related reading)</div>
<div> </div>
<div>Some of the advice I get from math teachers on math-teach (a list at the Math Forum) is to just forget about using a computer language. That was trendy in the 1980s maybe, but went out of fashion for a reason. </div>
<div> </div>
<div>I'm not clear on exactly those reasons were myself. In the 1980s, I was working in computer literacy for McGraw-Hill and it looked like Logo and BASIC would be moving in big time. </div>
<div> </div>
<div>A typical linear algebra text of that era, Wayne Bishop a co-author (one of the math-teach mainstays), had these BASIC programs in the back for multiplying and reducing matrices. That seemed the wave of the future back then, but then subsequent editions of that book have dropped the software component.</div>
<div> </div>
<div><a href="http://www.amazon.com/Elementary-Linear-Algebra-S-Venit/dp/0871500949/ref=tmm_hrd_title_2">http://www.amazon.com/Elementary-Linear-Algebra-S-Venit/dp/0871500949/ref=tmm_hrd_title_2</a></div>
<div> </div>
<div>Here's what I think might have happened: the shift to the object oriented paradigm left a lot of math teachers feeling programming was going off in some new direction and it'd be hopeless to try to keep up. </div>
<div> </div>
<div>Computer programming needed to go its own way (or so its seemed) and be strictly its own discipline, leaving mathematics students free to practice their own ways, minus this alien content.</div>
<div> </div>
<div>But then OO ala Smalltalk was actually supposed to make programming easier, the theory being we already think in terms of objects, of nouns, named things, with attributes and behaviors. This wasn't about inventing an entirely new paradigm for computer programming, it was about finding ways to express an existing paradigm (that of objects in the world) in computer languages.</div>
<div> </div>
<div>3.d OBJECTS FIRST?</div>
<div>====================</div>
<div> </div>
<div>Sorry this is being so long. Let me just end with another take on the "objects first" approach.</div>
<div> </div>
<div>In order to make Python more accessible and the mathematics correspondingly easier, we begin with very simple classes based around animals (e.g. the Turtle class). We encourage thinking about animals, their attributes and behaviors. Only later on will we try our had at more generic "math objects" such as Rational Numbers. </div>
<div> </div>
<div>MFTDA actually includes a Rational number class, but doesn't give it much focus. It seems to be the only class definition in the entire text. I think this maybe mirrors an attitude among CS professors that classes and objects are an advanced 2nd year topic.</div>
<div> </div>
<div>My own view is somewhere in between: I think a full blown treatment of OO, including abstract classes, metaclasses, multiple inheritance, is indeed advanced and probably not suitable for a one year or half year high school math course. </div>
<div> </div>
<div>Or, if suitable, then mostly in the form a really primitive examples of the Foo and Bar class variety, more to communicate the generic design patterns and concepts than to develop full blown computer programs such as one might use in production environments.</div>
<div> </div>
<div>What examples do teachers wish to contribute? What would be a good introductory example of multiple inheritance I wonder? I recall David MacQuigg sharing some examples where __mro__ (method resolution order) made an appearance.</div>
<div> </div>
<div><a href="http://wikieducator.org/User:Macquigg">http://wikieducator.org/User:Macquigg</a> (I recommend reading Dr. Macquigg's excellent testimonial here, with a link to his PyWhip).</div>
<div> </div>
<div>So yes, the CS professors are right. A full blown intro to classes is too much to start off with.</div>
<div> </div>
<div>On the other hand, a few simple classes such as Rational Number, Integer Modulo N, Polynomial, Vector, Edge, Polyhedron, could take their place alongside String, List, Set, other primitives. </div>
<div> </div>
<div>Note: Rational Number is now a primitive in the Standard Library, thanks to the fractions.Fraction class.</div>
<div> </div>
<div>>>> from fractions import Fraction<br>>>> a = Fraction(1, 4)<br>>>> b = Fraction(2, 5)<br>>>> c = Fraction(2, 10)<br>>>> a<br>Fraction(1, 4)<br>>>> b<br>Fraction(2, 5)<br>
>>> c<br>Fraction(1, 5)<br>>>> a + b + c<br>Fraction(17, 20)<br>>>> a * b * c<br>Fraction(1, 50)<br>>>> a ** 2 + b ** 3 - c ** 4<br>Fraction(1249, 10000)</div>
<div> </div>
<div>The idea, then, is to build some awareness of classes and objects using familiar analogies relating to every day life. A class definition is a blueprint (one needs to explain "blueprint" -- design, plan) whereas an instance of the class has it's own place in memory, its own "self" as it were (intro to Python "self" syntax). </div>
<div> </div>
<div>Do some animal classes. Then note how dot notation is what's used to access the attributes and behaviors of a user-defined object. </div>
<div> </div>
<div>Then note how Python's primitive objects are likewise instances of various classes (e.g. the List class). </div>
<div> </div>
<div>It's dot notation itself that we're hoping to make second nature (familiar, not too arcane).</div>
<div> </div>
<div>3.e THE TIME DIMENSION</div>
<div>====================</div>
<div> </div>
<div>That's the breakthrough in understanding we're seeking: brief anatomy lessons with user-defined classes provide enough background to anchor an understanding of built-in classes and objects. It's really "dot notation" itself that we're seeking to anchor here. noun.verb(args) and noun.adjective provide a primitive grammar or logic. We also think in terms of a "life cycle" for objects, from birth to garbage collection once no-longer named. </div>
<div> </div>
<div>Asking whether two objects are contemporaneous or "partially overlapping" should be a sensible question. Mathematics tends to be sequential, in terms of definitions and theorems, building on itself, but with no explicit reference to a time dimension. Focusing on "objects in memory" brings more of a temporal dimension into focus, allowing us to talk about local vs. global, about scope. MFTDA looks at scope quite a bit, as one needs to in programming.</div>
<div> </div>
<div>What do others think? Does adding programming put more emphasis on "time" than we're used to?</div>
<div> </div>
<div>Having examined a turtle, snake, monkey and dog class in some detail, we're ready to appreciate that lists, dictionaries and strings are likewise instances of classes, as are numbers themselves. Yes, we've already used primitive data structures to define our Dog and Turtle. That's OK. Now we're ready to zoom in on the "guts" of a Snake to see how the stomach (a list) is likewise an object, just like the snake itself.</div>
<div> </div>
<div><a href="http://wikieducator.org/PYTHON_TUTORIALS#Classes">http://wikieducator.org/PYTHON_TUTORIALS#Classes</a></div>
<div> </div>
<div>This is a great segue to the turtle of Standard Library fame. We're now ready to think in terms of instantiating a turtle object and controlling it using dot notation. We've kept the essence of Logo, while creating an "explicit receiver" (to use Smalltalk jargon).</div>
<div> </div>
<div>Then perhaps we go along our merry way, like in MFTDA, focusing primarily on functions for awhile (maybe generators), taking our time getting back to user-defined classes. On this second pass, we'll get more into "math objects" such as Polyhedra (my favorite) but we'll still be less advanced than in a true CS course treatment.</div>
<div> </div>
<div>This is a proposal only, a reiteration of my earlier posts in many ways. What I'm supposing would work best is if a training team set up these possibilities, but then left it to individual teachers or faculty teams which way to go. Having some standards in the picture needn't squeeze every degree of freedom out of the picture. A teacher preferring an "objects first" approach would be free to explore that, whereas a different teacher might consider this way too difficult and inappropriate for his or her students. Not every teacher wants to use VPython for example, cool though that package may be.</div>
<div> </div>
<div>Especially when working towards a few pilots, I think it's important to not intimidate, not scare away, by suggesting TOOWTDI ("there's only one way to do it").</div>
<div> </div>
<div>3.f MY ROLE</div>
<div>====================</div>
<div> </div>
<div>Any reader making it this far might be asking whether I have any authority or standing to be suggesting any of this. </div>
<div> </div>
<div>Who am I to be setting education policy, in the State of Oregon or anywhere else? </div>
<div> </div>
<div>The answer is I'm no one in particular, and I'm not in a position to tell others how to play their hands. </div>
<div> </div>
<div>My own approach was to open source most of my materials. I have not written a text book. I am not an appointed education czar.</div>
<div> </div>
<div>My model is one of democratic participation and wanting to foster lots of discussion. </div>
<div> </div>
<div>Minus much participation or activism, I don't think there's much chance of much of anything happening, in terms of getting some of these new kinds of math classes going. The status quo seems the most comfortable option until one day people wake up to the fact they're way behind the curve in some ways. At that point, the future shock may be severe and result not in creative action, but semi-paralysis. That seems closer to what's happening in so many communities: future shock + semi-paralysis.</div>
<div> </div>
<div>Intel and the Gates Foundation will continue to earmark millions if not billions for education, but none of those funds will go towards beefing up math classes with some industrial grade computer language unless we take a more activist approach. </div>
<div> </div>
<div>The opportunity to better integrate topics around computers will simply fall by the wayside, as it has since the 1980s in most cases (with some happy exceptions).</div>
<div> </div>
<div>Let's get creative then? Innovate? I'm hoping the Atlanta conference will help move us along in some promising new directions. I will be monitoring this list. Know of good blogs? Post some links?</div>
<div> </div>
<div>Kirby</div>
<div> </div>