Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Jupyter4kids – Notebooks to help teach kids principles of programming (github.com/mikkokotila)
147 points by mikkokotila on Sept 9, 2017 | hide | past | favorite | 20 comments


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 :)


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?


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.


Nifty, thanks for posting this. I've started using Jupyter Notebooks with my (high school) technologies students this year.

I can see this being particularly useful since our sector is shifting everything into the MS cloud, so we can re-use our school credentials, and I can also stop worrying about having to make sure programming environments are installed on student images and so on.


Hey! A while ago someone from Azure posted that you guys were working on a ML course based around Azure notebooks, do you know anything about that?


Hi. My team basically runs the service - we don't provide much content. We rely on other domain experts to do that. We'll soon start highlighting some great notebooks on the front page however, especially ML related.


This is probably a really stupid question -

This is the second time I've looked at this, and I still can't work out how to create a notebook.


Not stupid at all. They UI can certainly improve, suggestions welcome :).

1. Sign in (top right)

2. Click "Get Started" to clone existing sample Library of notebooks - (a library is like a Project or Repo)

3. Click clone - this will give you your own copy of the Library

4. Click Run (this will give you a docker container with a bunch of pkgs. you can add your own pkgs).

To start from scratch

1. Sign in

2. +New Library. Give it a name or load a full Github repo including all its data)

3. Once in the Library, +New Notebook (or load a notebook from your machine)

4. Click the new notebook name or Run to land in your docker instance.

Hope this helps!


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

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


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).


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.


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.


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


Yes we actually worked a lot with kids and programming / computers, mostly kids from very poor backgrounds high up in the himalayas. Also I've worked with young programmers for almost 20 years. This project, which you see the very beginning of, is something that is coming to fruition as a result of that experience.

The primary target audience is kids, and the secondary non-programmers who want to get in to data science. The goal is to really make it "for all ages". A previous iteration was tested on target audience and had an encouraging reception, which was the motivation to put more time in to this.


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.


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.


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.


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.


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


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: