Group,
Dance Dance Revolution and Guitar Hero are video/arcade games where the human apes what the computer is doing. Can we teach humans programming by having the computer demonstrate a programming concept and then have the human ape the computer? And learning programming might actually be fun for more people? Or is learning a group thing?
Wouldn’t this be a good way of brining PbD and software visualization together?
The practical example would be teaching current deep learning techniques to more people.
Is anyone doing the bonsai.ai programming language in a more non-textual way that a program can teach visually or kinesthetically to people?
However, I can’t stand step-by-step tutorials or dance dance revolution or guitar hero. If the computer can teach me, then it can do it on it’s own, right? Why don’t step-by-step tutorials come with “Do it on my machine” button(s)? Tessa Lau can probably answer that one.
Thanks,
John Carlson
This isn't technically "programming by demonstration" but rather "learning programming by demonstration".
Most people have no problem learning how to "program" if it just involves the structure and meaning of the spells that the computer will recognize, but they get hung up on how to think like the computer so they can solve problems abstractly enough for the computer to understand.
Thinking is something we do. I think.
Most things take practice to learn. People need to practice thinking. How does one practice thinking? By doing thinking.
It’s not “I do, therefore I am”. Animals do things. We’re trying to raise people from doers into thinkers, and one way of doing that is showing them examples of thinking. Lists are ways to organize your mind around a subject “Things to do.” So we show people examples of lists. I learn well by example. Perhaps some do not? What is dance dance revolution and guitar hero but lists of things to do? So we give people lists of things to think? This is beginning to sound like koans.
To teach one how to think, what lists should one be presented with? How does one teach how to organize those lists in a reasonable fashion? Is it one huge list? What order does one proceed through the list? Etc. etc.
Those concrete math problems are presented before the abstract ones. Should we start with concrete examples, or abstract examples?
John
Sent from Mail for Windows 10
From: Sean McDirmid
Sent: Monday, July 10, 2017 5:40 PM
To: augmented-...@googlegroups.com
Subject: Re: Teaching "Programming by Demonstration" by Demonstration; DeepLearning Augmented Programming
This isn't technically "programming by demonstration" but rather "learning programming by demonstration".
Most people have no problem learning how to "program" if it just involves the structure and meaning of the spells that the computer will recognize, but they get hung up on how to think like the computer so they can solve problems abstractly enough for the computer to understand.
A reasonable way to go about it is to "hey, here are some problems, here is how the problems are solved, now go solve a hundred of these as homework." However, programming problems are not as nice as math problems (and even then, the math we learn that way is fairly worthless). We have to teach thinking, not doing.
From: augmented-...@googlegroups.com <augmented-...@googlegroups.com> on behalf of John Carlson <yott...@gmail.com>
Sent: Monday, July 10, 2017 1:33 PM
To: augmented-...@googlegroups.com
Subject: Teaching "Programming by Demonstration" by Demonstration; Deep Learning Augmented Programming
Group,
Dance Dance Revolution and Guitar Hero are video/arcade games where the human apes what the computer is doing. Can we teach humans programming by having the computer demonstrate a programming concept and then have the human ape the computer? And learning programming might actually be fun for more people? Or is learning a group thing?
Wouldn’t this be a good way of brining PbD and software visualization together?
The practical example would be teaching current deep learning techniques to more people.
Is anyone doing the bonsai.ai programming language in a more non-textual way that a program can teach visually or kinesthetically to people?
However, I can’t stand step-by-step tutorials or dance dance revolution or guitar hero. If the computer can teach me, then it can do it on it’s own, right? Why don’t step-by-step tutorials come with “Do it on my machine” button(s)? Tessa Lau can probably answer that one.
Thanks,
John Carlson
--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.
People will learn to abstract math by doing lots of concrete math. The problem is, programming is the art of abstraction, so we get into these meta discourse problems (can we learn abstracting by abstracting over concrete abstraction tasks?).
Showing someone what a list is is very different from showing them how a list is used. Or more to the point, you need to get them to try to solve a problem without lists, reaching a very bad place, then introducing them to lists (or nudging them to invent lists themselves) so they can solve the problem in a better way.
DDR is not about dancing. It isn't supposed to be about dancing, that isn't even part of the design! Guitar hero isn't about learning how to play the guitar. I played DDR a lot when I was younger, to me, and most of us who played it, it was just a fun rhythm game that helped you work up a sweat. Only idiots and jocks who were clueless about the game itself would confuse it with real dancing. Guitar here is the same thing (only someone who has never played it before would confuse it with being something about playing a real guitar, it isn't!). But if you want to do programming games in that manner, be my guest! They might be fun, but they don't have anything to do with real programming.
People used to flip bit switches to program a computer [ real programming ], and read off output from binary lights, so perhaps the DDR idea in my original message is not that far out. These days, people barely have to know about bits to program. Computer input and output has advanced, and we should take advantage of it. No I don’t want to program like DDR at all. DDR is just the example of an abstract idea. Definition of dance: move rhythmically to music, typically following a set sequence of steps (google). Obviously, we cannot program a computer following a set sequence of steps. Or can we??? Doesn’t that depend on the steps?
Here’s an example set sequence of steps for programming a computer (they are vastly simplified). Sit down at a computer. Double-Click on the IDE icon. Move mouse pointer over text entry region. Press down and release many keys (but not in a sequence). Move mouse over Run button. Press Run. Wow, you’ve programmed a computer. The 4th step is where the thinking comes in, correct? You have to decide which key to press. Are you thinking “I’d like to create a package” or something more simpler, like “press and release the p key”?
My point is, these “steps” can be broken into smaller steps which ultimately, are repetitive, not unlike dance. The trick behind programming seems to be how we *order* the steps. I believe in a dance, the order is typically fixed. However, there are different styles of dancing that we can take advantage of, and different performances. Let’s call a performance an “programme” to be more plain. We can duplicate the choreographer’s "programme” by reading his/her notation or by watching the "programme” and recording the "programme” in notation. Similarly, we can read duplicate the programmer’s program either reading the program or by keeping track of all the input that the programmer made (in whatever form) and IDE state while programming the program and then and recording the program a separate file.
Thus a beginning programmer learns how to program by watching another programmer program, abeit in time delay. The question remains whether there need to be additional studies or interaction, or whether merely watching is good enough. I think that the beginning programmer should at least ape the other programmer a while to catch on.
A programmer programmed DDR. They may have used metaphors instead of actual dance steps and controller presses, but essentially, they created a program for players to ape. It may not look like a program to someone playing it, but how many times did you play it? Have you been programmed? Are you a computer?
John
Sent from Mail for Windows 10
From: Sean McDirmid
Sent: Monday, July 10, 2017 6:14 PM
To: augmented-...@googlegroups.com
Subject: Re: Teaching "Programming by Demonstration" by Demonstration;DeepLearning Augmented Programming
People will learn to abstract math by doing lots of concrete math. The problem is, programming is the art of abstraction, so we get into these meta discourse problems (can we learn abstracting by abstracting over concrete abstraction tasks?).
Showing someone what a list is is very different from showing them how a list is used. Or more to the point, you need to get them to try to solve a problem without lists, reaching a very bad place, then introducing them to lists (or nudging them to invent lists themselves) so they can solve the problem in a better way.
DDR is not about dancing. It isn't supposed to be about dancing, that isn't even part of the design! Guitar hero isn't about learning how to play the guitar. I played DDR a lot when I was younger, to me, and most of us who played it, it was just a fun rhythm game that helped you work up a sweat. Only idiots and jocks who were clueless about the game itself would confuse it with real dancing. Guitar here is the same thing (only someone who has never played it before would confuse it with being something about playing a real guitar, it isn't!). But if you want to do programming games in that manner, be my guest! They might be fun, but they don't have anything to do with real programming.
From: augmented-...@googlegroups.com <augmented-...@googlegroups.com> on behalf of John Carlson <yott...@gmail.com>
Sent: Monday, July 10, 2017 3:05 PM
To: augmented-...@googlegroups.com
Subject: RE: Teaching "Programming by Demonstration" by Demonstration; DeepLearning Augmented Programming
Thinking is something we do. I think.
Most things take practice to learn. People need to practice thinking. How does one practice thinking? By doing thinking.
It’s not “I do, therefore I am”. Animals do things. We’re trying to raise people from doers into thinkers, and one way of doing that is showing them examples of thinking. Lists are ways to organize your mind around a subject “Things to do.” So we show people examples of lists. I learn well by example. Perhaps some do not? What is dance dance revolution and guitar hero but lists of things to do? So we give people lists of things to think? This is beginning to sound like koans.
To teach one how to think, what lists should one be presented with? How does one teach how to organize those lists in a reasonable fashion? Is it one huge list? What order does one proceed through the list? Etc. etc.
Those concrete math problems are presented before the abstract ones. Should we start with concrete examples, or abstract examples?
John
Sent from Mail for Windows 10
From: Sean McDirmid
Sent: Monday, July 10, 2017 5:40 PM
To: augmented-...@googlegroups.com
Subject: Re: Teaching "Programming by Demonstration" by Demonstration; DeepLearning Augmented Programming
This isn't technically "programming by demonstration" but rather "learning programming by demonstration".
Most people have no problem learning how to "program" if it just involves the structure and meaning of the spells that the computer will recognize, but they get hung up on how to think like the computer so they can solve problems abstractly enough for the computer to understand.
A reasonable way to go about it is to "hey, here are some problems, here is how the problems are solved, now go solve a hundred of these as homework." However, programming problems are not as nice as math problems (and even then, the math we learn that way is fairly worthless). We have to teach thinking, not doing.
cooking for engineers diagrams
--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsubscri...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.
Functional programming is steps. You have to apply an inner function before you apply an outer function, unless of course, you rewrite the two functions as a new function. Do people really think to rewrite functions (currying) though? I would be curious. There may be a lot more parallel actions in functional programming.
Is typing on the keyboard functional or steps? Is using the mouse functional or steps? Good questions! I think we’ve arrived at my next duality.
From: Paul Tarvydas
Sent: Tuesday, July 11, 2017 11:22 AM
To: augmented-...@googlegroups.com
Subject: Re: Teaching "Programming by Demonstration" byDemonstration;DeepLearning Augmented Programming
Not everyone likes to think in terms of "steps".
--
Do you have multi concurrent state FSMs (petri nets) or single concurrent state FSMs (DFAs)? A single concurrent state FSM is steps from one state to the next. Any transition from one state to the next is a step.
I am not accusing you of faking anything. It’s basically sequential versus parallel or concurrent programming. I think we need both, I think people do both. Leaning to heavily on one or the other leaves you unbalanced. If you rely on parallel thinking, you try to do to many things at once, and remain exhausted. If you rely on sequential thinking, you’re just dripping along. Ideally, there’s a happy medium.
I believe DDR has parallel steps. There are many dancers in a performance often. There are many programmers programming an API.
Ulimately we are bound sequentially by time, I believe. If you are not bound by time, please clue me into the secret! Is functional thinking the secret to I Ching and escaping time?
I am not saying there can’t be parallel time. I fully believe there are multiple timelines that I am alternating between. However, my current consciousness only follows one at a time. If your consciousness follows multiple timelines, how do you do it? Frankly, I could use some training.
Are we talking “Next”? I call this continuous hierarchy (in time).
I don’t like thinking in steps either. I’m an air sign. An air sign thinking sequentially is like an aerosol can with a straw. Way too strong at the end. I need multiple escape valves.
Perhaps I should pick up Lisp or Scheme again? I’ve been working with JavaScript, but it’s pretty much single threaded.
How do I have more than one active window on my computer?
From: Paul Tarvydas
Sent: Tuesday, July 11, 2017 11:22 AM
To: augmented-...@googlegroups.com
Subject: Re: Teaching "Programming by Demonstration" byDemonstration;DeepLearning Augmented Programming
Not everyone likes to think in terms of "steps".
--