Teaching Webcraft / Audience Who are your learners?

The second task for the Teaching webcraft course is about making up profiles for people we're hoping to help. The couple of biographies that follow do not cover it all, but should still be a fair sample :-)

* * *

Jessie is a high school student, and although she thinks about it often, what she wants to do after her final year still very much depends on what catches her interest the most any given week. She navigates the web effortlessly, and hangs out online in all the social networks her friends are into. She never really considered programming as something she could learn, but when presented with the opportunity to join an intro course she thinks maybe there she'll learn enough code to be able to personalise her blog, and make it look unique and more interactive.

This course will teach Jessie how to create her first program, and that programming is more similar to puzzle solving than inputting number in Excel to do sums like in the ICT class. Perhaps something worth exploring further...

*

Jon is working hard at his PhD thesis in social sciences. He has a lot of statistics to parse and go through every day, results of experiments to reproduce before building on them and so on. He has a dozen of Excel spreadsheets set up with insane macros that save him a lot of time, but still wastes many hours manually inputting data taken from websites or articles. He's hoping learning to program will enable him to spend less time on drudge work and more time exploring the interesting questions.

This course will teach Jon how to automate more of his experimental work, and in the process make him realise there are other areas where some scripting would make writing his dissertation more efficient.

*

Paula doesn't consider herself a power user, but she knows the keyboard shortcuts for every application she uses, is familiar with the file system layout of her computer (and learnt what a file system is) thanks to a couple of misadventures clicking on interesting looking icons, and is known to her friends and colleagues as the go-to person whenever a computer misbehaves. Though she doesn't plan on making a career out of it, she is curious to gain an understanding of what's under the hood of all these applications she uses.

This course will teach Paula the fundamental steps and "bricks" that every program is made of, and help her understand why bugs happen and what makes them difficult to eradicate. Maybe putting together a short script to randomly assign secret Santas for the next Christ Kindle wouldn't be too hard, though...

Leave a comment

Teaching Webcraft / Compare your practices to IES report's recommendations

I'm taking an online course at the P2P University, on "How to teach webcraft and programming to free-range students" taught by Greg Wilson.

Looking at the initial comments on the course it's possible I misunderstood what "free-range students" means ; from the course description I took it to mean teaching in various non-traditional settings, but it might actually be specifically about online learning (?). It's fine, the general concepts of "what is good teaching", "how people learn" and how to encourage independent learning will be helpful anyway. :)

First task

Our first task is to take a look at the IES (Institution of Educational Sciences) report on "Organizing Instruction and Study to Improve Student Learning" (summarised in Greg's post here) and compare their recommendations to our own approach to teaching programming.

For the record, I teach sporadically in my own time, to small groups of 6 to 10 complete beginners, usually-but-not-always adults, in the local hackerspace.

Recommendation 1: Space learning over time.

Arrange to review key elements of course content after a delay of several weeks to several months after initial presentation.

In a 5 or 6 weeks-long course, this can be difficult. However, most concepts do build on top on each other: once learnt, they will be used every week from then on. The later concepts could benefit from regular review, but by then the course is about finished unfortunately.

Recommendation 2: Interleave worked example solutions with problem-solving exercises.

Have students alternate between reading already worked solutions and trying to solve problems on their own.

From the 2nd session of the course, I start by showing a short, working program to the class and ask them to think about what it could be doing, (trying to) figure out as a group what could be its purpose. This sounds more like review though, as it reuses the previous concepts. The report also reads that alternating working examples + exercises is hugely important. "Worked example solutions" should go into much more details than what I've been doing as well (showing intermediate steps, rather than only the final solution).

Recommendation 3: Combine graphics with verbal descriptions.

Combine graphical presentations (e.g., graphs, figures) that illustrate key processes and procedures with verbal descriptions.

I can't say that I'm really doing this. I'm projecting code, sometimes working out solutions in front of the class but this isn't particularly graphical. I'm not sure how to do this either. It actually reminds me of the approach to learning that Sean O'Leary mentioned in his talk on differentiated learning at the Reimagining Learning conference, where he told us about adding visual cues to quizzes and concepts to help dyslexic learners and students with a more visual approach. Although useful, this doesn't exactly match the IES report recommendation which advocates making sure the graphical element is directly relevant to the concept being taught.

Recommendation 4: Connect and integrate abstract and concrete representations of concepts.

Connect and integrate abstract representations of a concept with concrete representations of the same concept.

The report explains that students gain an understanding faster when using concrete examples, but then don't know how to transfer the knowledge to new problems ; while students who learn the concept abstractly struggle more initially but are then more flexible with the knowledge. The report advocates mixing up both, which I'm not doing or not doing well as my students tend to have trouble reusing previous concepts to break down more intricate problems on their own.

Recommendation 5: Use quizzing to promote learning.

Use quizzing with active retrieval of information at all phases of the learning process to exploit the ability of retrieval directly to facilitate long-lasting memory traces.

5a. Use pre-questions to introduce a new topic. I don't do this. I wonder if "previewing" an unknown programming concept would help learning, or increase confusion. It'd definitely need to solve a concrete problem, ideally that we encountered in the previous session.

5b. Use quizzes to re-expose students to key content. I don't do this either. (Actually, reading on the report, presenting small programs and asking students to figure out what it does may be considered a quiz, as it encourages them to retrieve previously learnt material). It's interesting, and I wonder how to apply it to teaching practical programming while keeping the questions short and meaningful (maybe tiny programs with missing bits, with a multiple choice as to what to fill the blank with?)

Recommendation 6: Help students allocate study time efficiently.

Assist students in identifying what material they know well, and what needs further study, by teaching children how to judge what they have learned.

6a. Teach students how to use delayed judgements of learning to identify content that needs further study. I'm not doing this, except perhaps brutally when giving exercises that a student doesn't know how to solve.

6b. Use tests and quizzes to identify content that needs to be learned. This advises giving a quiz, written or oral, could be done as a game, right after presenting new material, so students can assess what they actually do remember. I don't do this. Considering most of my students don't make the time for homework or studying at home, I don't know if this would be very effective on its own. Or perhaps it would highlight that they do need to study outside of the class and encourage them to do so...

Recommendation 7: Ask deep explanatory questions.

Use instructional prompts that encourage students to pose and answer “deep-level” questions on course material. These questions enable students to respond with explanations and supports deep understanding of taught material.

I do a tiny bit of this when I introduce a new concept or explain what an existing program does, but not very deeply, nor involving the class enough (it can be tough generating discussion!). Some of the suggestions include having students think aloud, then comment and build on each other's understanding.

Leave a comment

Teaching programming to beginners Latest roundup

An overdue post on the latest course I taught, which ended about 2 weeks ago. I taught a group of 9 people (8 adults, 1 teenager) of various backgrounds the basics of programming, using Python. It went well overall, and the class atmosphere was enjoyable.

For...

Unfortunately I still fail to explain some concepts clearly -- namely the dreaded for loop. I kept telling myself I needed to change the way I introduce it and finally did so, and wow. It went even worse than before. I could see in my student's eyes how they were trying to understand, until eventually shrugging it off when I couldn't find any different way to explain it. It may have come across a bit better eventually when we started working with files and used for loops to go through every line, but introducing the concept went very blergh. Definitely need to do it differently next time. I think I will try to introduce the for loop over 2 sessions: one where we only see and do exercises related to "for i in range(0, x)" and separately introduce "for item in my_list".

I don't know if I just forgot before, but failing to get a concept across is really, really depressing. I was bummed out for a while afterwards, wondering if I'm just making more damage than good and messing up my goal of making programming less intimidating.

...Yet another reason to do better next time!

Exercises

I should make sure to have at least one "Fill in the blanks" and "Change this existing program so that..." type of exercises for every concept. I think they encourage students to read and try to understand existing code -- an important skill to develop, and it also makes the first attempt at using a new structure more manageable.

In general, I'd really like if I could find a neat program that could be cut down into exercises relating to each concept, that'd build up to something cool and awesome as the course goes on. It would help get across that complex programs are really made up of simpler pieces ; if you can't figure out how to do something, break it down further. I haven't really figured out a program that fits the bill yet.

Overall, material-wise I'm getting there (except for For :|), it'd be worthwhile focusing on improving the exercises for the next course.

Homework

OMG some people actually did the exercises as homework this time :O Wow. I tip my hat to them, it's great and it paid dividends for them. Unfortunately it also meant they had nothing to do while the others were catching up, so... I should probably give away only a portion of the exercises as homework, and save a few for the actual session. (The idea with the exercises is that everybody should get at least 1 done before we move on ; having many gives the faster students something to do while others don't feel too rushed.)

Duration

I taught over 5 weeks this time (2h30 in the evening with a 20-30mins break), and I will do 6 weeks next time. For real beginners it's still reasonable and it will let me take more time on concepts like For, and maybe an opportunity to show at the end what else there is to programming, and give ideas on which direction they could go on from here (GUIs, web development, robots...).

Speaking of robots

At the last session I brought a Finch, which I still haven't had much time to play with :') But with the Jython bindings it was possible to show a 5 lines Python program that has an effect in the real world. The Finch was very popular!

I want to play with the robot more, and see if perhaps it would make sense to use it to teach the whole beginner course at some point in the future (which would bring its own set of issues, $$$-wise).

Student feedback

As usual I asked if students could fill in a feedback form.

Everybody agreed they learnt a lot. "Fun" and "interesting" were in about everyone's "3 words to describe the course", with"hard" and "challenging" occasionally thrown in there :) "Useful" came up in half the forms too, which makes me happy.

The projector wasn't great with yellow which unfortunately was the default colour for strings in the IDE. It would have been worthwhile spending the time on fixing that rather than let people squint (sorry :().

A couple of requests to link more clearly exercises with the real world. So very difficult when we're still introducing new concepts! But definitely something to strive for.

Someone suggested writing a sample program where every line is explained (e.g. if x:    <-- this will do...). I think it's a good idea, I will try for next time. It would be useful as a reference.


I should be teaching this course again around March. Any pointers to beginner exercises, general comments, teaching advice, teaching programming tips all very much welcome!

Leave a comment | 3 so far

Teaching, take 4

As mentioned before, I'm teaching programming again, to a group of beginners :) (Although as usual, even in a group of complete beginners there are variations in people's levels and comfort with the subject.)

Initial advertising

I'm really happy with how the PR worked out this time. The first time I taught this course in Tog, I made the mistake of putting "Python" in the name of the course and ended up wasting a lot of time screening out people who wouldn't be a good fit. This time I only mentioned it in passing, and the amount and type of answers I got was much more manageable and appropriate. We still managed to fill up the course and to have a waiting list (hope to see you next time!), so it's a success. I'm pasting the announcement here for future reference:

Class: Introduction to Programming

Are you curious about programming? Ever wished you could write your own scripts to automate repetitive tasks, or for fun? Or been interested in understanding how an application works (and why there are always bugs in the software you use??). Tog is running a new class on learning how to program, for complete beginners with no previous programming knowledge.

The course will cover basic programming skills, which will also give you a better understanding of how computers work. We will be using Python, an excellent learning language because it is simple yet powerful, and extremely readable. At the end of the course you will know how to write simple programs, and you should have enough understanding of the basics to move on to either more complex programming tasks in Python or learn another language if you wish to.

The course will begin on October 20th and will run for 5 weeks every Thursday from 7.00pm to 9.30pm. The cost is €40 for non-members, and free for members. The class size is limited to about 8 people, for a relaxed atmosphere conducive to learning.

If you are interested in attending, or have any question about the course, please use the form below or leave a comment — we’re happy to answer any query! You must sign up if you want to attend, space is limited.

Please note that this is a course for complete beginners, who are not yet familiar with the usual syntax for programming. If you’re a programmer interested in picking up Python, you should keep an eye out for our crash courses!

A fair percentage of the students heard about the course from Twitter even though I'm not on it, which is interesting. I should explore how to use the tool better. As I mostly hang out with fellow nerds, reaching out to interested beginners is always tough, so anything that can help...

Pace

The pace of the course is manageable as well -- which doesn't mean preparing and teaching isn't time-consuming still! But I felt quite burnt out last time after the pace at which I taught the PhD students (mostly through my own fault), so it's refreshing to come back to teaching pure beginners and not go crazy from week 2.

Surprisingly enough and to my utter delight, a huge portion of the students took on the exercises as homework! I'm so happy when I get questions about the exercises or lessons via email, to see people interested enough to poke at problems outside of the classroom. If we keep it up we should be able to cover more as well, which will be interesting for everyone.

As for feedback, I found a couple of positive tweets after the first session, which is always encouraging. Woohoo \o/

Leave a comment

Teaching again

Curious about programming? Ever wished you could write your own scripts to automate repetitive tasks, or for fun? Or been interested in understanding how an application works (and why there are always bugs in the software you use??). I'm teaching a new class in Tog on learning how to program, for complete beginners with no previous programming knowledge. We'll be using Python, and you can find more information including how to register over at Tog's website: Class - Introduction to Programming.

Leave a comment

Reimaging Learning Conference

Last week-end I attended the Re-imagining Learning conference in Limerick, a conference by the Educate Together folks aiming to rethink early secondary school.

As expected the majority of the talks were very interesting and/or inspiring. The way the schedule seemed to work, keynotes were meant to be higher level and make the audience think and ponder and imagine, while the sessions in between were more practical, sharing information on past or current initiatives by education professionals.

Attending a conference outside of my field was an interesting experience, although I found it awkward to introduce myself. I thought afterwards I should have simply left it to "I'm interested" rather than trying to justify my presence, but thinking again I'm not quite sure it really explains what the hell I'm doing here. Ah well. I can figure it out as I participate in more of these events, I guess.

I took a ton of notes, however as I haven't been good in the past at transcribing talks, I'll start by posting a mishmash of thoughts, themes and ideas that I took home with me.

First and foremost, there is a lot happening in Ireland in education at the moment, including curriculum reform (recommendations) at the Junior level. It was inspiring to be surrounded by professionals in the field who obviously care so deeply about what is going on and how to improve the state of things.

The Friday morning keynotes looked at the early years of the Junior level, covering how these first few years have a major impact that will affect the attitude of the student toward school until the end of their schooling. "Curriculum integration" was a big theme over the two days and another speaker noted curriculum cannot be looked at independently, it is heavily dependent on the political context even if we like to pretend it is neutral.

John Portelli's keynote was very interesting, explaining the importance of a critical-democratic framework and the dangers of pre-judging. He touched on a lot of themes and it was incredibly frustrating to see him having to rush through the ideas he was introducing. Although the conference was very professionally organised, time-keeping was terrible from the beginning and it put a lot of undue pressure on speakers who felt they had to fly through their material.

Some practical tips I picked up during some of the sessions:

  • In Sean O'Leary's talk on science differentiation, he mentioned simple ways to make material more accessible, for instance language level readability. He showed examples of a science exercise, and how to rewrite it so that it means the exact same thing, the problem is framed the same, however the language is simpler which removes a potential barrier. That's something I absolutely want to look into, because I know I am guilty of it, as I tend to switch to smartass academic language whenever I write an exercise sheet that I know I will be handing out. He also uses visual cues as often as possible to help with memory (rebus). To dos:
    • Find a site or software to assess the readability level of the material I write.
    • Check out the Science Differentiation Pack the speaker worked on and see what I can use in there
  • Neil Bulter showed us all sorts of games he used in class to encourage students to develop their problem solving skills. See notably Fantastic Contraptions, Gravity Pods, and Light bot. To dos:
    • This last one I must check out properly and see if it can help newcomers come to term with how programming works

Some general ideas that stick to mind:

  • Like everyone teenagers want to know more about themselves, understand who they are and what is their place in the world. By teaching them about development theories they can learn to make better decisions. Development theories include multiple intelligences, etc.
  • Teaching in groups is excellent and the ideal way to do things, however the teacher needs to help/teach/promote higher level thinking and discussions, to move it beyond disputes (e.g. partner phrases)
  • I didn't know the Irish Computer Society was so involved with school and education! They train schools in using technology to engage with students. And they even have an awesome Scratch handbook! To dos:
    • Get the handbook
    • Find out more!
  • Many times speakers put forward the idea of having the teacher stand back and act more as a facilitator and guide. For instance, community-based learning (Martin Galvin), that encourages young people to look into a problem in their community (e.g. nutrition based health problems) and learn about it in a self-driven way and through community service. Giving an ill-structured problem (a very general question) that has no clear-cut answer, and let students run with it! See also the Global Learning Initiative Project (Lori Holcom) that hooks up students with other students from schools around the world.

Some books/articles I want to look into:

  • The Passionate Teacher, 1995
  • Something to learn more about teacher follow-up moves, by Brodie (2008). This was mentioned as part of the talk on "fostering a 'conjecturing atmosphere' in mathematics lessons" (Therese Dooley).

Of course the conference covered all these topics (and more!) in much more details and I have a lot of things to think about, think through and hopefully use to better my own beginner-teaching and make it more relevant.

Additionally, I met with Paddy, a retired school principal from Cork, who was kind enough to give me some advice on how to find a school near where I live and who to talk with to see about teaching programming to high school students. A big to-do!

Leave a comment

Python Office Hours 1st edition, roundup

Last Thursday was my first attempt at setting up "Python Office Hours", an evening during which people starting out with Python are welcome to drop in with questions, problems or just to work on beginner projects with someone who can give a hand within reach.

It probably wasn't a success, though it definitely wasn't a disaster. I only sent out the announcement to my former students, and several people were really excited about the idea though only one confirmed he would come. And indeed, although my opt-in "Python Office Hours" list now has a few more names in it, on Thursday there was only me and the one student, so not quite the successful evening turnout-wise. However, we had a very long discussion about the project he wants to do, how to go about cutting down the design into different Python projects manageable for a newcomer to the language, to a level that we wouldn't have been able to discuss had there been other students around. So this wasn't a wasted evening, although we probably went into more depth than I was thinking or hoping for! That's the advantage of showing up, you can get more than you bargained for :)

I will do a few more of these office hours. I think maybe people will get moving in their projects and/or learning if they know it's a regular occurrence. I'll likely expand the reach too, though I'm a bit concerned people will misread and show up expecting more (or any kind of) structure -- as I discovered a couple of courses ago, people read an email and focus on one keyword at the expense of what the actual course or event is about! Everyone ends up disappointed and frustrated, so I'll make sure to pen that email carefully, and work at learning which words to bold for maximum effect :]

Leave a comment | 4 so far

Python Office Hours Trying something different

Python logo

I've decided to try something different and will be holding Python "office hours" in Tog on Thursday evening. It's not really a secret but I'm not exactly advertising it either. I sent an email to my former students for Thursday's test run, and depending on how it goes I may hold these regularly and be more vocal about it.

What is it going to be about? This is sort of a follow-up to an intro course, for people who have a project but can still get stuck and could use some guidance. Or for people who want to reinforce  their knowledge of Python/get up to speed by doing exercises, with someone nearby to give a hand if needed. Basically it's for people who want to do their own thing, with the knowledge that if things don't work there's someone who should be able to help in the room, rather than hours of frustration in sight. Or that's the idea! This isn't a course, I won't be teaching or lecturing or erm talking that much. If no one needs help I'll be working on my own stuff.

I look forward to seeing how it goes. Drop by Tog ( map ) anytime between 6.30 and 9pm this Thursday if you're interested! And feel free to drop me a note (see About page) if you're curious but not sure if it's a good fit for you.

Leave a comment

Course content, now CC-BY-NC

I added a notice to my previous courses notes to indicate that they are now available under the CC-BY-NC license. I don't know if it'll be in any way useful -- as I'm well aware the courses could use a huge amount of improvement (working on it!) -- but it seems worth doing.

Note to interested parties: If you're only looking for exercises to use in your own courses, don't worry about the license and just grab them. I would only humbly request, that you feel very free to also share back any exercise or resources you found useful to teach the basics -- I always struggle to find more! :-) Add a comment or contact me directly.

Leave a comment

Teaching conclusions

My last course to teach Python to beginners ended Monday last week and wow, am I behind in writing up the post-mortem :)

This time I taught the basics of programming with Python to a group of 6 adults, mostly PhD students either in political sciences or mechanical engineering. Nearly all of them had used some statistical/domain-specific language before, such as R or Matlab, which had a greater impact on the course than I anticipated. I taught in the students' University and thus was able to donate all the proceeds to Python Ireland, woohoo! To an awesome PyCon Ireland conference this October!

Progress isn't linear

The first and most important lesson, for me, was that progress isn't a linear thing and I really let the first session influence the pace too much. On the first day, we went through the material in a blink and I found myself short on exercises and concerned about the amount of new content that would be required for the rest of the course.

However, this day 1 effect happened because people were already familiar with the basics of programming, and they had no problem mapping what they knew to Python. I didn't realise this though, and stepped on the gas from that point on, failing to adjust properly until several weeks later. It was brought to my attention later on that actually students could have used more time and depth to understand several new concepts (that's where it helps to have a friend as part of your students, they'll mention it even if in passing!)

Which reminds me: note to self, completely redo the way you introduce for loops.

Initially, I was also a bit disappointed because I enjoy guiding students through the ah-ha! moments of figuring out programming and it felt like people already knew everything. I was wrong here as well, there may not have been any in the first session but there were plenty of satisfying ah-ha moments as we went on with the course.

Preparing

As usual, I started crashing toward the end of the course ; preparing and refining material and exercises always takes a ton of personal time and when the course ended I was much looking forward to having time again to work on my own projects (...till the next course, as usual! I never learn ;))

Preparations are really the most time- and mind-consuming aspect of teaching. Even for the existing material, there's always a bit of work to try and adapt the exercises to topics that might interest current students or make lessons flow better. With the pace we were going at, I didn't have everything ready beforehand either. On the minus side, this costs time and means the lessons can be less polished. On the plus side, it usually means the lessons are better suited to the level and interests of the class.

Student feedback

This is probably another reason why it took a bit of time to sit down and write this all up. Overall, on the scale of happiness and knowledge the students appear satisfied with the course. Some comments on how to improve the course somewhat confused me. I think once again some felt I was guiding too much. However this time I'm really happy with how we learnt to use and navigate the Python documentation and I think that's the best thing I can teach for students to become independent. At that beginner level, I'm afraid I'm not sure what more to do unless I'm offered specific suggestions. There was another piece of feedback about still not being sure where to start if wanting to create a new program. Something I'd like to experiment with in the future is to start by giving a big project at the beginning of a course, and then along the weeks with various exercises we start solving it bit by bit, and hopefully that would give students a fairer idea on how to break down problems into manageable tasks. I need to think about it.

Some of the feedback wondered about the point of some of the exercises, which is very valid criticism. When I create a new lesson and associated batch of exercises, the ratio of suck tends to be high. It's quite difficult to find small self-contained exercises, that touch only on the necessary specific concepts without going all over the place! I need to hunt for more.


Overall I'm happy with how it went and will of course teach again in the future. I'm disappointed with the way I presented the material at times though. I think I need to do more public speaking and general talks, to stop letting myself become intimidated when I speak for a while and no one's looking my way or interested (or awake!)... as opposed to the pleasant interactions of helping students debug their programs. Maybe a lightning talk on teaching programming? ;)

Update: Oh, and I forgot to mention I received homework this time! This is so cool. It came from students who had a project on the side they wanted to solve with Python. Hope I helped :)

Leave a comment | 4 so far

Book review: How to survive your first year in teaching, by Sue Cowley

I got "How to survive your first year in teaching" after finding some very positive reviews and it's been worth every cent -- from the beginning I had to stop reading to take notes and add bookmarks for future reference. The target is "real" teachers (at the primary and secondary level) who are preparing for the first year of teaching on their own after their training.

At my level (volunteer unqualified teacher), I found the book tips very good to help structure both a course and specific lessons. There are many activity ideas to try out in class and suggestions to avoid sticking only to one teaching style (e.g. lecturing) -- it doesn't matter what age group you're teaching, there will be something useful and I've already been applying some of them. I'll be re-reading the behaviour and class management chapters when I teach high school students again (having a clue what to do will hopefully help in these situations!)

For non-professional teachers like me, there are a number of chapters that don't apply, like class decoration or school administrative tasks. I still found them interesting on my first read-through though I'll likely skip them on subsequent reads (and I learnt a bit about the UK school system... for instance I thought "houses" only existed in the Harry Potter world :-)).

The kind of sections I bookmarked: activities to try in class, balanced lesson planning, setting aims and objectives, differentiation, resources to spice up lessons, assessing and marking (great to understand the types of feedback you can offer), grading and writing reports (feedback to students once again). I was pleased to read the section on differentiation and find that I had figured out a lot of it on my own, though I could definitely improve on differentiating for weaker students. Might need some additional resources on the topic. Anyone has recommendations to offer?

Leave a comment

Teaching, teaching Session #2

I thought before I started this course, "oh, it's the third time I do this, it's all old hat, I'll just have a general recap blog post rather than weekly ones" but heh, as long as I keep learning and questions and topics to ponder come up, I'll keep writing them down if only for future reference.

I worked hard to have an interesting session with plenty of content this week. I mixed and mashed and added and transformed what usually takes 4-5 hours into an intense 2 hours session. It was worth it, I think it was a good pace for this class and the experience was rewarding.

It was really hard work though. It took such a long time to prepare that I'm not quite sure I can scale it, especially now that I need to create new material (and I'll be travelling the last 2 week-ends of the course). I'll see what I can come up with to keep things interesting without burning out on preparations -- all suggestions very welcome!

In parallel I've been reading an incredibly helpful book on teaching, and am using its tips and advice to structure my lessons better. I'm also figuring out things that are more specific to teaching programming ; for instance, having a code reading question when it's time to stop the exercises seems good at making students actually stop what they're doing and pay attention to the front of the class, rather than their screen. Then it's easier to move on to explaining a new concept.

Leave a comment | 2 so far

A few notes from the first session Teaching again

Post-session #1 thoughts (from Monday's scribbles):

  • Note to self: Re-read carefully the lesson's content beforehand, to remember it all. Knowing what's "print" and what's a variable like the back of your hand doesn't mean you remember how to explain them to someone encountering the concepts for the first time. Very embarrassing, I never want to introduce any concept like this again.
  • PhD students are SMART.
  • It's a shockingly different experience than what I'm used to. People read things once and Just Get It (TM). Unfortunately they also call to me less and so I don't have a chance to see their progress and correct mistakes, share tips, point out inefficiencies or just help in general. I'm making plans to try to mitigate this.
  • Overall I will have to work very hard to keep things interesting. It's both exhilarating and super scary.
Leave a comment | 2 so far

Teaching begins on Monday

After a bit of tension over securing a room, someone sorted us out and I will therefore be teaching another introduction to programming with Python, to a group of beginners, starting Monday! Exciting. I have a draft of everything I want to do on the first day, I need to print it out proper before the end of the week as we probably won't have Internet access during the class. I'll be teaching adults again. The class that I meant to cap at 8 students now has 10, admire my ability to say "No" :) (Update: Though I'm told only 5 confirmed for this Monday! Typical.) Hope it works out.

In the meantime, here are a couple of interesting links about teaching programming to kids, that I want to be able to find again later:

  • Teaching Kids to Program, or Don't Try to Teach 8-Year-Olds Java Subclassing. High-level, describes a way to get involved with schools and different approaches to teach kids to program (surprisingly, or not when you think about it, programming Lego Mindstorms proved a failure. For robots perhaps programming Roombas would work better, as they should be less prone to randomness... (?))
  • Umonya. This sounds like my "crash course" idea but on steroids and targeting kids, which makes it a ton more awesome and about that much more scary-insane. The presentation I was linked to says 18h + 6h optional over one week-end, which is... wow!

Both these links actually come from recent posts on the WoMoz mailing list, which seems to be straying from "getting more women involved in Mozilla projects" toward generally steering and encouraging women, girls, and young people in general towards programming. Interesting.

Leave a comment

Next teaching plans

I'm preparing my next course at the moment. Another introduction to Python for beginners, but in a different context: this is for a group of political sciences students, who use R for statistical simulations and are encouraged to look up Python for the next level of that module.

...Well I hope to be teaching them, we're having a bit of a hiccup securing a room at the moment! In any case, I'm reshuffling my material to use the feedback received last time as well as insights from a couple of education articles and books I've been looking at. It's a different angle from what I've done before: although they need to learn programming basics they'll also clearly want to be able to solve some specific problems on their own afterwards. I hope to find a way to satisfy this. One of the great issues I'm encountering when teaching is how difficult it is for students to decompose a problem into smaller manageable steps; I hope to include some level of doing this from the very beginning... We'll see how it works.

What would I like to do next, after that?

Crash courses

I mentioned them last year and people loved the idea, but end of years being what they are it didn't happen then. Someone pinged me about it again this month though, and it generated so much interest before that I'm really keen on preparing that one. Once I have the format worked out, it should be very easy to repeat it many times (and considering the number of people that expressed an interest in the past that definitely wouldn't hurt!) because it won't be a time-consuming one -- an afternoon -- which is quite exciting.

Teaching young people

This is what I "meant to do next" after my last course already :/ Adult courses are so much easier to organise: someone expresses an interest, I get excited to see someone interested, we plot when to set it up and it's obvious it'll be in the evening because I have a job and they have a job, other people join -> learning!

When I was talking to schools on the other hand, the schedule where they could fit me clashed thoroughly with work (between the time to teach and the time to get there and back), and sometimes they also suggested I teach as part of the mandatory computer class, which is not something I'm quite ready for (teaching a full class of uninterested teenagers... nope!). I was also very excited when I visited the Computer Clubhouse and talked with the people there, but unfortunately I have to admit I work too far and presently it would be too stressful to try to make it there on time to do something interesting before they close.

I'll have to think hard about this and figure something out (post-first crash course runs, though!). Summer camps could also be an option.

Teaching girls

This is an idea I've been toying with for a while and once I figure out the scheduling bit I want to give it a shot as well. I'm seeing many accounts that suggest knowing one will "not be the only girl" helps removing the intimidation factor and get interested girls to join a computing or programming class.

(Doesn't mean I'd stop teaching mixed classes, I still can't resist the appeal of someone interested wanting to learn :))

Teaching students

That's something I mentioned briefly here before, the idea of teaching an introduction to programming using Python to college CS students before their course begins, particularly targeting minorities to level up the playing field (and here's a blog post on the topic I linked to before). I've also been flipping through 'Unlocking the clubhouse' lately for references and I'm disheartened to link some of what I read to women I know who were initially interested in CS but dropped out just recently.

Initially when I started wanting to teach young people, my hope was to be an evident living proof for all genders that of course there are women who are enthusiastic about programming, and hopefully encourage a few girls to consider it as a career choice. I feel a bit like I've fallen short of my goal, though it's possible I'm just being too impatient :)

Leave a comment