On Thu, Jul 14, 2011 at 8:20 PM, Corey Richardson <span dir="ltr"><<a href="mailto:kb1pkl@aim.com">kb1pkl@aim.com</a>></span> wrote:<br><div class="gmail_quote"><div><br><< SNIP >><br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
But, my real question to you educators is, which paradigm do you use when<br>
first teaching programming, and why? My peers cite OOP because, frankly,<br>
it's the only thing they've learned and have heard that e.g. procedural<br>
programming is bad. Personally, I like to use procedural (this is in<br>
Python, of course) for as long as possible. I don't even mention objects<br>
for a while, they aren't necessary or even desirable in many instances.<br>
I love using games as a project, and that's when I swoop in and bring up<br>
objects. My segue are usually the monsters of a text based game. I don't<br>
have them design an object for everything because it introduces complexity<br>
without benefit. Of course, it's not as flexible/correct a program as it<br>
could be, but it's a nice slow ease into OOP. But it certainly isn't the<br>
ONLY paradigm out there, and certainly not the most useful for everything.<br>
<br>
Any other insights?<br>
<font color="#888888">--<br>
Corey Richardson<br>
"Those who deny freedom to others, deserve it not for themselves"<br>
-- Abraham Lincoln<br>
</font><br></blockquote><div><br>I like the Lincoln quote.<br><br>Many approaches have validity of course, especially in the hands<br>of someone experienced who keeps it interesting.<br><br>When I first splashed into programming, OOP had yet to hit, but<br>
it wasn't like there wasn't already a veritable menagerie of amazing<br>languages -- even sans OOP. <br><br>Like, we had SNOBOL and APL and PL/1 (just a few I got to mess <br>around in).<br><br>I transitioned to OOP along the xBase track, as many did:<br>
dBase II, dbase III, dBase IV, Clipper, FoxPro, FoxPro for <br>Windows, and Visual FoxPro (VFP).<br><br>Some of my peers along that track are just beginning to appreciate <br>Python, now that Microsoft has signaled it's pulling the plug on <br>
VFP.<br><br><a href="http://fox.wikis.com/wc.dll?Wiki~VFPRoadMapDiscussion">http://fox.wikis.com/wc.dll?Wiki~VFPRoadMapDiscussion</a><br><br>The J community (J being a successor to APL (or a mutant <br>child of?)) uses a grammar-teaching approach to teaching <br>
programming, referring to verbs, nouns, adverbs, other parts<br>of speech as parts of its language.<br><br><a href="http://www.cs.trinity.edu/~jhowland/math-talk/functional1/">http://www.cs.trinity.edu/~jhowland/math-talk/functional1/</a><br>
<br>Following that model, I sometimes teach OOP by writing <br>things like: <br><br>noun.verb(args)<br>thing.adjective <br>thing.verb()<br>noun.property <br><br>and so on, deliberately confusing "parts of speech" talk with the <br>
OOPy stuff. Then I teach looking at the world that way, not using<br>a computer language. What are the properties and behaviors<br>of a flower? A panda? Analyze an airport in terms of its objects <br>and processes. Come back to computers when you're ready,<br>
take your time.<br><br>But then when I can get away with it, my topic is not "programming"<br>or "CS" but a more exotically named "digital math" or (last year) <br>"martian math". In the more formal presentations, the latter is<br>
a topic area within the former:<br><br><a href="http://wikieducator.org/Digital_Math">http://wikieducator.org/Digital_Math</a><br><br>In this approach, you want to develop an awareness of types <br>(types of things -- like types of biotum) and their respective <br>
namespaces. This dovetails with Carl's focus on objects <br>before classes. <br><br>A "list" is a convergence of many concepts, a "dict" is another, <br>an "int" yet another and so on. A "type" is not just a simple <br>
thing. Knowing about types helps us learn about math, <br>with its concentric N, Z, Q, R and C types.<br><br>In treating computer languages as math notations, we're <br>treading somewhat in the footsteps of Russell and Frege (etc.), <br>
except we're using Stallman type tools for building our <br>machinery, more than the tools of the so-called analytic <br>philosophers (Quine etc.)<br><br>Kirby<br><br>@ Pacific Lutheran University (PLU)<br>(visiting)<br>
<br></div></div>