Category Archives: Programming

A Self Guided Programming Class

During the 2015-2016 school year, I’ll be teaching iOS Programming at Lincoln Sudbury as a “self guided” class.  I taught a class of the same title during the 2013-2014 school year, and my thoughts on how to lead such a class have evolved.  Here I’ll discuss my experiences the last time I ran the course, and my thoughts about what I plan to do with the class this coming year.

Some Lessons from the Last Time

The kids last time were mostly engaged, but sometimes had trouble focusing.  Some chose projects that were too hard for them, and didn’t know what to do.  They wrote code and had trouble letting go of it.  Still, some great projects came out of the class.

More Common Experience

In order to talk about code, kids need common experiences and common language.  In my upcoming class, we’ll do four units (about 8 weeks, I think) together at the beginning.  These will be:

1.  The calculator project that opens the Stanford Winter 2015 iTunes course.  This is a great introduction to all the things.  Swift (including a great bit on optionals), Xcode, AutoLayout, and Blocks are all covered.  This last bit (Blocks) may be a little too much for my students at this point in the course, but the rest is so good that its still worth it.

2.  A playground project in Swift.  I need to find a good one, or make one.

3.  The “Bullseye” project from the iOS Apprentice series by Wenderlich et al.

4.   I give them a fairly simple project to do and they do it on their own.  No tutorial.  Probably to write a “MadLib” app.

A Map

Students will finish the Common Experience part of the course at different times.  When they do, they will be shown a map of how their year can go from there.  The Map is a flowchart showing students what path they can follow to get where they want to go.

The main features of the Map that I feel are important to a successful self guided course are:

1.  You can see where you are going.  If you want to make a multiplayer game, you can see what kinds of things you’ll need to learn on the way, and how many steps it will take to get there.

2.  You finish what you start.  Once a student chooses a unit from the map, they are committed to finishing that unit.  That means each unit has to be finish-able, and it also must have some assessment rubric that is clear to the students from the beginning.

3.   Units are not too big.  This is not a difficult thing to achieve.  Most tutorials from books and the web are in chapter sized chunks which can be completed in 2 – 3 weeks at most, assuming students start in an appropriate place to do the tutorial.  That is what the map is for.

Independent Projects

Eventually, all students have to do an independent project, where they think of an idea and then implement an app.  They will have to do at least one in the first semester (starting by December), and another, more ambitious one in the last quarter of the course (starting in March).

Stand Up

A big part of the course is asking students to stand up and share what they’ve learned with others.  After the Common Experience is over, students will rotate giving 5 minute talks at the beginning of most classes.  Everyone will give at least three talks – one in each quarter after the first.

 

Self Guided

I think of “Self Guided” as a skill I am teaching, not one I expect students to come with.  Its my secret agenda for the class, and more important than the content of the class itself.  In ten years, my students might or might not be programming iOS devices (or anything else).   But if they are, it won’t be because they learned it in my class.  It will be because they are learning it on their own, all the time.

iOS Programming and Swift

Last week, Apple introduced the Swift Programming Language as the future of iOS (and OS X) programming.  This year, at Lincoln Sudbury RHS, I taught an iOS Programming class for the first time, using XCode 5 and Objective C.

 

The iOS class is scheduled to run again in the 2015-2016 school year, which is good news, since it gives me a chance to learn Swift, and for the tools to stabilize.  I’m pretty sure we’ll be using Swift in that class, for a number of reasons.

First, Apple has made it clear that Swift is the future of iOS / OS X programming.   Second, Swift (using XCode 6) includes a playground feature, which allows you to change code and immediately see the results of your changes.  This could be an amazing teaching tool.

So my work is cut out for me, and I’ll be experimenting with and learning Swift over the next year.  I’m planning a rewrite of the “MyLS” app – an informational app for students at Lincoln Sudbury, and I’ll be writing it in Swift.  Stay tuned!