# [IAEP] Ideas for Teaching Python

Steve Thomas sthomas1 at gosargon.com
Mon Jan 14 20:31:38 EST 2013

```Gerald,

I switched email subjects and figured I would keep this on the IAEP list
(as I seem to get bounces from others). As a start, below is from an email
I sent to one of the parents:

My approach in general is to try and catch kids doing something interesting
and then name it and bring it to the attention of the whole class.  I look
for kids passions and try and find ways to build on that.  I try not to
explain everything to them, at the same time I can't expect them to
re-create all we have learned throughout history without falling into the
same traps and making the same mistakes.  So I also try and give them
examples of "good literature" (via code walk throughs and explanations of
concepts, trying to relate it to things they know).  Note: I often fail to
acheive my goals, but I keep trying. Ideas and suggestions always welcome.

I also try to give some "step away from the computer and no one gets hurt"
lessons. This is similar to the CS Unplugged <http://csunplugged.org/> stuff
and "How to Program your parents" like what they do
here<http://drtechniko.com/2012/04/09/how-to-train-your-robot/>
.

Two exercises you can do with Jonathan which are from one of the classes he
missed.  One involved asking them how to find a name in a phonebook,
explaining how long it would take to go one by one through all the names.
Then asking them to rip the phonebook in half and throw away the half that
doesn't have the name he is looking for (repeat) until you find the name.

Next is to play a version of "Guess my Number"  (where you tell them
higher, lower or correct when they guess).  Play one game where the number
is between 1-100.

Then have him make a table like the one below:
|        Numbers |       # Guesses |
|            10  |                 |
|           100  |                 |
|         1,000  |                 |
|        10,000  |                 |
|       100,000  |                 |
|     1,000,000  |                 |
| 1,000,000,000  |                 |
| 4,000,000,000  |                 |

And ask him to fill in How many guesses it would take to guess the number.
If he follows a pattern, compliment him on looking for and using a pattern
(even if it's not the right one)

Then have him make a table like the one below:
| Numbers | Maximum Guesses |
|      2  |                 |
|      3  |                 |
|      4  |                 |
|      5  |                 |
|      6  |                 |
|      7  |                 |
|      8  |                 |
|      9  |                 |
|      10 |                 |
|      11 |                 |
|      12 |                 |
|      13 |                 |

Tell him you are "evil" and will change your number as often as possible
and ask how many guesses it will take to find the answer.
At some point you can write down the list of numbers (pick an odd number,
so he can pick the one exactly in the middle) and then ask okay how many
left.  The goal is to make the invisible visible and show him how you are
getting rid of ~1/2 each time.  Then ask him, how many for 16, 32, 64 (you
get the idea).

Then ask him to look back at the first table once he figures it out how it
works and ask again how many guesses.

Then ask what is similar between the phone book excercise and the "Guess my
Number" excercise.

The key to focus on and repeat a few times is how you can take a simple set
of steps and just keep repeating them to do amazing things.

> Homework for this week:
>
> 1) Write your madlibs programs in python 3 and send them to me
> 3) Complete Unit 1:1-13 of CS101 and send me a screenshot showing
> completion
> 4) When watching section 11 - Backus Naur Form, think about how it applies
> to our MadLibs game and also how it relates tot he syntax errors we got
> when coding (great job Colleen in recognizing and properly naming them).
>
> Some of the Big Ideas we went over in class:
>
>    - We walked up and down "The Ladder of Abstraction"
>       - From 0 and 1 ==> 26 letters of the alphabet ==> words ==>
>       sentences ... to trillions of words in published books
>    - Using a few simple "first principle" building blocks we can create
>    amazing things
>       - When working on a program or any project, think about what are
>       the basic first principle ideas I can use to build powerful ideas
>       -
>
>
what I meant by trying to teach them about the "Ladder of Abstraction"...

The main idea is levels of abstraction in programming.  I want them to
start thinking about and hopefully seeing how you can walk up and down the
ladder and how to find the appropriate first principle building blocks.

Note, I have the advantage of teaching an "after school" course to a small
group of homeschoolers (and one "schooler") we meet once a week for about
90 minutes.

The Udacity CS101 has some great material to help me flip the classroom.
I also am looking at using
*How to Think Like a Computer Scientist* - Runestone
Interactive<http://interactivepython.org/courselib/static/thinkcspy/index.html>
which I like because of the way
it helps make the invisible (what's going on inside the computer) visible.
Mark Guzdial made a comment on it saying it had a bit too much cognitive
overload, but I don't know of any other one as good.  I would also suggest
you check Mark's site for his (and his wife's) Python course
http://coweb.cc.gatech.edu/mediaComp-teach.  The book is ridiculously
expensive (ie: it's a college textbook), but the slides are freely
available and very well done.  They can give you some ideas.

One thing (along the lines) of Mark's course would be to have the kids
create their own image editor's.  One of my former student's built his own
in Python and it is motivating for kids.

My goals are to try and give kids multiple experiences (learn/experience
ideas in multiple ways) with certain "big ideas" or concepts. I often fail,
but keep trying.

1) how often do you meet
2) how long are the class periods
3) what kind of programming experience is expected of the students

Stephen

On Mon, Jan 14, 2013 at 6:31 PM, Gerald Ardito <gmanb5 at gmail.com> wrote:

> I am still trying to wrap my head about the key goals and projects. It
> would be great to share ideas.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/iaep/attachments/20130114/9e5e3666/attachment-0001.html>
```