IDLE hands and the hacker's workshop
September 8, 2012 6:56 PM   Subscribe

Please help me have some semi structured way to help people who show up to python office hours without any clear direction.

I am a member of a hackerspace in Chicago and someone started twice a month informal "office hours" for python. I think this is a kick-ass idea and I really like helping people so I've been going to them. Some friends and I recently put on a beginning python workshop, and I'm hoping that as we have more of these, more people will show up to python office hours and get excited about programming and working on projects.

The problem is that sometimes people show up and don't have questions, but want to learn something. I think perhaps I could have some exercises to hand to them or something slightly structured for them to do.

Last week we had two new people. We asked about their interests (wearable computing, assistive technologies) and that helped to get things rolling a little. I'd like to do even better.

I just started a wiki page and it sucks right now. Suggest changes. I'd really like to have a potential pool of projects for people to stand up and try out if they don't have anything to work on. I think working on things is better than watching lectures. I don't have a section of the wiki like that yet. I know some people locally who work on open source projects, so I might highlight a few things that local people work on?

Here is the current text from it:
Python Office Hours

Every first and third Thursday of each month at 7pm PS:One holds Python Office Hours. Everyone is welcome, regardless of skill level!

This is a chance for people learning to program in Python to get together for moral support, project assistance, and homework assistance. We’ll have an experienced python developer or two on hand to help answer questions and explain difficult concepts. This is an “office hours” event with volunteer teaching assistants. The expectation is that students watch lectures, read tutorials and attempt homework on their own, then use this as a resource to aid in learning.

If you don't already have something to work on, look through the resources below for something to try.


Contributing to Libre software projects


Tutorials & Books

Online courses and lectures

Software Carpentry
Computer Science 101
Google's Python Class
Introduction to Computer Science (cs101) Building a Search Engine
MIT Open Course Ware Introduction to Computer Science and Programming
posted by bleary to Education (7 answers total) 7 users marked this as a favorite
I have just started to teach myself Python and I am using this online course Computer Science Circles which assumes no previous programming experience. I chose it for the very reason you mentioned, I want to learn to program but have no real direction.
posted by Snazzy67 at 7:46 PM on September 8, 2012 [1 favorite]

I'm afraid this is non-specific advice because I don't know your specific situation, and also I am not a programmer of any sort. What I do know from 20 years of teaching in the military and now in public schools is how to teach. This is what I thought when I read your post:

In this situation you aren't just a programmer, you are a teacher, but not just a teacher-- an entertainer. Make it interesting, make it unforgettable, bring a little bit of "Vegas" to your time. Try to create activities that get people actively involved, teach them the little concepts and code snippets, and then-- give them a way to put that knowledge into action right then and there.

The fact that you are in a Hackerspace is your main attraction. You want to build little tiny blocks of instruction that not only teach python but also get your students out into that fantastic workshop of tools, materials and ideas that the best hackerspace should be. Start small-- design a single activity that will teach an introductory concept of python, and then demonstrate that knowledge in an immediate tangible way.

I'm saying make your python lessons about building something tangible in the finest tradition of what the "hackerspace" is. This is what I would be trying to do-- something like making a python lesson that ends up with using an arduino to make a light blink, or an arm move. Then maybe your next lesson builds on that foundation to make a python activity that makes a tiny motor turn a lever arm until it is balanced. The next one builds on that again to make a fan turn on only when a certain temperature sensor crosses a threshold. These are all just suggestions, but even I know that python talks really well with arduino. Use whatever tools, items and equipment you have on hand there. I'm not suggesting it has to be arduino, use any old controller systems or interfaces that you know and have on hand there at the location.

Remember, make it fun, and leverage your unique hackerspace status to make the results real, tangible, physical things that the students can see. Also, break the lessons into really, really small chunks. These aren't computer science students in a university-- they are enthusiastic amateaurs at all levels of ability. A lot of them probably won't be able to learn as fast as you did. So make the lessons small-- really small. Like to start out with, just one concept per activity.

Finally, to spare yourself in the future, go to the trouble to write all of this down. Take pictures of the equipment, and note which bins the parts are located in. A few hours of preparation like this can result in a nice document that other python mentors there can follow, or you can even give the instructions to the students-- This gives the ones who want to learn at their own pace the ability to start the project on their own, and then only come to you for help when they need it. That way you only have to do the "hard work" of lesson preparation once, and then you can do the "fun work" of helping out, instead of being stressed by recreating the wheel each time you have to give a lecture.

Well then, those are my thoughts of how I would do this if I were in your shoes. You are so lucky to live in an area with a hackerspace, and I salute your desire to volunteer and share your technical expertise. Best of luck in your endeavors!
posted by seasparrow at 9:00 PM on September 8, 2012 [2 favorites]

One other tutorial that may be appropriate for your needs is Instant Hacking. It uses Python, it is a quick, engaging introduction to programming, and it even has "hack" in the name!

As for your task... Teaching programming is difficult, of course, and it takes time. You have an additional challenge in the shallow commitment of your students (compared to someone taking a class for credit, say), but it is offset by their genuine interest and motivation. I agree with seasparrow that you should aim for programs with immediate impact, though it doesn't have to be physical, necessarily. What you do need to do, though, is rely on libraries and pre-existing code. That will probably be the only way to get motivating results quickly.

For example, I would look for simple graphics libraries, or maybe something fetches some interesting data from the net. Then, plan a simple program that uses the library to accomplish something interesting with a few lines of code that demonstrates a basic programming concept or two, like variables, loops, etc. Walk them through writing it, explaining as you go, and then let them mess around with it. "Try things and see what happens" is a good directive. Plan a few simple lessons around the code, but also let them explore with you there to answer questions and explain.
posted by whatnotever at 10:16 PM on September 8, 2012

whatnotever, for the workshop we ran we re-used the Boston Python Workshop's materials which follows your suggestions about small things to try. It was the first workshop we'd did, and they recommended that we only try one exercise since newbie workshop runners usually don't make it through more than one.

We were going to use their twitter exercise (a lot of us were comfortable working with apis more than GUIs etc) though ran in to a problem due to our guest wireless not working for that many people. ps:one has better guest wireless than that, so we might run the next workshop there. (not as centrally located as the one in the loop though, so we might get less people? I'd be sad.)

I really like openhatch and their goal of getting more people in to open source projects and people learning to program, or curious about learning to program, often ask what they can do to improve (I remember lots of askme's about that topic!) so following the openhatch advice, I think we could have some easy bugs for people to try for projects that locals work on, or maybe even simple features. we've got people familiar with mediagoblin, gnome, blender, various web frameworks, arduino stuff, raspberry pi stuff... robots even. I've been playing around with ipython notebook, scipy stuff... a local python committer encourages people to do python sprints. oh and Chicago has very friendly apis for data, likewise the CTA.

after we get better at doing beginner workshops, I think we could have intermediary and advanced ones, as well as make a curriculum tailored towards playing with chicago apis, ...and robots, since someone offered to donate use of some kits.

I'm pretty scattered brained at times, and would like to get a wiki page with some organized thoughts on this, and without so much text.
posted by bleary at 8:28 AM on September 10, 2012

oh dear god I said "we'd did". man, I'm getting old.
posted by bleary at 8:29 AM on September 10, 2012

Bleary, the Boston workshop resources look good. I might reuse or adapt some of those for my own classes.

Your ideas are all good sources of projects, but don't overestimate the abilities of people who are completely new to programming. Creating a "simple feature" is probably well beyond the abilities of people with a single workshop or tutorial under their belts. You might be able to walk them through writing the code, basically doing it for them; it might help them learn some things, but they probably won't get it on their own.

As for the wiki, one thing I strongly suggest is to give more guidance to the reader about all of those resources. You present them with a list of over a dozen [good] items. Each has a short title and is placed into one of three categories, which doesn't give much to go on. How will someone choose which to use first? They could look over each one individually, but they'll have no idea how to evaluate them. So I'd suggest giving some sort of brief description of each and explain its strengths, weaknesses, and how / to whom it might be most useful. Even just a simple default statement of "Start here if you have no idea:" would be good to prevent people from being discouraged by the many choices. Curate the resources for them.
posted by whatnotever at 7:37 PM on September 11, 2012

Whatnotever, I recommend following the openhatch blog. I found out about the Boston group's intermediate workshop that way. You could check it out to see if you like that material.

Intermediate Python Workshop wrap-up
posted by bleary at 9:12 AM on September 16, 2012

« Older a woosh and a shift and the land that we...wait...   |   The War on Breasts Newer »
This thread is closed to new comments.