Middle School Computer Science

Teaching CS at the High School level isn’t too hard.  Basically, I’ve taken a college freshman level curriculum, tweaked it to make it a bit more interesting for high school students, slowed it down a bit, and taken out some higher level math that a freshman in high school just hasn’t had yet.  Every year, I tweak it a bit, based on feedback from students and from what I see going on in the classroom.  I borrow ideas shared by other CS teachers and I’m constantly trolling through the resources on the CSTA web site.  It may not be perfect every time, but it works.

Teaching CS at the middle school level is a whole different story.  If what should be taught at the high school level isn’t a settled issue, it’s even less of a settle issue at the middle school level.  The number of places even teaching computer science concepts as part of the curriculum is tiny.  I only know of one or two myself.  Most people are doing robotics or creative computing as an after-school club.  While they might have what one could call a “curriculum,” they’re not as worried about sequencing or providing a foundation.  It’s about sparking an interest primarily.

CS is part of our curriculum in the middle school, something I’m hugely proud of and thankful that the administration supports.  It’s not fully an academic class, but it is required and every year, we’ve added more time.  I’ve struggled every year to figure out the best sequence of assignments, how to present assignments, what language and tools to use, and how much group work to do.  I started by doing Scratch in 8th grade, but found that those students thought it was a bit too cutesy, so I moved it to 7th and finally to 6th.  I left the assignments alone, and it works pretty well.

In 7th grade, we’re working in a block language that’s a precursor to Python, Jigsaw.  At the end of the term, I’ll have them export their programs to Python, so they can see how their programs would look if they typed them out.  In this class, we do more with concepts like variables, functions, and types, but we simply repeat many of the same concepts learned through Scratch: loops, if statements, and general sequencing. This year has been challenging because this is the first class to do it, and they didn’t have Scratch last year.  But some of them did Scratch in other venues and some did robotics with me, but still, a lack of foundation in logical thinking has been a challenge.

In 8th grade, I started the year doing Python.  That was kind of a disaster, so I decided to offer either Python, using the videos I had created, or javascript, using an online system that sequenced lessons and projects.  It’s still a disaster.  And it’s not me, and I think I have to figure out a better way to do this.  First, the classes are especially large this year.  I normally have about 15 or 16 students, the perfect number to group them and to manage.  I have 22 in each of my 8th grade classes.  I’d say about half of them even know what’s going on.  Second, I only see them once a week.  It’s common for them to forget entirely what’s going on from week to week, so I have to backtrack a lot or, given the large class size, students just twiddle their thumbs and hope I don’t notice.  Third, they know this class doesn’t really “count”.  The students who are motivated to learn for the sake of learning do fine.  They diligently complete assignments, ask for help, and figure things out.  The rest, if I’m lucky, poke at the assignments, but are sneakily doing homework for other classes.  Sigh.

I have one more trimester of 8th grade to get this “right”.   Here are some changes I’m going to make:

  1. Back to Python.  At first the kids were excited about javascript and they liked the self-directed lessons.  But javascript’s curly braces and semi-colons got to them and they also couldn’t see how they were building skills.  The projects in the online environment had no relation to the lessons–or at least the kids can’t see that.
  2. One project, working in pairs.  I have a couple of groups of students working through either javascript or Python projects.  The time is such that, realistically, students can only get through one project.  I think what I’m going to do is have them complete a “Choose Your Own Adventure Story” game, adding graphics at the end.
  3. Pair programming.  I’m going to make people switch halfway through each class, so that each partner gets a chance to be at the keyboard.
  4. Turn in their work every class period.  I’m just going to check off that they did something in class.  That might focus some of the kids who aren’t doing anything in class.
  5. Handouts.  The videos aren’t getting watched between classes.  I’ll leave them there for the over achievers, but I think a handout with a list of the functions they need to use will be more helpful.  To save trees, I’ll post them online, letting individuals print if they want to.

I’m also in the process of revamping the whole Middle School curriculum, so in a few years, none of this will apply, but I do think I’ve learned a lot about how to scaffold projects for MS students, something that I think will be helpful even as I morph the classes into something that looks more interdisciplinary and involves more physical objects, a la #makered.  And that may be what’s more appropriate for middle school, a way of showing students how computing is connected to math, science, art, even history and English.  It makes sense to me to channel their energy away from the screen and into collaborative hands-on work first and add the computing components later, when it makes their physical objects light up, move, collect data, or make noise.  Though I sometimes complain about my class not “counting,” it is also a blessing because I don’t have specific content to get through.  There’s not a next grade that’s expecting me to have covered material through x concept.  I’m just trying to engage students in something fun, have them see that they can control their computers and not the other way around, and if they remember what a loop is, or learn logical processes, so much the better.

Enhanced by Zemanta

Success and Not Success

First, success. My Physical Computing students are making progress on the Rube Goldberg machine.  Today I tweeted:

That was the list my students gave me so that we could continue working tomorrow.  Two students ran off to the wood shop with a plan.  How glad am I that we even have a wood shop!  The rest of us stayed and worked on the other pieces.  We programmed a robot, printed a scoop for the conveyer belt and planned out what the pulley mechanism will do.  Here are some photos from today:

Robot goes down ramp and completes the circuit to start the motor.
Robot goes down ramp and completes the circuit to start the motor.
Marble runway
Marble runway built by students in wood shop.

We’ve basically looked around the room and said, “Hmm, wonder what we could do with this?” or “Hmm, what do we have that we can build x out of?”  And then we’ve got something put together.  So it’s been fun, and I think we’ll have something cute by Friday.  Did I mention we have to be done by Friday?

One thing I’ve been thinking about is what this has to do with Computer Science.  We do have some programming parts, but mostly, this is not obviously about CS.  But it is about logic and engineering–more logic than anything.  The students planned from the end backwards.  They’ve broken the problem into parts and worked on each part separately before connecting the parts together.  Sounds like functions to me!  It’s a little more linear than most programs, but the concepts are surprisingly similar when you think about it.

And now, not success. 8th grade.  I’m struggling to tweak/overhaul my curriculum (class starts Wednesday) to make the class more interesting to a typical 8th grade girl.  And this is harder than I thought.  I have the time constraint of once per week for 40 minutes for a total of about 6.5 hours. I also have my own imposed constraint of teaching coding and not having them play with Photoshop or MovieMaker.  Last trimester, we did Python, which, as I documented here, didn’t go so well.  So I thought, okay, maybe a different language, maybe JavaScript.  I found a good online resource.  I set up a class, pulled some lessons using their prepared curriculum and a few lessons in, I thought, “Boy, this is boring.” All we’ve done is add some numbers and make some strings and use some if statements.  I’m wondering if an 8th grade girl will stick through the boring bits to get to the fun stuff.  I’m not so sure.

And this has been my struggle more generally.  By 8th grade, the cute, block-based languages no longer appeal.  They’re too cutesy for most 8th grade girls.  But, most 8th grade girls have had little to no programming prior to being in my class.  Without the underpinnings of some programming and without the maturity of high schoolers, syntax really gets in the way.  The colons, parentheses and curly braces get frustrating pretty quickly.  I was writing some if statements in JavaScript and I realized that the && and == were going to freak out a lot of people.  At least with Python, you get some “real” English (and’s and or’s, for example, instead of && and ||).   But there’s nothing really in between something like Scratch and Python or Java, languages that allow you to do pretty much anything.  There are some drag and drop languages out there that are used for app development (like App Inventor or Game Salad) but you can’t get far enough in those in 6.5 hours to really accomplish anything.

But, I think I’m going to forge ahead and see how it goes.  I know some other tools out there that might be interesting to tackle but I don’t have time to experiment.  I’m reasonably familiar with JavaScript and the built in lessons are good given that I don’t have time to develop my own.  I’m still going to have my own Python-based curriculum, but I’m going to let them choose.  We’ll see where people go.  That will tell me something, I guess.

 

Middle Schoolers and CS

I did something many of us are not always brave enough to do.  I surveyed my Middle School Students about how they liked the class.  We’re on a trimester system where I get a new group of kids every trimester, and yesterday was my last day with 8th and 6th grade and today was my last day with 7th grade.  I surveyed 7th and 8th grade.  I felt like my 8th grade class was a disaster.  One thing about trimesters is that I get to change things up sooner rather later, so if something didn’t go well, I can fix it.  And boy, do I have some stuff to fix–at least in 8th grade.  While in 7th grade, not everyone is convinced they should take computer science later, they generally liked the class. In fact 13 out of my 14 students said they would recommend the class to friends.

In both classes, I use Calico and we go through several projects.  In 7th grade, I use a Scratch-like language called Jigsaw.  In 8th grade, we’re using Python, taking advantage of the various libraries included in Calico.  In both classes, I think I need to vary what I do more.  While I like Calico a lot, I think I’m going to have to mix things up a little.  Both classes said they would like to create a mobile app.  I’m pretty sure I can’t do that in the time I have, but it’s something to keep in mind.  Both classes also said they liked working in groups.  I do group work but I also do one individual project.  I think I can let that go and just do all group projects.

So 8th grade. First, the class is too big.  I have 22 students (public school teachers, you can stop laughing now, I’m sorry). In fact, a majority of the students, in response to “What would make the class more enjoyable?”, said that the class should be smaller.  I had some major classroom management issues.  I was well aware of the talking and general carrying on and tried to mitigate it in various ways, and decided to focus on the majority of the class that was engaged rather than spending all my time disciplining the kids who really didn’t want to be there.  But, I need to think about what to do about that.  My 2nd and 3rd trimester classes will be just as big.  I have a few ideas–and some of the students actually had good ideas. So I’m going to try some new things on that front.

But, if your material isn’t engaging, then no classroom management technique is going to fix that.  And that’s where I think I failed more than on whether I can manage a room full of 13 year olds (which I admittedly sometimes need to work on).  So while I don’t think I can do everything they asked for, I do think I can vary what they’re doing.   We might do some things from Codecademey or some other tutorial sites.  I have this sense that letting them be a little more self directed might help.  Basically, I think I’m going to do a “choose your own path” route, but do a little more foundational work about how that works than I did previously.  I need for the classroom to be orderly, but I need it to be so not because they fear punishment, but because they have interesting tasks to complete.

One of the things that’s disappointing to me about having a class that doesn’t go well is that I’ve added to the negative perception of CS.  Almost half the class said that their least favorite thing about the class was learning about programming (that’s the 8 answers on the left of the pie):

What was your least favorite thing about the class?
What was your least favorite thing about the class?

Additionally, their responses about their attitudes on programming weren’t very positive:

I would say that programming is . . .
I would say that programming is . . .
Hard 9 16%
Fun 4 7%
Cool 6 11%
Important to learn 5 9%
Interesting 8 15%
Something I see myself doing 1 2%
Something I never thought I’d do 5 9%
Something boys do 1 2%
Something I wish I knew more about 7 13%
Boring 7 13%
Easy 2 4%

Many thought it was hard and boring.  There are some who said it was interesting, cool and something they wish they knew more about, but compared to the 7th grade class, there were more negative responses here.  In 7th grade, no one said it was boring, though just as many said it was hard. More thought it was interesting in 7th grade.  More than half of the 8th graders said they were Not likely at all or Unlikely to take CS in Upper School while in 7th grade more than 50% said they were somewhat or fairly likely to take CS in Upper School. No one in 7th grade was at either extreme, Not likely at all or Very likely.  I’ll take a “well maybe” from a 7th grader.

All this means to me is that I have some work to do–and fast! Second trimester begins after Thanksgiving.

 

Progressing

For the most part, I’ve been working for a few hours every day to prepare for classes in the fall.  I’m starting with 6th grade and working my way up to 7th and 8th.  And I have the Physical Computing class to work on.  Going to the Arduino sessions at The Hacktory really helped, and I might go to their project nights to work on my cat tracking project.

I’m moving my Scratch curriculum back to 6th grade.  It was mostly in tact, but I needed to tweak it a bit.  One thing I’m doing for all my middle school classes is flipping.  I’ve realized that I lose valuable class time to explaining concepts (often more than once).  For each class period so far, I’ve created 5-10 minute videos.  Yes, I’ll gain the 5-10 minutes back, but I’ll also be able to have students watch the videos again if they need to and I can be helping others move forward.  Here’s the playlist I’ve created so far: http://www.youtube.com/playlist?list=PLo7YO_w3ktGQ3w4opcyJnYUeljJHkcwEE

I’ll be adding to that as I go along.  My plan is to finish 6th grade today before I head out for vacation.  When I return, I’ll work on 7th grade.  I also have to prepare a couple of talks in there.  I have a feeling that 8th grade won’t get done until end of July.  And Upper School will happen beginning of August.  There goes the summer!  Honestly I don’t mind.  Basically, I work for about 4-6 hours, depending and then I do nothing.  Well, currently, we are re-watching all the Harry Potter movies.  I’m taking my computer with me on vacation as is Mr. Geeky.  Right now, we’re both planning to not do any work, but we’re thinking if the mood hits us . . . I know, sad.

My summer “off”

Every teacher and professor I know gets so annoyed with people who comment about how nice it is to have our summers off.  Yes, we aren’t obligated to trek into work every day at a certain time and stay until a certain time.  But there’s still work to be done.  I do love the different pacing and choices over how I spend my time, but even the 9-5 jobs I’ve had have had periods of time where I’ve had that flexibility.

I do need some major down time.  Mr. Geeky, having been off for three weeks already, has taken quite a bit of down time.  He worked maybe 1/2 days for a couple of weeks.  He’s been gearing up the last week or so, working on a paper and some other things.  Me, I’m having a hard time thinking about working again when I just raced to the finish, through this past Friday.  I have a couple of meetings today, and my goal is to get everything done that has to be done at school: curriculum mapping (only accessible at school) and cleaning up my room for the summer.  I have a week until I go on vacation and I do plan to get some work done before that, but I’m shutting down over vacation.  I’m going to take my iPad for reading, but no computer.  I’m not thinking about work.  Even if Mr. Geeky tries to make me (I swear the man never shuts down).

Once I get back from vacation, I have talks to prepare, and classes to prepare and reading to do.  I’m hoping it will all get done.  But I’m also excited about what I have planned for next year.  I’m really looking forward to it going well.  One thing I really need to think about is recruiting more students to CS.  I really think this is a girl thing, and I really think I need to figure it out.  My numbers are definitely looking better this year, but it’s incremental.  I’d love to double or triple what I have right now.  One thing I’m going to focus on is middle school.  I’ve done a lot with that age group, but I need to do more.  In fact, mapping out what I’m doing with Middle School is top of my list today.  I’m open to ideas.  Please feel free to leave a comment!

So, summer will be different, but definitely not “off” (at least not in the vacation sense, but maybe in the odd sense 😉 ).

Even 8th graders like infographics

Yesterday was the first day I’d seen my 8th graders in three weeks. I introduced them to our project, put them into groups, and had them decide what they wanted to collect data about. I then reminded them via our homeroom bulletin to collect their data. I was fully expecting them not to have their data. But they did!

I had them put their data into a spreadsheet and generate a couple of graphs to see how their data looked. They actually had fun with that. Students have collected data on favorite broadway shows, favorite travel destinations, favorite froyo flavors and toppings, and the hair and eye color of the whole 8th grade. I’ve had no whining or claims of boredom, etc.I can’t wait to see the end results next week.

I think there were two main things that have made this successful so far. One, groups, and two, having a clear sense of the end goal. Showing the examples seems to have really stuck with them as they mentioned them several times. Another factor is probably that this is the first group I’ve had since 8th grade. They just know me better. Whatever it is, I’m glad, and I really think they’re getting something out of it.

Is Computing Like Eating Vegetables

English: Dagwinkel foodstores fresh fruits & v...
Image via Wikipedia

I’ve been having conversations with various students about learning Scratch.  I find it really helpful just to ask for honest answers, and I love that most 8th graders will actually be honest.  The main answer I get about learning Scratch is that students find it too hard.  It’s too much work, they say, to get any good results.  Or it’s too tedious.  I find this interesting because they’ll do math and science that’s also pretty hard.

It’s a possibility, of course, that I’m the problem.  It’s also probably a contributing factor that this course isn’t an academic one and only meets once a week.  The first thing I might be able to work on.  The second is out of my control.

Reports abound that CS is a great field economically.  Yet, it’s not filled with women.  It’s also not gaining too much traction in high schools.  We keep telling people that CS is “good for you” but people aren’t engaging.  Is Scratch like putting ice cream on brussell sprouts?  Or worse, maybe it is brussell sprouts.  If that’s true, I’m not sure how to fix that.  Look at what’s going on with nutrition these days.  Eat your vegetables has been a mantra for years and yet, our obesity problem increases.

Teachers and companies are trying to make CS fun.  Gaming, graphics, the Kinect, robotics, e-textiles have all been put forward as ways to increase CS interest and enrollment.  Maybe it’s going to take a while for all that to have an effect.  I know my Upper Schoolers are pretty engaged, even as we get to more difficult concepts, so maybe it’s just 8th grade.  Maybe I need to engage them with something other than Scratch.

 

Enhanced by Zemanta

Goals

Picture I made for my goals article
Image via Wikipedia

Mr. Geeky started off our before-dinner conversation by asking what everyone’s goals were this year.  Everyone was a little goofy at first but then got more serious.  Our goals include focusing more on school/work before doing “fun” things, spending more time together, walking every day, and getting up on time.  We also set goals for each other, many of which were things we would set for ourselves.  It will be interesting to see if we stick to them.  But it definitely feels like we have some accountability.

This time last year, I was on the eve of a new job, and didn’t really know what to expect.  This year, I know most of the kids (except the new ones), and I have a good idea what things will be like on the first day.  As I told someone in a meeting, my goal for last year was to survive.  This year, I have specifics.  In general, I want to do a better job.  To that end, I’ve done a heck of a lot of preparation for my new class.  I’ve established a grading scheme for my middle school classes, and I’m planning to really assess the middle school curriculum after this year.  I talked to some people over the summer whose curriculum was similar to mine, but arranged slightly differently.  I think I’m going to do some rearranging next year, but it needs some thought first.

I also want to connect more to the girls in my homeroom.  I think this will be easier this year because I know all the kids.  It’s this part of the job that seems easiest on the surface, but is actually the most difficult.  Every kid is different; every group of kids has a different dynamic.  Figuring how to deal with all of that in a positive way is a real challenge.  But I find it to be an extraordinarily important part of my job.

Personally, I have lots of things I want to do this year–staying relatively healthy among them.  I’ve pledged to watch what I eat–mostly food, mostly green, less sugar.  And I’ll walk every day.  And I want to keep working on my programming skills–which are coming along quite nicely.  I spent a lot of the weekend working on a pet project that has pushed my skill limits.  But it’s been fun, and every day, I feel a little more confident about what I’m doing.

All in all, I think we’re ready for the year to begin. Bring it on!

Enhanced by Zemanta

Top Secret Rosies and Middle School

On Wednesday, I went to see the film, Top Secret Rosies and participate in a Q & A with the director afterwards. The film is well worth seeing for anyone interested in the beginnings of computing and especially for those interested in women in math and computing.   During the Q & A, someone asked about getting women/girls interested in CS and the director’s response was that they needed to get to girls sooner, preferably middle school.  A couple of people around me poked me.  I wanted to jump up and shout, “Yes!” 

I don’t know that many people that try to teach CS of any kind in middle school, and I, myself, balance teaching applications and skills students need for their other classes and basic computing skills.  I’m especially proud of my sixth graders who work with HTML and CSS and who learn a little about web protocols and how the Internet works.  While that’s not strictly code, it introduces them to the idea that humans tell computers what to do through special languages–and we even talk about binary. 

And we begin learning about the logic of programming in eighth grade through Scratch.  I’m also doing an after school session for 4th and 5th graders where they’ll be doing a little of everything that I do across the middle school.  I’m planting seeds that I hope will grow into my future CS students and our future programmers and problem solvers.

The film made pretty clear that women have a long history of being discouraged from pursing highly technical and mathematical careers.  To some extent, I still see the uphill battle I’m fighting as some girls still tell me how “uncool” is it to be good at computer science.  That makes me sad, and I hope that five years from now, I won’t be hearing that as often.