In the fall of 2014, I ran a class for Mission Bit. The class was "Introduction to Web Programming", and it took place in LinkedIn's offices in downtown San Francisco. Some interesting things happened in that class, and I thought I'd share those experiences and my recommendations with other teachers and mentors. If you don't want to read the whole thing, that's fine, but maybe skim over the bolded points, which are my suggestions for other teachers to try because they worked well in my class.
To start, I was basing my class on the principles I outlined in Mission Bit Teaching Tips. This is a document I wrote for Mission Bit teachers and mentors about creating a learning environment that is more fun and more effective. I think it's really important.
I began the first class by introducing myself briefly and then showing some of the projects I've done, focusing mostly on the silly ones and less on the paid gigs. It helped show a bit of what programming is actually used for, which I realized is not at all clear to most people. I continued to show the students silly projects I made throughout the semester to share my own excitement about programming—some of them were quite amused by these projects.
Something I noticed at the time and in other classes I've done with Mission Bit is that the students don't talk to each other much, especially in the beginning but also throughout the semester. They're shy and go to different schools and will tend to keep to their own circle of friends. I'm not a huge fan of formal icebreaker activities (usually they're not very fun), but I really recommend Mission Bit facilitators spend a large chunk of time getting students to interact with each other. It will make the time spent in class a lot more fun, will likely lead to peer learning, and could lead to lasting friendships. What's better than that?!
In my class, we spent the first couple weeks on Scratch. I introduced it by suggesting the students explore the Scratch website to get an idea of the types of things you can do in Scratch and with programming in general. Scratch has this wonderful feature that lets you "see inside" any project to look at the actual Scratch code that runs it. You can even make modifications to that running code with a few clicks. Note how much more friendly this is than Javascript. I mentioned this "see inside" button after the students had explored a few different projects on their own, and they seemed fascinated by it.
After the students explored Scratch on their own, I gave a quick 10 minute introduction to the Scratch editor and asked the students to complete the built-in Scratch introduction. Unlike HTML, JavaScript, or any other language, these 10 minutes were all the students needed before they spontaneously started making projects on their own. It was pretty incredible, and for this reason I suggest all introductory classes at least start off with Scratch as a gentle introduction.
However, after those couple weeks, the students didn't want to use Scratch anymore. When I asked them why, some said it was too childish, and some said they would rather learn something else, like how to make websites or games. I was all too happy to oblige and we started learning HTML and CSS.
Unlike Scratch, these languages were much more complicated to teach and learn. One thing that helped a lot was to use Neocities, a free Geocities-like site. Neocities has an online editor and a one-button publishing system which removed a lot of confusion about creating websites ("the website is on my computer? how do I get it so other people see it?") and easily allowed students to work at home if they wanted. I highly recommend other teachers use Neocities for web programming classes. It simplifies the process immensely.
After we started making websites, the hardest part was coming up with websites the students actually wanted to make. I could have easily assigned them to make a particular website for didactic purposes, but I don't think that would have been that fun or useful for the students. Instead, students came up with their own projects with lots of suggestions from me and the class mentors. With everyone working on their own projects, the classroom started feeling much more like an afterschool club than a lecture and this felt really good. I suggest that teachers try to create a club-like environment rather than a classroom-lecture environment. The teachers and mentors are there for suggestions and debugging, but aren't boring students with confusing lectures.
My class eventually dwindled down to a few students, mainly because it was so hard to get to downtown SF from their schools, but the students that came were dedicated and made some great projects. A couple of them were really excited to continue learning, either on their own or in another Mission Bit class. I think it's a great sign when a student wants to continue learning.
Those are just some of the things I learned from running this class. I also wrote a much more detailed journal of the class, but that is mostly just for reference.