
Show HN: Jupyter4kids – Notebooks to help teach kids principles of programming - mikkokotila
https://github.com/mikkokotila/jupyter4kids
======
smortaz
Very nice!

Please consider uploading it to

Http://notebooks.azure.com

It's a free service for running and sharing Jupyter notebooks. That way the
can run it immediately w/on installing anything (has anaconda).

Lots of teachers are using it. For example:

Http://notebooks.azure.com/richie

Disclaimer: I work on this :)

~~~
mikkokotila
Thanks, this seems exactly what I was looking for! One question though, all
demos I looked at had 'run' disabled. Is there some 'catch' to this?

~~~
existencebox
I'll chime in here (Disclaimer, also dev for the Azure Notebooks team, etc
etc)

If you want to alter/play around with the demo, you can "clone" the sample
library, which will prompt you to create an account if you have not. This
process is free/noncommittal/just requires an email address, but lets us
create an env + storage for you to run and persist it in. Post-cloning, you
can run any library you own like you would expect.

------
Iv
Funny, this thursday, I just used jupyter notebooks to teach basic python to
beginners who wanted to plot graphs and clean up a data file:
[https://github.com/Hackerfarm/python-
workshops](https://github.com/Hackerfarm/python-workshops)

1 to 3 are introductions to basic concepts. 4 is a bit more specific to the
work we are doing here at the hackerfarm.

~~~
mikkokotila
Very cool! The first cell of your first notebook "reminds" me that we should
have one part which just talks about using Jupyter in an effective way (tab
completions / shortcuts / etc).

------
teddyh
Please consider using Python 3 instead of Python 2.

In particular, in Python 3, the expression 2/3 no longer gives 0, but 0.666…
Much more intuitive.

~~~
mikkokotila
Thanks, I think that is a good idea. Especially given we are talking about the
future generation, and not dinosaurs like myself (attached to 2.7). Will make
that change few parts down and then "upgrade" the early parts as well.

------
MikeTheGreat
Quick question: who is the target audience? Have you tried showing it to them?

~~~
visarga
I looked in the notebooks and I don't think programming can be taught like
this:

    
    
        if 1 is 1: 
            print("hello world")
    

What is this "if 1 is 1" ? It makes no sense to ask this question, for a kid.
It's not clear in English, and if you don't know programming syntax, it is
quite mysterious.

We need some kind of game where kids can learn the purpose of if statements
and other basic operations in a grounded way, not purely theoretical.

I think the best way to go about teaching programming to kids is to invent
some interesting problems they can solve and let them play it out. We can't
axiomatically introduce programming at that age.

~~~
mikkokotila
Thanks for your feedback.

The whole point of initially using non-sensical (and obvious) examples is 1)
to make it as easy as possible to go beyond any doubt with basic numeric
programming concepts 2) to allow sinking in the key difference between people
and computers, for computers nothing at all is obvious, everything has to be
tested. In the later parts, this will become obvious.

For the 'games' you are looking for, there are already many options like
scratch. In this series, where these three parts are the start, the idea is to
take people of all ages to learn advanced data science in a fun and simplistic
way, along the way cementing solid understanding of fundamental numerical
computing concepts.

Obviously the later parts will do exactly what you suggest, allow kids to
tackle actual problems that are relevant to their lives and their families
lives.

------
dotancohen
The 'start learning' page tells the user to try `print("hello world")` but
doesn't tell the user _where_ to put it. The page has even gone so far as to
tell the user that it is _not_ to be put into an IDE or CLI prompt.

You might want to help the user install and open Jupyter before telling him
what to type into it.

~~~
mikkokotila
Good point. I'll try to get get the notebooks to an interactive environment
(maybe Azure as is suggested below unless there is some run restriction) so
there is ability to run the codes right there and then. I'm surprised that
there is not more competition in the free notebook run space.

Regarding Jupyter, I'll do a notebook that's just on Jupyter at some point,
that covers general use cases, cell types, formatting, and shortcuts.

~~~
dotancohen
Why not save the user the trouble of establishing an Azure account and keep
everything local?

~~~
mikkokotila
I also don't like the idea of having to create Microsoft account just to
access a notebook, so if it turns out that is required for run access, then
the other option is to self-host it instead. The problem with local is that if
you have no experience with programming, or are on ipad, etc. etc. etc. having
to start by going to terminal, installing jupyter is kind of drag. But I agree
that local should be an option, and there needs to be a notebook that starts
with how to do it, and then have a link to that notebook at the top of all
other notebooks.

