Ask HN: How would you teach programming skills to underprivileged kids?

2 points by P6Rs4r ↗ HN
I am associated with an NGO that organizes after-school activities for children in a slum in Mumbai, India. I'm trying to create a course to teach them some programming skills that will enable them to get freelancing careers or be able to get jobs once they graduate school. The target group is kids in grades 9 to 12 with limited exposure to computers and programming (some of them have some knowledge of HTML from a campaign done by another NGO but most are unfamiliar with any form of computer languages).

I'm trying to come up with a course of about 10 hours (spread out over 2 weekends) that would introduce them to programming. It would be great if the kids could have something working by the end of the course so that its engaging for them (drop out rates have been very high in the past).

My inclination is to start with the basics of Python and then move on to something like Django where they can create a working website for themselves. Is this feasible to teach in 10 hours? Is there any other language or program I should start with instead?

The longer term goal here is to take the kids that show the most interest and teach them algorithms and data structures allowing them to get good jobs in software companies.

2 comments

[ 3.0 ms ] story [ 11.9 ms ] thread
Django is amazingly productive to work with if you are familiar with it, but you likely have to teach some bits of foundations of databases/SQL on top of the ORM semantics, some bits of HTTP semantics on top of MVC, some bits of HTML and CSS semantics on top of the template language, etc.

Check out Django Girls - https://djangogirls.org/ - they organize workshops that teach Django to kids all over the world, so I'm sure this will be relevant to your plan. Check out the tutorial that they do where the student makes a blog - https://tutorial.djangogirls.org/

Their organizer's manual - https://organize.djangogirls.org/

Their coaching guide - https://coach.djangogirls.org/

You could also prepare a few Jupyter/IPython notebooks in advance that have the basic examples of how to use Python - these could serve as a kind of executable documentation of language features, to help avoid them getting stuck.

Is the 10 hour limit really set in stone? Also do you have anyone else who could teach with you at the same time? More teacher attention % per student generally translates into a better learning environment.

Hope it goes well!

I'd suggest to go trough the fundamentals. Make sure they understand the workflow on Django and a project that they can actually take into production, don't make it too broad but care about the fundamentals, so they'll be able to solve their own problems in the future. It doesn't pay well in the long run to make a project too broad. I'm not sure if Django is the right thing to start but that depends on your motivation. Think about python notebooks, for instance how to connect to a well known API, to grab some data and play with it using data structures, plotting. Things that they can see without investing too much time in server configuration. Most probably you already know it, but colab.research.google.com is a ready to code python notebook