<div>I&#39;m numbering from 0, Python style, so this was actually our third meeting</div>
<div>in the boyhood home of 2x Nobel laureate Linus Pauling, sitting around</div>
<div>the big table, with projector (Optoma), speakers (including woofer), and </div>
<div>laptop (Toshiba Satellite, WinXP w/ Python 2.5, VPython, POV-Ray 3.6,</div>
<div>wxPython and PythonCard).</div>
<div>&nbsp;</div>
<div>The course for adults parallels my Saturday Academy course to some </div>
<div>degree and I again showed Code Guardian as an opening cartoon feature,</div>
<div>to show what one guy and some friends could now accomplish with a </div>
<div>rendering engine, given sufficient talent, skills and commitment (can&#39;t</div>
<div>trivialize any of those, if the end result is great art, which Code Guardian</div>
<div>certainly is (<a href="http://cee-gee.net">cee-gee.net</a>)).</div>
<div>&nbsp;</div>
<div>By way of intro on the whiteboard (erasable colored pens), I drew three</div>
<div>partially overlapping circles, Venn Diagram style (each overlapping </div>
<div>the others, a place in the center where they all overlappped).&nbsp; In the</div>
<div>circles I wrote M, V, C for Model, View, Controller.&nbsp; </div>
<div>&nbsp;</div>
<div>I quickly connected MVC&nbsp;to a history of programming we&#39;d already </div>
<div>developed:&nbsp; </div>
<div>(i)&nbsp; wild west spaghetti code era, deriving from hard wiring</div>
<div>(ii)&nbsp; compiled imperative languages (COBOL, Hopper)</div>
<div>(iii) structured programming (Djikstra), </div>
<div>(iv) then more sophisiticated paradigms, including OO and then DP, </div>
<div>where DP = design patterns, let&#39;s say premised on OOP, and where</div>
<div>MVC is one very common design pattern people talk about.</div>
<div>&nbsp;</div>
<div>In this class, M, our model, depends mostly on the XYZ Cartesian</div>
<div>style math kids already learn as a part of middle and high school, </div>
<div>i.e. the usual pre-college analytical geometry pioneered by Descartes,</div>
<div>Fermat and folks like that, already very entrenched, and later, </div>
<div>via Hamilton, Gibbs, Heaviside and others, becoming today&#39;s</div>
<div>&quot;vector algebra&quot; from whence the term &quot;vector graphics&quot; is derived.</div>
<div>&nbsp;</div>
<div>So for a Model, we&#39;re using high school analytic geometry and</div>
<div>vector algebra.&nbsp; Good way to lean both, with Python mediating.</div>
<div>Start with Dog and Monkey as subclasses of Mammal, to get</div>
<div>familiar with a few&nbsp;__rib__ special names, the whole idea of </div>
<div>classes, subclasses and objects, then move to &quot;math objects&quot;</div>
<div>(more abstract) such as Vector, Edge and Polyhedron.</div>
<div>&nbsp;</div>
<div>V, our view, comes in two basic flavors:&nbsp; </div>
<div>&nbsp;</div>
<div>(A) real time and </div>
<div>(B) render time.</div>
<div>&nbsp;</div>
<div>In real time, you get such as OpenGL, with a simplifying VPython</div>
<div>facade, and/or DirectX or whatever.&nbsp; Engines that respond in real</div>
<div>time to give a game-like experience (or a game).&nbsp; Doom by id set </div>
<div>the standard when PCs were still new, showing what intelligent </div>
<div>coding could accomplish, in terms of a first person shooter, </div>
<div>with the minimal hardware of the day.&nbsp; The games have only </div>
<div>gotten more impressive since then.</div>
<div>&nbsp;</div>
<div>And yet when it comes to attention to small detail and photo-</div>
<div>realism, the real time games still can&#39;t reach the level of a rendered</div>
<div>movie, like &#39;Shrek&#39; or &#39;Cars&#39; or &#39;Over the Hedge&#39;.&nbsp; That&#39;s because in</div>
<div>render time we have all the time we need to trace every ray of </div>
<div>light, to get those photo-realistic frames, which only at the end</div>
<div>get strung together and projected at a real time frame rate.&nbsp; </div>
<div>&nbsp;</div>
<div>So this counts as our other broad category of View -- not like</div>
<div>these are the only two, plus many times we interleave them, </div>
<div>i.e. a real time game will suddenly switch to a canned loop</div>
<div>developed with ray tracing.</div>
<div>&nbsp;</div>
<div>To give students &quot;cave painting&quot; [1] insight into both kinds </div>
<div>of view, we use Python as our controller (C).&nbsp; Python talking </div>
<div>to&nbsp;VPython represents real time animation and simulation, </div>
<div>ala the game engines, whereas Python talking to POV-Ray</div>
<div>represents render time animation ala the movies, movies</div>
<div>like Code Guardian.&nbsp; </div>
<div>&nbsp;</div>
<div>Python also implements a lot of the Model, in that the polyhedra</div>
<div>and vector algebra we need is all exposed in source code, in </div>
<div>the form of stickworks.py and polyhedra.py.&nbsp; There&#39;s a minimal</div>
<div>Vector class, wrapped around VPython&#39;s, which we actually</div>
<div>keep using when writing Scene Description Language for </div>
<div>POV-Ray -- because in terms of the model, a vector is a vector</div>
<div>and all we need is to be able to add and scale them (__add__</div>
<div>and __mul__ them).</div>
<div>&nbsp;</div>
<div>In sum, I&#39;m seeing these major themes emerge from this course,</div>
<div>which I&#39;m regarding as open source and transferrable, usable </div>
<div>by other teachers and/or peers teaching peers (which explains</div>
<div>the screencasts):</div>
<div>&nbsp;</div>
<div>(1)&nbsp; history of computer programming, emergence of OO and DP</div>
<div>(2) MVC as a DP example, with broad categories of V being</div>
<div>&nbsp;&nbsp;&nbsp; (a) real time (games, some simulations, musc visualizers, </div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; screen savers)</div>
<div>&nbsp;&nbsp;&nbsp; (b) render time (cartoons, some simulations, Animusic,</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; photo-realistic static screen savers)</div>
<div>(3) Python is implementation language</div>
<div>(4) Vector graphics and analytic geometry for controlling the model</div>
<div>(5) Python playing well with others, gluing together different kinds</div>
<div>of engine (in this case OpenGL and POV-Ray).</div>
<div>&nbsp;</div>
<div>All of the above I think proves quite an eye opener for middle and</div>
<div>high schoolers, not only in terms of reinforcing their everyday </div>
<div>math and giving them entre to a powerful programming language,</div>
<div>but in terms of giving a &quot;how things work&quot; overview of a lot of</div>
<div>state of the art technology.&nbsp; </div>
<div>&nbsp;</div>
<div>Other courses will showcase different aspects of course.&nbsp; Like </div>
<div>in my course for Winterhaven (Portland Public), we focused </div>
<div>on XML (xml_rpc), GIS (Google Earth), and even a little on </div>
<div>MySQL (my geographic quiz showcases USA states and </div>
<div>capitals, very traditional, but with this Pythonic layer between </div>
<div>a database and the web, ala LAMP) [2].</div>
<div>&nbsp;</div>
<div>Kirby</div>
<div>&nbsp;</div>
<div>[1]&nbsp;&quot;cave painting&quot; means&nbsp;&quot;enough of a semblance to give</div>
<div>the idea but minus much detail&quot; (say &quot;dumbing down&quot; if&nbsp;</div>
<div>you like but&nbsp;I prefer &quot;homomorphism&quot; (vs. an&nbsp;&quot;isomorphism&quot;))</div>
<div>i.e. an analogy with many dimensions missing by design).</div>
<div>Example usage:&nbsp; </div>
<div><a href="http://mathforum.org/kb/thread.jspa?threadID=1418476">http://mathforum.org/kb/thread.jspa?threadID=1418476</a></div>
<div>&nbsp;</div>
<div>[2] <a href="http://mail.python.org/pipermail/edu-sig/2005-November/005533.html">http://mail.python.org/pipermail/edu-sig/2005-November/005533.html</a></div>
<div>
<div><a href="http://www.4dsolutions.net/ocn/geoquiz.html">http://www.4dsolutions.net/ocn/geoquiz.html</a></div>
<div>&nbsp;</div></div>