'Intro to programming', session #3

I suspect I must have sounded particularly freaked out when people were late last week, because this time (last Monday) several people added a variant of "but I love the course!" at the end of their message letting me know they couldn't attend, haha! I once again left full of positive energy, there is a great atmosphere and everyone looks to be having a good time.


I've been told having many exercises works well, it means people don't get bored nor have to wait around. That was my goal when I started this system so great it's working! More microblogging feedback.

I still feel people have a lot of trouble getting started though. I believe lots of code reading and writing would help, but this has to be done in one's own time. I wonder how I can help mitigate this in my 2 to 3 hours sessions though, or how I could help with understanding how to break down large problems into smaller ones.

Having a little "code reading" snippet at the beginning works nicely. It only took us 10-15 minutes and generated interesting questions and a bit of discussion, hopefully without being confusing. It's less cool for people trickling in late, but well. The code is available, and I always make myself available for questions as well.

Notes and e-learning

I put the notes up online, and have been told that it's harder to learn through them. It's sort of a conscious choice. I focus on making the face-to-face learning as effective and interesting as possible, and post up the notes as a courtesy and a summary of what we looked at. Making a good e-learning course in addition to the face-to-face teaching would take a lot of time and effort.

Promoting the course

Initially, after the first posts and emails about the course went out, I spent an incredible amount of time answering emails from people who already knew how to program but had read "learn + Python" and were interested in learning the language (side-note: there should be an afternoon Python crash course coming for you in November, people, keep an eye out!). Obviously they weren't the target for the course and would likely have been upset at the pace, so I spent a lot of time learning to tease out people's previous knowledge and kindly explaining why this wouldn't be a good fit for them. It was both time-consuming and stressful and I promised myself I wouldn't mention Python at all next time I teach the course.

However, it turns out that knowing the course would be taught using Python was a key factor for at least one student's decision to sign up. I guess when you spend time in tech communities, you start picking up on the levels of difficulty of different languages whether you program yourself or not. I won't leave Python completely out next time, and it's good promotion for the language too, but I certainly won't put it in the title :)


Students, and other people I know outside who are learning Python on the side, have asked whether I would follow-up with an 'Intermediate' level sort of course. I have no plans to do so, so far. The next step from the course I'm teaching is: practice, practice, practice. Write and read a lot of code. Learn what you need to learn to solve the problems you want to tackle.

There's more thinking I want to do on the format though. It's kind of compact at the moment, 5 evenings of 2h30 sessions and I think I picked that up from the previous iteration I taught, where I had no control over the time slots and ended up with 4 sessions of 3 hours. If I were to want to make the course longer, what would I change? How differently would I teach? If I go to a school and they offer me a weekly 1-hour long time slot over ten weeks, what adaptations would my current material require? Someone asked at the Python meetup what kind of people attended the course, e.g. unemployed people perhaps looking to pick up new skills? My course would be very inappropriate for such a goal, and mostly aims to attract people curious about and interested in learning the basics of programming. Which is only one skill you'd need to become a software developer, but still, if I were to expand that course over say 10 evenings, or if I had the opportunity to teach it full-time to teenagers for a week as part of a summer camp, how would I do it?

...Hm. As I said, that's stuff I want to think about! Any thought on this, whether half-baked or fully fleshed out are very welcome.

< Back to main >

I think there's another strand as well as "how to program" classes, reading, and practice, and that is "problem solving" (or "problems solved") classes --- maybe a kind of "code reading of highlights of the classics" with the teacher. When I did my degree it was called "data structures and algorithms" and when that university went on to teaching functional programming they added a "problem solving with functional programming". This could go through things like the Floyd-Warshall algorithm, the Boyer-Moore search algorithm, and so on. It could either be mixed in near the end of a "how to program" course (or throughout it as part of the code reading), or be an intermediate level course in its own right. With this material, people can see how languages are used and how programmers think.

It all sounds good so far, well done!
#1. Posted by John (Website) on Mon 13 Sep 2010, 9:22

That sounds like pretty advanced stuff! At a more elementary level, it sounds like what I should be trying to do with the "code reading" section indeed. Thank you for the feedback and detailed references! #2. Posted by jpichon (Website) on Mon 13 Sep 2010, 23:33

Hello! This text is normally hidden with CSS. If you can see this, you'll also see two additional fields with no label on the form. Leave them as is, as those are aimed at catching form-filling spam bots. Thank you!

Comments are moderated.

    Name: (or OpenID Sign in with OpenID)
      Email: (Not published)

          < Back to main | Up >