Thursday and Friday I was at NAIS (the National Association of Independent Schools) conference. This was only my second time at this conference, both times I’ve presented.  I drove with my colleagues about 6 hours there and back.  It was actually great to have them in the car with me.  We talked about everything.  We talked shop, families, politics.  It was great.

The theme of the of the conference was the  Design Revolution, so there were lots of sessions related to change, making, design thinking, all things right up my alley.  I went to two Design Thinking sessions.  I have been hearing about and reading about Design thinking for a while.  I think I first heard about it at educon a few years ago.  Two of my colleagues went to the Design Thinking Institute in California last year, and so I’ve heard a lot about it from them.  I also use a similar approach in many of my classes.  It’s not a new idea really, but applying it to education is new-ish.  It’s a really intriguing approach and the goal of it is to arrive at creative and solid solutions to problems.  I’m looking forward to using this approach in other areas.

The opening general session was by John Maeda, former president of RISD and former MIT Media Lab member.  I saw him at MakerFaire two years ago, and loved his presentation.  This one was also awesome.  It was a version of this talk:

I’m a creative person.  I got into this whole tech thing via creative writing and then web design.  I’m not so great at visual design the way Maeda is, but I think creatively.  And on the tech side, I like solving puzzles and making connections.  So I love the way Maeda connected design and creativity to leadership.  Having been in a few leadership roles, I often struggle with how to lead.  I’m not particularly authoritarian.  I like hearing ideas from others, and this approach didn’t seem to fit with what a traditional leader is supposed to be.  But Maeda is no traditional leader, and he made it clear that creative people can and do make good leaders; they just do it differently.  That was refreshing to hear.  He has a whole book, Creative Leadership, about it, which yes, I’ve purchased and will be reading.  My colleagues and I talked about Maeda’s talk over and over again throughout the conference.  It was a great way to begin.

I also hopped over to Harvard to see an old high school friend whom I haven’t seen in 25 years.  He’s a CS professor, so we got to talk shop and talk about our childhoods.  Bonus.  It was such a fun thing to do, and it was frankly, one of the highlights of the whole trip.  It was just nice to see an old friend, get out of the hotel for a bit, and pick someone’s brain who’s really smart.  I love intelligent conversation.

And I met up with an old friend from another Independent School, which was really fun.  We haven’t seen each other since our college English teaching days when we were both at a higher ed conference. So that was fun to be in our new context and talk about how things were going.  Back when I was first considering making the leap to Independent School teaching from higher ed, she was really helpful in shaping my resume and giving me advice.  It was truly great to catch up.

The presentation I gave, with 4 of my colleagues, toward the end of the conference, had about 100 or so attendees, so very good.  I opened the first 5 minutes and then turned it over to my two department members who do the meat of the work.  I think I’m about to become that person, the mentor/leader, who helps their younger colleagues with their careers and connects their younger colleagues to others.  I’ve been doing that for students for years, but I’m old enough and experienced enough now that I’m starting to be able to do it for colleagues, which, let me tell you, feels really weird.

So, I got inspired by a lot of the conversations, both those related to the conference presentation and just with friends.  I feel like I’m ready to tackle my work again on Monday with new vigor and new ideas.  And that is awesome!!

Robots in love (and other robotic truths)

My CS I students are finishing up their first big projects.  It’s a pretty open-ended project that’s intended to have students use the skills and concepts they’ve learned over the last few weeks in a larger and more complex context.  I’ve been thoroughly impressed with the things they’ve come up with so far.  I’ve got a robot tour guide, a robot hide and seek project, an art museum docent/aspiring artist, several varieties  of word games, and a robot musical.

A popular project is the robot dance.  One might think that would generate boring are all the same kinds of projects, but it doesn’t.  Some of my students, even, are a little worried that they haven’t done enough, but I’ve assured them that they’re just fine.  Here’s just one example of the kind of thing they’ve done.  It really is super fun. (And sorry to my Twitter followers who’ve seen this!)


A great #makered week

Last week, things really started to gel for both my 8th grade Creative Computing class and my CS II class.  On Thursday’s #makered chat, I posted this:

This is an 8th grade student going to town with a Hummingbird Kit.  The assignment was to create something physical with a Halloween theme.  And while her robot probably will only loosely be Halloween-y, she’s ready to work on this for the next few weeks.

8th Grade Student and her 3Doodler success
8th Grade Student and her 3Doodler success

Another student wanted to make a Haunted House, so she laser cut the front of a house, and then used a drill to cut out the windows and then started using the 3Doodler to enhance some of the details on the front.  She asked if this house could be a prototype for a whole city.  Um, yeah, I said, That would be awesome.  She said, oh man, this is what I’ve always wanted, to be able to do stuff like this.

Meanwhile in CS II, I’ve been trying to corral what is a pretty feisty group of students.  There are only 7 of them.  They have been bonded through their experience in CS I, and they have a tendency to want to goof off; however, this week, they finally got to work on some object-oriented programming, again with a Halloween theme.  Below are two of the projects.  My CS II class is at the end of the day, and is followed by a free period for students. Many of my CS students just stay and keep working.  It’s pretty cool.  At the end of last week, I was feeling pretty darn good about my students.  And I have more good student news to share.  Stay tuned!


My Classes are Like a Safari

Or like being dropped in the wilderness.  Or like being thrown into the deep end. Or like going on an adventure.  These are all ways that my students have described what my CS I class is like.  When they describe it this way, they’re not frustrated or angry or anxious.  They’re excited.  At first, they were like “what? you’re not going to lecture or explain everything in detail?”  I did pause when everyone seemed confused by the same thing and do a brief mini-lecture, on functions, for example.  But generally, I have them read a bit about a concept, and then work through several examples and contexts for that concept.  It’s like solving puzzles or mysteries.  We’ve had a lot of aha moments where something finally sinks in.

It’s harder to teach this way, to let the students fumble their way through something, and I’ll admit I worry sometimes about how much they retain.  To counter that worry, I have tests and quizzes, but I can’t help but worry.  It’s also harder because I have to think through how an activity will go.  I can’t just lay out, this is a loop.  I have to work through how they’re going to use loops in meaningful ways.  Actually, Mike Z just posted something that is similar to how I approach things.  You lay out some instructions for something that seems simple and then discover why loops are cool and/or useful.

I also do a lot of running around.  I’m working on having students do more helping of each other, but we’ve only really been coding for a few days, so I’ll give them another couple of days before I truly let them wander the wilderness.

Lost in Translation

I often forget how embedded I am in the language of computing.  Even before I took up programming, I was quite familiar with how to use Unix commands and the difference between my computer and the server where my web site actually lived.  Having grown up in a GUI world, my students don’t see any of the underlying structure of the computers and servers they interact with.  I expose some of that but it takes a while before it becomes second nature to them.

For example, I gave this instruction verbally, “type /Users/Documents” and more than one student typed “slash Users slash Documents”.  Or conversely, when learning about types, I had the written instructions, “type type(6)”, and some students assumed I had typed type one too many times and just typed in 6.  Sometimes with the parentheses.  And then, when asked to define what hello is in either this context: type(hello) or this one: hello=”world”, they are baffled.  It’s a word, it’s a string, no, it’s a variable.  Their concept of variable in math is that a) you’re usually solving for it and b) it always has some value.  In CS, of course, variables sometimes don’t have values (giving you an error), or they can have values that are very different from a number: lists, functions, dictionaries, words, sentences, files, etc.  That’s more mind-blowing to students than one might think.

As Garth said in his comment to my last post: “Teaching programming is like teaching a foreign language but the student has to understand logic, major problem solving, technology and memorize the language, all at once.”  I’d say, too, that they’re having to learn new English words alongside their “foreign” translation.  It’s like having learned English, you find out there’s a whole dictionary full of words you never learned, and now you have learn them plus their translation in another language.  Painful.

But kind of fun.  I’ve said to both my CS I class and my 8th grade class that what they know right now, 6 weeks into school is more than any of their teachers know about computing (with maybe one exception besides me).  They makes them smile even as they struggle to learn this new context and language.

I have a tendency to throw my students into an activity without much explanation and then explain things after they’re done.  I know it can be unnerving.  I had a student ask a very good question after class yesterday.  She asked, “What is it that we’re doing exactly?  Is this a language?”  Once I explained, she then asked if there were other languages and how they worked.  The “throwing them in the deep end” approach leads to this kind of curiosity usually.  They often feel the need to figure it out.  That need to figure it out is what will keep them going when they feel a little lost.

Teaching, Programming, and Practice

Over the weekend, I read a couple of blog posts by programmers who were teaching workshops to either students or teachers, and who were quite amazed at how hard it was to teach. They didn’t come out and say that they thought teaching would be easy, but they implied that by talking about the challenges they faced.  They weren’t condescending at all, just clearly surprised.

And then there’s all the venture capitalist folks who think software is going to replace teachers any day now.

Education, teaching and learning are challenging.  People are often surprised by what happens in the classroom, of having to deal with different levels of students, of realizing that students don’t have some foundational information that you thought they would, of realizing that just telling them something doesn’t mean they actually learn it.  There is research out there that helps, but every day, you have different variables, so you try things.  And sometimes it works.

I don’t mean to be hard on the programmers trying to teach, or even the software developers trying to create something that will help people learn.  But the truth is, teaching is something we’re still trying to figure out.  If we had all the answers, then good teachers would be spitting out students who know everything they need to know and are equipped to continue learning all the time.  But we know that doesn’t happen.  And it’s not just that those good teachers miss a couple of students.  Sometimes they miss a lot.  Because there are other factors.  Learners learn in different ways.  Learners face challenges like poverty, drug addiction, lack of parental support that take up their cognitive capabilities, leaving little room for learning math or science.

And for the record, I find programming hard.  And I have much of the foundational knowledge to do some pretty complex programming, but I still struggle with it.  It takes me hours sometimes to do pretty simple things.  In part, that’s because my job is teaching, not programming, so I have less practice.  During the school year, I probably spend less than 2 hours actually programming things.  The things I do program are simple activities for my students.  They’re not complex, real-world problems.  I’ve tried to remedy this in a number of ways, trying to make time for some “real” programming (I did some this weekend, in fact), but I spend most of my off time, grading, giving feedback to students, planning ways to teach basic concepts, all that good stuff.  So I admire programmers, because I know they’ve had some practice and I admire them for wanting to share their knowledge with others, but like programming, teaching takes practice.  And I’m going to guess that programmers spend as much time teaching (at best) as I do programming.  We have a lot to learn from each other.

Food + Algorithms = Learning

IMG_20140924_084037452_HDRAs I’ve mentioned, I’m focused on making sure students understand underlying concepts without the need for code.  I really believe that if they know what a loop is conceptually, they can create a loop in any language.  Yesterday, I tackled both the concept of an algorithm and basic programming concepts by using food.  I broke the students into groups of 3 or 4 and gave each group a set of supplies.  For the morning class, we had bagels, cream cheese, and strawberries.  The afternoon class had crackers, cheese and pepperoni.  Each group got a plate, necessary utensils and napkins.  Then each group selected a person to be the robot.  I conferred with the robots and explained that they needed to be stupid.  They don’t know what cheese, bagels or crackers are.  They know basic directions and that’s it.

IMG_20140924_084335344As you can see from the pictures, the students had fun, especially when the directions went awry–as they did in every group.  In the morning class, we had time to test out the process using me as the robot.  That was instructive for many of the students as well.  In some groups, the robots helped out a little too much.  I didn’t.

In both classes, we discussed what was difficult about the process.  The fact that the robots could just be told to pick up a bagel or cracker was difficult.  They realized quickly how much humans know compared to computers.  I asked how they overcame their difficulties.  It was interesting how many different programming concepts they used to complete their tasks.  Some groups defined their objects.  They described what each item was and where it was located (object-oriented programming, ftw!).  Some defined functions, like spreading.  They all repeated actions in a loop.  Some simply said, “Repeat.”  Some used ctrl-c, ctrl-v, which I thought was hilarious and awesome.  They all used conditions, mostly in a “while” loop: “move hand down until you hit an object.”   And we talked about how to orient a robot using things like coordinate plans or just left and right, up and down.  I also suggested that their plate could serve as a clock, so they could say, put your hand at 3 o’clock.  I went through basic programming concepts after the activity, and I was able to connect each concept to something a group did during the activity.

IMG_20140924_134349079_HDRThe homework had been to read some material about algorithms and write what they think an algorithm is and how it relates to programming.  After the activity, I asked if they would revise their answer.  Most said yes.  Many said, just saying it’s a list of instructions isn’t enough.  They talked about figuring out how many steps to break the problem down into, that some of those steps need to be small and detailed.  Some even talked about having algorithms within algorithms, so that you might have an overarching set of instructions, but smaller sets within the larger one.  They also talked about what the robot knows and understands versus what humans understand, and that they needed to figure out how the robot is seeing things or understanding things, so that they know how best to give instructions.   In one class, that discussion led to questions about how real robots work.

What I’m now looking forward to is seeing how this plays out withIMG_20140924_134422706 actual programming.  One thing I’ve noticed this year, both because I’ve made some changes, and because I have more students, is that girls like to talk about what they’re learning.  Some of my students have even said as much, so I think I’m going to build in time after every concept to have a conversation about it.  I think it allows them to create their own ways of remembering and understanding the concept.  They use their own contexts and metaphors.  And I’m there, of course, to make sure it’s accurate.  I knew this intellectually before, but seeing it play out is really interesting.

First Day Impressions

Yesterday was our first day of classes.  It was great to have the students back, even though we had a weird schedule so we just had time for administrative stuff.  I have 3 CS classes in Upper School:  2 sections of Intro with a total of 29 students (I think; people keep adding and dropping), 1 CS II with 7 students and an 8th Grade elective with 7  students.  I lost a couple in the elective over the last couple of days.  No friends in the class.  Yay Middle School.

My CS II students were talking about how hard CS I was, especially the midterm exam.  They now want to make t-shirts that say “I survived the CS I exam” both for themselves and to sell to the CS I students.  I really didn’t think it was that hard.   It’s kind of cute that they think they survived.  Given that, I’m surprised by how many signed up.  Still, I took the feedback to heart and over the summer, I added some more assessments and readings to make sure they’re prepared.

The 8th Grade Elective is going to be interesting.  I’m trying to make it a “maker” like class with a heavy dose of CS.  I have some things planned, but I want to leave some room for them to plan some things.  There’s also a few ideas I have in mind that I don’t exactly know how to do yet, so there’s some things that I’ll be learning along with the kids, which I’m kind of used to.  But the class, despite only having 7 kids is going to be a challenge to wrangle.  They’re all pretty high energy and their interests are all over the map.  I’m hoping once we get started working on things, that energy will be channelled productively.

I think it’s going to be a great year!  I’m looking forward to seeing how the new things I’ve added go, and more importantly, seeing what the students come up with.

How to Assess “Computational Thinking”?

Assessment is one of the hardest things teachers do.  Yes, sometimes we can grade tests and there are right and wrong answers, but often, we’re trying to assess and provide feedback on how a student thinks.  Or we’re assessing the process of how they got from point A to point B.  I like how Dawn address this issue in this post, using a pre-assessment as a starting point.

Standards-based grading helps here a lot, giving some good language for the students to understand where they are: you don’t know this at all, you’re learning, you’ve almost mastered it, you’re a ninja (to simplify).   After going through her papers and assessing them, she came up with a list of things the students need to understand.  She looked at their misconceptions closely and determined what exactly they were.  Such a great idea!  Here are here conclusions:

Some common misconceptions I ran into that I’ll need to watch as we go through the unit:

– Not understanding that one block = one instruction
– Not knowing what variables represent or keeping track of more than one variable
– Changing variables, assigning variables, substituting values in place of variables
– Not understanding what a Repeat block does
– Not understanding “if” and especially nested “if” statements
– Not seeing that instructions are run one at a time, starting at the beginning and following an order of execution
– Not understanding that the instructions inside a Repeat loop can do something different each time depending on values of variables and conditional statements
– Thinking of the narrative of a game instead of rules that are followed

All of the above things are things most of us teaching CS see quite often, but it’s nice to see it in a list like this.  When I go over quizzes and tests, I sometimes make lists like this, of things that hung people up.

More importantly, Dawn addresses the thinking and learning strategies that have gone awry:

– Not actually reading the prompt on an assessment
– Not answering all parts of a question
– Being sad about not understanding a pre-assessment
– Not writing in complete thoughts, let alone complete sentences
– Getting lost and giving up and lacking strategies to understand the text

The one about being sad and the one about getting lost really get to me.   Those are the things that sometimes stop kids in their tracks and keep them from learning the material even when they are capable of doing so.  In Computer Science (and in other STEM fields), that feeling of being lost or sad (after a test or other assessment) often drives people away, especially women, who are more likely to blame themselves rather than appreciate that there’s a learning curve and that they’re at the beginning.

I’m looking forward to seeing more from Dawn on her assessment strategies.   It’s something I think about and work on all the time, especially those thinking pieces.


Putting Together a Course

I’ve been building classes and syllabi for over 20 years. Which is kind of freaky. I still feel new to it somehow. I think because I challenge myself to do it better every year. Putting classes together is hard work. I was explaining this to a non teacher the other day. One thing I said was that often it takes 2 hours to plan an hour long class. Which is sometimes true though thankfully not always. I thought I’d share my process and get others to share. I’m curious about the many different ways of thinking through building a course.

I begin, usually, by thinking about the end. Where to I want students to get? I often think about a capstone project an what they should be able to accomplish by the end of the course. Then I think about how to get there. I think about themes or topics and what order to go in.

Here’s an example. I’m still thinking through my 8th grade elective. It’s a CS/maker course and I want my students to be able to create a complex project that involves something physical like a robot or lights or any object and something digital like a program that drives the physical or that he physical drives the digital. So I’m thinking of themes like this: digital design, physical design, from digital to physical (programming an object), from physical to digital (using sensor data). There are sub themes in there like interface design and working with data.

From the themes, I start to develop discrete assignments and projects. In the 8th grade class, I begin with web design, then do game design. Well do two games, one in scratch and one in JavaScript. They’ll learn HTML and CSS and about how web servers work. I’m thinking 4-6 weeks for the first theme, though I haven’t mapped it out yet.

And that’s what I do next. I start deciding what exactly we’ll do each day. Will we need to read something before class? What activities will we do? How much explanation will I need to give and what supporting materials will I need to have on hand? I try to map as much of this out ahead of time as I can, but sometimes I’m planning these single class periods the day before. And sometimes things change. Projects take longer or shorter than I thought. A snow day hits. The students really want to learn X. And so I adapt.

Adapting is key. Though I always have a plan, I always try to gage where my students are and where they want to go and adjust accordingly. I want them to have a sense of where I think we might go but I try to make it clear that it’s their journey and they have some say over how we get there.

How do you plan? And how flexible are you?