On Wed, Feb 29, 2012 at 3:30 PM, Christopher Lindgren <span dir="ltr"><<a href="mailto:Chris.Lindgren@my.ndsu.edu">Chris.Lindgren@my.ndsu.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
While some may have an affinity for programming languages, as they are, I'm not so sure that programming should be constructed upon a binary of natural/unnatural. This binary limits the potential for creating other identities around the scope of who and what a programmer should be, do, examine, and create.<br>
</blockquote><div>Agreed and "hard" would have been a better word. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Literacy acquisition is far more complex than naturalness to the medium of any structured/unstructured language, and Miriam Posner just posted on some of those constructions that consequently produce such social stratification: <a href="http://miriamposner.com/blog/?p=1135" target="_blank">http://miriamposner.com/blog/?p=1135</a><br>

<br>
I feel as though that this response may come across as being cross, but I just hope to challenge the construction of what constitutes a "natural" ability within any discipline, as I am currently dealing with such issues in Composition Studies/Critical Code Studies.<br>
</blockquote><div>No offense taken or perceived "crossness"  in any of the emails in this chain.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Honestly, I would just like to see such social complexities taken more into account with projects such as OLPC/Sugar, etc., and I hope that said projects could be a catalyst for displaying and responding to the social nature of developing smarter computing cultures, rather than keeping both eyes too deep in the code.<br>
</blockquote><div>Agreed.  That is the one areas where I believe the Scratch Web Site has been really successful and we can learn a lot.  We really need a web site for kids to share what they create, re-mix and interact.  That is a big missing I hope to be able to help address some time this year (volunteer programmers welcome!!!)</div>
<div><br></div><div>Thanks,</div><div>Stephen</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
Chris Lindgren<br>
Graduate Instructor<br>
Department of English, Rm 217<br>
North Dakota State University<br>
Fargo, ND 58105<br>
<a href="http://www.clindgrencv.com" target="_blank">www.clindgrencv.com</a><br>
<br>
Research Assistant<br>
Sugar Labs @ NDSU | <a href="http://fargoxo.wordpress.com" target="_blank">fargoxo.wordpress.com</a><br>
<br>
________________________________________<br>
From: <a href="mailto:iaep-bounces@lists.sugarlabs.org">iaep-bounces@lists.sugarlabs.org</a> [<a href="mailto:iaep-bounces@lists.sugarlabs.org">iaep-bounces@lists.sugarlabs.org</a>] on behalf of Yamaplos . [<a href="mailto:yamaplos@gmail.com">yamaplos@gmail.com</a>]<br>

Sent: Wednesday, February 29, 2012 10:29 AM<br>
To: Steve Thomas<br>
Cc: iaep; squeakland<br>
Subject: Re: [IAEP] Why Is programming an unnatural activity?<br>
<div><div class="h5"><br>
Steve,<br>
<br>
for some reason the link to your blog didn't work for me. JIC others<br>
needed it, here:<br>
<a href="http://mrstevesscience.blogspot.com/2012/02/why-is-programming-unnatural-activity.html" target="_blank">http://mrstevesscience.blogspot.com/2012/02/why-is-programming-unnatural-activity.html</a><br>
<br>
Brilliant!<br>
I really appreciate you pointing out these great ideas to the rest of us.<br>
<br>
For many years I have struggled on trying to understand what makes it<br>
so that some people can and others can't. My conclusion is still that<br>
it is clearly a "gifting", part of the uniqueness every living being<br>
is created with. Some are "natural" programmers, others aren't. The<br>
latter being the majority by far, ergo, as a general thing<br>
"programming is unnatural", end of story.<br>
Ideologically this is very inconvenient, of course, since it is quite<br>
unfashionable, nay, *very* inappropriate, political incorrect to point<br>
at differences in potential from conception, but, no longer being<br>
constrained by ideology, I can afford to call it as it is.<br>
<br>
This still leaves me with trying to figure out who it  makes sense to<br>
invest in. And apparently more difficult, how best to "seed" that<br>
process, and overcome "blocks" (in some way what your authors call<br>
"bugs"), some of these set there by the kindness of the official<br>
one-size-fits-all education experts. Your notes and the authors you<br>
point out will help learn and understand how this all happens, thank<br>
you.<br>
<br>
Of course, even then we are left with trying to figure out how to beat<br>
socioeconomics, like this kid in a Nepal school I met, that will have<br>
extra struggles to go through to achieve his potential.<br>
<br>
2012/2/29, Steve Thomas <<a href="mailto:sthomas1@gosargon.com">sthomas1@gosargon.com</a>>:<br>
> So I am sharing my blog post Why Is programming an unnatural activity?Hoping<br>
> to get some feedback from the community.<br>
><br>
> For my P2PU course I have been looking at "Novice" programmers.  And in one<br>
> of the papers we were asked to read Mark Guzdial asks:<br>
><br>
> “Why?” Is programming an unnatural activity?<br>
><br>
> Could programming be made easier in a different form?<br>
><br>
> Could programming be taught in a different way that makes learning easier?<br>
><br>
> Or maybe we just have no idea how to actually measure what students know<br>
> about programming.* (1).*<br>
><br>
> My main problem with the Guzdial paper (this was more my problem than a<br>
> problem with the paper) is I felt it didn't provide enough details or<br>
> specifics on "Why it is so hard to learn to Program?"  I need specifics and<br>
> examples to get my head around things.  Roy Pea, was a great find and<br>
> perhaps not surprisingly (for me at least) the Resnick article was very<br>
> useful.<br>
><br>
> Pea (et al) talked about three classes of bugs:<br>
><br>
>    1. Parallelism Bugs<br>
>    2. Intentionality Bugs<br>
>    3. Egocentrism Bugs<br>
><br>
> *Parrallelism Bugs*<br>
> The Parallelism Bugs, is basically an "assumption of different lines in a<br>
> program can be active or known by the computer at the same time or<br>
> in parallel".  For example, look at this code:<br>
><br>
><br>
> If (Size == 10)<br>
>     print "Hello"<br>
> For Size in range(10):<br>
>     print Size<br>
><br>
> When High School students. in their second year of programming course, were<br>
> asked what they thought the program would print 8 out of 15 predicted<br>
> "Hello" would print after "10".<br>
><br>
> *Intentionality Bugs*<br>
> The Intentionality Bugs, is the idea in the child's mind that "the program<br>
> has goals and knows or sees what will happen elsewhere in itself."<br>
><br>
> *Egocentrism Bugs*<br>
> The Egocentrism Bugs, stem from the belief that there "is more of their<br>
> meaning for what they want to accomplish in the program than is actually<br>
> present in the code."  Funny, I see these kinds of bugs all the time in my<br>
> code and those of other experience programmers :)<br>
><br>
> *The Super Bug*<br>
> He concludes that all these derive from the Super Bug:<br>
><br>
> <<a href="http://4.bp.blogspot.com/-sQRGOhtVBbM/T03XIvqxgvI/AAAAAAAABBg/itlJA6dtKhU/s1600/SuperBug%0D.png" target="_blank">http://4.bp.blogspot.com/-sQRGOhtVBbM/T03XIvqxgvI/AAAAAAAABBg/itlJA6dtKhU/s1600/SuperBug%0D.png</a>><br>

> The idea that there is a "hidden mind somewhere inside the programming<br>
> language that has intelligent and interpretive powers."  Not surprising<br>
> since most of kids experiences are with semi-intelligent beings (aka<br>
> Parents)<br>
><br>
> MultiLogo: A Study of Children and Concurrent Programming - Mitchel<br>
> Resnick<<a href="http://llk.media.mit.edu/papers/MultiLogo.html" target="_blank">http://llk.media.mit.edu/papers/MultiLogo.html</a>><br>
> Resnick, noted that:<br>
><br>
> "This sequential paradigm does not match the way the real world works:<br>
> people and animals act in parallel, objects interact in parallel. As a<br>
> result, many real-world activities can not be modelled in a natural way<br>
> with sequential programming."<br>
><br>
> Thus developed a concurrent or parrallel version of Logo (Multi-Logo), so<br>
> they kids had a language/environment that more closely matched their view<br>
> of the world.  Although he did not go "parrallel" enough, and in his<br>
> lessons learned asked "<br>
><br>
> *SideNote*: I used to think and say that Concurrent Programming was really<br>
> really hard.  I had plenty of evidence to back this up and had heard and<br>
> read much smarter people than me saying the same thing.  Then I encountered<br>
> Etoys (and later Scratch) and started teaching these to kids.  And realized<br>
> that Concurrent Programming is actually easier (although you do have the<br>
> added complexity of syntonization issues) .  The problem was not the<br>
> topic/idea, it was the language we use to think about it.<br>
><br>
> Resnick noted that "In general, students appropriated the idea of agents<br>
> sending messages to one another quite easily."  Too bad we don't teach more<br>
> Smalltalk.<br>
> He identified three types of bugs specific to concurrent programming:<br>
><br>
>    1. Problem Decomposition Bugs<br>
>    2. Synchronization Bugs<br>
>    3. Object Oriented Bugs<br>
><br>
> *Problem Decomposition Bugs*<br>
> "These bugs arise out of students' difficulties decomposing problems into<br>
> actions to be performed concurrently by multiple agents."  Here there are<br>
> two types of decomposition:<br>
><br>
>    1. functional decomposition - dividing a problem in to simpler<br>
>    sub-problems (what needs to be done)<br>
>    2. agency decomposition - dividing the functional pieces among different<br>
>    agents (who does it)<br>
><br>
><br>
> *Synchronization Bugs*<br>
><br>
> "These bugs arise out of students' difficulties coordinating and<br>
> orchestrating the activities of multiple agents."<br>
> These bugs he divides into two type: Unintended Sequentiality and<br>
> Unintended Concurrency. In these cases the student expected Sequetiality<br>
> and got Concurrence (or vice versa).<br>
><br>
> It seems that in designing Multi-Logo to deal with synchronization he<br>
> provided two mechanisms: ask and demand.  Where when you "ask" an agent<br>
> something (ex: flash light -  for 20 seconds) the request is queued up to<br>
> be executed in the order received. When you "demand" the agent interrupts<br>
> what is going on to perform the request (or it might simply put it at the<br>
> head of the queue, I am not sure).  It is interesting, at least to me, that<br>
> Scratch, developed later by Resnick and his team,  got rid of the ask and<br>
> demand and went with a "broadcast" "wait" and "do for X seconds" to allow<br>
> for synchronization.  I believe this simplifies and avoids a number of<br>
> problems for novice programmers.<br>
><br>
> *Object Oriented Bugs*<br>
> "These bugs arise out of students' confusion among different types of<br>
> "objects"  Multi-Logo has multiple types of objects: agents, turtle, and on<br>
> the Lego Interface box (think early NXT) ports and sensors.  Part of this<br>
> confusion may have been the overloading of "halt" which for an agent,<br>
> Another quote for Guzial:<br>
><br>
>    - " our current programming languages do not allow people to program the<br>
>    way that they think about the tasks"<br>
>    - Section: "Making tools better by shifting to Visual Programming"<br>
>    - "having students build their own visualizations had significant impact<br>
>    on those students’ learning."<br>
><br>
><br>
> *Resnick's Lessons Learned*<br>
> "It is a good idea for students to "play agent"--that is, act out what each<br>
> agent is supposed to do. This activity requires a group of students, each<br>
> playing the role of a different agent."  I really like this approach with<br>
> novices and often warn students "Step away from the computer and no one<br>
> will get hurt".  Having them act out the program and program each other is<br>
> a good way to do this.<br>
> In designing Multi-Logo he realized he did not go far enough<br>
> in parallelism: "An alternate approach, of course, is to change the design<br>
> of MultiLogo to match students' preconceptions. For example, I could<br>
> redesign MultiLogo agents so that each agent could do several things at the<br>
> same time, in line with students' expectations of "excessive parallelism."<br>
>  He later did have agents that can do several things at the same time.<br>
> He also discussed the idea of design the environment match the students<br>
> pre-conceptions. Would be interesting to find out what problems it solves<br>
> (and those it doesn't) and what new problems it creates.<br>
><br>
><br>
> FInally, for a real treat* *at some possibilities for a new programming<br>
> environment see this:<br>
><br>
> Bret Victor - Inventing on Principle <<a href="http://vimeo.com/36579366" target="_blank">http://vimeo.com/36579366</a>> from<br>
> CUSEC<<a href="http://vimeo.com/cusec" target="_blank">http://vimeo.com/cusec</a>><br>
>  on Vimeo <<a href="http://vimeo.com/" target="_blank">http://vimeo.com/</a>>.<br>
><br>
> References:<br>
> NOTE: If you have limited time, I would recommend reading (2) then (5),<br>
> then for a real treat watch the Brett Victor talk (7)<br>
> (1) Why Is It So Hard to Learn to Program - Mark Guzdial<br>
> (2) Children's Mental Models of Recursive LOGO Programs - D. Midian Kurland<br>
> and Roy D. Pea<br>
> (1985)<<a href="http://www.stanford.edu/~roypea/RoyPDF%20folder/A27_Kurland_Pea_85.pdf" target="_blank">http://www.stanford.edu/~roypea/RoyPDF%20folder/A27_Kurland_Pea_85.pdf</a>><br>
> (3) Language Independent Conceptual "Bugs" in Novice Programming - Roy D.<br>
> Pea (1986) <<a href="http://www.stanford.edu/~roypea/RoyPDF%20folder/A28_Pea_86.pdf" target="_blank">http://www.stanford.edu/~roypea/RoyPDF%20folder/A28_Pea_86.pdf</a>><br>
> (4) The Buggy Path to the Development of Programming Expertise - Roy D. Pea<br>
> and Elliot Soloway<br>
> (1987)<<a href="http://www.stanford.edu/~roypea/RoyPDF%20folder/A32_Pea_etal_87.pdf" target="_blank">http://www.stanford.edu/~roypea/RoyPDF%20folder/A32_Pea_etal_87.pdf</a>><br>
> (5) MultiLogo: A Study of Children and Concurrent Programming - Mitchel<br>
> Resnick <<a href="http://llk.media.mit.edu/papers/MultiLogo.html" target="_blank">http://llk.media.mit.edu/papers/MultiLogo.html</a>> (1990)<br>
> (6) Programming Environments for Novices - Mark Guzdial<br>
> (2002)<<a href="http://coweb.cc.gatech.edu/guzdial/uploads/18/novice-envs.pdf" target="_blank">http://coweb.cc.gatech.edu/guzdial/uploads/18/novice-envs.pdf</a>><br>
> (7) Brett Victor - Inventing on Principle<br>
> (2012)<<a href="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCkQtwIwAA&url=http%3A%2F%2Fvimeo.com%2F36579366&ei=KsZNT67SJ4GCgwf1-Lm_Ag&usg=AFQjCNGHACfYpq0IFm1Krb2xBGWAF-_JLw&sig2=eGsjoGhKYkMHkr4HmZLCyw" target="_blank">http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCkQtwIwAA&url=http%3A%2F%2Fvimeo.com%2F36579366&ei=KsZNT67SJ4GCgwf1-Lm_Ag&usg=AFQjCNGHACfYpq0IFm1Krb2xBGWAF-_JLw&sig2=eGsjoGhKYkMHkr4HmZLCyw</a>><br>

><br>
</div></div>_______________________________________________<br>
IAEP -- It's An Education Project (not a laptop project!)<br>
<a href="mailto:IAEP@lists.sugarlabs.org">IAEP@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/iaep" target="_blank">http://lists.sugarlabs.org/listinfo/iaep</a><br>
<br>
</blockquote></div><br>