CMK Day 3: From exhaustion to success

I woke up way too early, thinking about my project. I basically finished but am working to make it faster and better. I also conceived a new project and I might work on that today as well.

I like my project but, as I said yesterday during reflection, I sort of feel like I didn’t push myself far enough. Another CS teacher said the same thing. What do you do when you are at least moderately familiar with everything at a conference. If I’d wanted to truly ho beyond my comfort zone, I would have done more with electronics or woodworking. But my goal wasn’t to go outside my comfort zone. It was to work with data and art.

And when people have seen what I’ve done, they’re impressed. Somebody just told me I could make a whole class out of my project. And I think that’s exactly what I’m going to do!

Here’s the video of my project:

Weather Data as Art from CMK 2014 on Vimeo.

CMK Day 2: Hitting my stride

Reflection Time in the Library
Reflection Time in the Library (Photo credit: lorda)

Yesterday, I made significant progress.  I changed rooms and basically coded for about 6 hours.  I have a working program that I want to add some things to today.  In fact, I woke up way too early this morning, thinking about how I was going to improve my program.

I walked around for a bit yesterday afternoon to see some other projects and there are some amazing things out there.  Lots of people are working together, which makes me feel slightly bad that I didn’t do that.   I really do think that often you can accomplish more as a group, sharing expertise and the workload.  But I like what I’ve done, and I hope to push myself a little bit further today.  I hope to perfect what I have in Python and move to Processing/Arduino today.  What I’d like to do, perhaps this afternoon, is take some chunk of data and output it to a motor that moves something.  Or maybe use some lights.  And if I don’t get there today, I’m inspired to work more this summer, which is a good thing, in my mind.

The room I changed to was filled with people focused on programming, primarily in Scratch.  They were all novices and everyone was pretty much head down, working hard to figure out what they were doing.  At the end of the day, when we were reflecting, one woman broke down in tears as she explained what she’d accomplished during the day.  Basically, she felt smart.  It was really touching.  What talked about what I had gotten done, Cynthia Solomon, one of the creators of Logo, called me a real computer scientist.  That made me a little giddy.  It was about 4 years ago that I was like the others in my room, just beginning to learn.  I may have been a little ahead of them from a technical standpoint, since I’d done some programming before, but from a confidence standpoint, I was right there with them.  I didn’t think I could create something worthwhile.  I was afraid of looking stupid.  I got stuck a lot.

A lot of the people in the room talked about thinking they were tech savvy until they got to CMK.  In many ways, that’s a good thing.  It’s good to know what you don’t know and to push yourself to go to the next level, but it can instill fear.  I remember going off to college, having graduated in the top 25 in my class and being surrounded by 1000 other students who also graduated in the top of their class.  I felt a little like I had to prove myself.  Gaining confidence, in my mind, is about 2 things: one, practice and two, overcoming fear.  Learning a skill takes practice and as you practice, you become better, and you start to overcome fear.  And it’s a constant battle.  There’s no point at which you feel fully confident, at least not in my experience.  Opportunities like CMK help get you over the fear and give you the space to practice.  And we should do more to give ourselves the time and space to get that practice.

CMK 14 Day One: Finding my way

Other Nametag Table
Other Nametag Table (Photo credit: lorda)

It’s been a whirlwind 24 hours.   Yesterday was a big day.  We began with Gary Stager talking about what CMK is about, finding out who was in the room (mostly private schools, weirdly), and giving us a preview of what was about to come.  We then shared what we wanted to make.  I came with a goal, a loose goal but a goal, to create art out of data.  I was kind of thinking physical art, an installation or something.  And, as things shook out, there were others interested in this idea.  So we all staked out a table near the Arduino stuff.  I was ready to just kind of dive in, because that’s what I do.  But 6 or so of the people at the table had never used an Arduino before or coded, which is, you know, why they’re here.  So they spent a chunk of time learning about the Arduino and well, I got bored.

So I went to lunch with a fellow traveler feeling the same frustration.  We had some great tacos and when we got back, we decided to do our own thing.  And, I feel guilty about this, because I think I’m going to get the “does not play well with others” comment on my report card.  But Gary did tell us to be selfish with our time, and teaching others Arduino is what I do in my day job.  I’m here to learn something new.

So, here is where I am now.  I’m going to create, to start with, a graphical representation of some kind of data.  I might use Processing.  I’m going to start with Python because that’s what I’m familiar with but because Processing has some better graphics options, I’m hoping to shift to that.  On the data end, I’m starting with weather data, but in general, I’m just exploring some APIs for pulling data off the web, something I have been wanting to explore for quite a while.  I feel like I kind of spun my wheels a bit yesterday and now I feel behind.  I’m planning to kind of isolate myself a little this morning, just until I get some things working.  I’m feeling the need to make significant progress.

On the social front, I’ve thoroughly enjoyed myself.  I’ve met some very interesting people and connected with many that I follow on Twitter or whose blogs I read, and vice versa.  So many people have said, I read your blog.  Which is totally cool, and I’m so very flattered by that.  It’s great to have some like-minded, but diverse, people to share ideas with, to hear what they’re doing at their school.  I’m looking forward to more of that today.  All in all, it was a good first day with some ups and downs, mostly up, and I expect the same today.

Off to CMK

Learning Buddha
Learning Buddha (Photo credit: lorda)

Today I hit the road for Constructing Modern Knowledge.  I’m looking forward to meeting a bunch of people and hopefully doing something cool.  I’ve known about this conference for a while and I’m looking forward to being inspired by it.  That’s my main reason for going to conferences these days.  Yes, I expect to learn something, but often, what’s more important is just getting inspired to move forward, to try something new.  Not that I think that you can’t try new things without going to something like CMK.  There’s the Internet after all, but I think the hands-on aspect is important.  It’s clear that many of us think that’s important for our students as we build programs and assignments that focus on hands on work and that force students to think in new ways and build new skills.  I think teachers should do that, too.  We have to push ourselves out of our comfort zone if we expect our students to do the same.

I also never expect to just learn something by having someone tell me something new.  I expect to work at it, to put my own effort in.  You get out of any learning experience whatever you put into it.  That’s something I’d like to instill in my students as well.  I try to model it for them.  I try to set up my classes in ways that encourage effort (no lecturing for me), but I hope that they really internalize that lesson.  I didn’t really learn that lesson until after college, but it must have been in me just a little before that.  I remember in middle school sending away for animals to dissect on my own.  And I created restaurants in my basement, took apart and put back together my bike., and made art in various ways.  Around high school, I lost that internal desire to learn on my own.  Once I regained it, it hasn’t gone away and I look forward to the opportunity to exercise that muscle over the next few days.

On not knowing

flowersI was going to say, “On being stupid” but it’s never about being stupid.  That would be a fixed mindset, and I don’t have one of those.  Thursday afternoon, I started working on a circuit project–without absolutely no planning cuz that’s how I roll.  It failed.  I tried some things. Still nothing.  So I hit up Twitter, because that’s what I do when stuff doesn’t work and I’ve already Googled the crap out of it.  Andrew responded and attempted to help me.  I had some idea what my problem was, but I knew he was better at electronics than I am.  He can even read a circuit diagram.  And then he blogged the whole episode.  Because that’s what we #makered people do.

This is what I ask my students to do all the time.  Come up with a project.  Neither of us may know what we’re doing, but . . . go!  And then sometimes things fail.  Because things are messy.  I struggle all the time with presenting neat and clean lessons vs. inquiry/project-based processes.  Do this and then this will happen vs. just try something along these parameters.  There are multiple problems with the latter approach, but they’re all manageable, I think.  Andrew questions in his blog post whether we need to provide an underlying foundation of electronics before tackling my crazy light-up origami flower garden.  I think he comes down on the side of “it doesn’t matter because you’ll do something outside the norm anyway.”  What Andrew addresses and what I think #makered is at its best is going beyond the text and the tutorial.

What’s problematic is that students sometimes struggle with going beyond the text, especially if they’ve never experienced the text in the first place.  To me, what we are aiming for is getting people waaaaay beyond their comfort zone, of going from having no knowledge to seeking knowledge and doing so to achieve some goal.  So if you’re going to do electronics work, there is some fundamental stuff people need to know. Positive, negative, what makes a circuit and yeah, voltage, etc.  But what you really learn from is when you wire up 10 LEDs and realize, oh, yeah, those need more power than a 3V watch battery.  And then you go about fixing the problem.

No, I still haven’t gotten my problem fixed (haven’t had time), but I’ve learned something in a visceral way.  When I figure this out, I will remember that. I will pass that knowledge on, but many of my students will need to learn it the same way I did–by failing–and then succeeding.

What I’m Teaching when I’m Teaching “Programming”

The Internet is full of discussion about teaching Computer Science.  It’s kind of weird.  There is lots of criticism being lobbied at groups like Code.org, among others, that fall into roughly two categories: a) we shouldn’t teach this at all, you’re crazy and b) we should teach something like this, but not like this, aka Ur Doing It Wrong.  The first comes from, mostly, non-CS educators, occasionally from those in the tech industry.  The second comes from primarily CS Educators.  Mark Guzdial has a good assessment of the various arguments, and the comments are good as well.

So, the CS Educators say, well, we’re teaching problem solving through coding.  Or we’re teaching logical thinking.  Etc. Etc.  They want to point out that CS is more than just coding.  And yeah, it is.  But, as Mark points out, programming itself does not teach these things.  I’m going to argue, though, that talking about coding/programming is an easier discussion to have with average people.  As Mark says, the jobs argument may not be the best one, but it’s the one that makes sense to most people, especially in a down economy.  I would argue, as Mark and others do, that understanding computing is important to being a citizen.  I’ll never forget watching a roundtable conversation moderated by William F. Buckley with some Congresspeople and public intellectuals all discussing the impact of technology on various laws and work, etc.  They had no tech people, and their lack of knowledge was embarrassing.  This was 1990, maybe, and they mispronounced basic things.  They didn’t know what an operating system was.  And some of those people are still serving in Congress and still don’t know much more.

So, if programming doesn’t teach the big things we say it does and yet, we think it’s important, what are we doing when we teach CS (or programming?).  When I teach, my first goal is never about teaching the subject that’s listed on the syllabus.  It’s about getting kids to learn how to learn.  It is about solving problems, but I’m not getting at it through programming, but in the way I structure my class.  Mark, in fact, points to a paper along these lines, about the importance of the class ethos.  I have honestly done this for most of my teaching life.  I have always tried to decenter my classroom so that the students learn to trust themselves and not totally rely on me.  Yes, I’m often more of an expert than they are and yes, I sometimes directly tell them things, but mostly, I’m trying to guide them through the process of creating something (a poem, a paper, a program, a web site) using me as one of many possible sources of information and feedback.  And I hope, through reflection and feedback of various kinds, they come to understand deeper concepts related to what they’re creating.

I think one of my students says this best:

I really like the project oriented nature of this class. I like that we learn a lot from our own
mistakes. Most classes teach you information directly, but in Computer Science, we learn a lot
more through trying out different ideas. While we may not get as far in our projects this way, I
think learning to find your own solution to a problem is a really good thing to know. Computer
Science is more creative than most classes because there are multiple ways to reach a goal.
Sometimes the way that you figure out isn’t the most effective way of doing something, but if it
works, having figured it out on your own is very rewarding.

However, creating this ethos is ridiculously hard.  The dynamic of a classroom can change daily.  The kids bring with them their own issues.  And the younger the kids, the harder it is to get them to tap into some kind of intrinsic motivation.  I seriously struggle with this every day.   But it’s also what makes my job so. much. fun.  That is a big problem to solve and I get to try to solve it every day.

But that’s not a fair answer, is it?  I skirted the issue with an answer that should be true of everyone’s classroom: the real goal should be about teaching kids to learn for themselves, to continue to learn, to know how to learn something new on their own.

But what about programming?  What does it teach and why teach it?  Programming is hard and frustrating for many people.  One semi-colon out of place and nothing works.  Sometimes you do something and what you think should happen just doesn’t.  And you don’t know why.  What programming (or any difficult subject) can teach is persistence, of sticking with something until you understand it or figure it out.  Grit, to use a popular term.

Okay, but that’s still abstract.  I have been teaching a form of programming or computation even before I was an official Computer Science teacher.  Just to communicate on the web, one used to have to know HTML and CSS, maybe some JavaScript and PHP, so that’s what I taught my students in my English classes (I taught my fellow teachers, too).  I felt it was important for students who were going to be communicating in the era of the web to really know how it works and to be able to master that medium as well as the word processor rather than leave it to the “techies.”  As tools got easier to use, I still insisted on a deeper knowledge, so learned how the Internet is connected, how pinging works, what the infrastructure really looks like.  And to my web development students, I continued to teach the underlying code, but I didn’t hide the code from my “regular” students.

The thing that sits on your desk or in your pocket shouldn’t be a mystery to you.  You should know what 1’s and 0’s are and why they’re there.  You should control it, not the other way around, and if you need to write code to do that, so much the better.  But even if you don’t, you should know that you *could* write code to control it.  To use a current issue, people should know what metadata is and why, if the NSA collects it, that might be a bad thing and more revealing than you think.  What does machine readable mean, anyway?  Programming doesn’t necessarily teach you these things, but it provides a window into some of these things in a better way than some other methods.

It’s funny, the only reason we’re having to answer this question at all is because CS isn’t in the curriculum right now.  No one asks why we teach foreign languages, math, or science (very often, anyway).  But I think all of those would be equally hard to argue for beyond some basic level of understanding.  Some would make the same arguments that CS is making now: there are jobs in the field, good just to expose kids to, and it’s more about learning a process.  If those are good arguments to keep a discipline, why can’t they be good ones for including one?

Counting Computer Science

Day 31: My laptop
Day 31: My laptop (Photo credit: lorda)

Nearly every day, some article crosses my radar about getting CS into schools.  There are articles touting that it should count as a foreign language, that it should be math or science, or that it should be its own thing.  Some articles suggest its career/job training and not a discipline at all.  And those in the field will jump in and say that everything they learned in their CS program is useless, so don’t bother, just learn on the job.

It’s very frustrating to be in a field where a) most people don’t really understand it and b) most people think they do because they use it every day.  So you get the people who think that if a student can navigate Facebook, they’re all good, no need to pursue the field further.  And you get the people who want a specific language to be taught because the people they supervise use that language to code in.  And you get the people concerned about keyboarding.  Or you get the robotics enthusiasts or the app enthusiasts or the web enthusiasts.  And if you could get all these people in a room to talk to each other, they might start to realize that a) they don’t know everything and b) maybe the field is bigger than you think.

One encapsulation of these struggles appeared in a recent Science Friday that left me frustrated, to say the least.  I’m a Science Friday fan, but this is the first one where I’ve been an expert listening and I was frustrated, not by Hadi Partovi and Jane Margolis, but by Ira Flatow’s questions, which seemed so uninformed.  About the only CS “myth” he didn’t pull out was the one about all the jobs being shipped overseas.  You can almost hear Partovi and Margolis’ frustration at having to explain things that should have been evident from just reading either of their websites or any of the many articles that came out during CS Ed Week.   The icing on the cake was when Flatow suggested “computer clubs”.  I wonder if the two guests were thinking, “Hello?! We have those.  The point is to make CS *not* just a club.  That’s why we’re on your show.”  And they did sort of take him to task, suggesting as I have before, that the people who join those clubs are the people who are already interested while the goal of CSTA and Code.org and Exploring Computer Science is to attract students who don’t know they’re interested.

Some legislators are on board with the spirit of this idea that everyone should have some exposure to CS, but after that, it goes a little awry.  Some (Kentucky, New Mexico, and the US House) want to make it a foreign language requirement.  Their hearts are in the right place.  They recognize that students have little room in their schedules for anything else and so, if you make CS a language requirement, they might be able to squeeze it in.  The problem is, it’s not a language.  The French I learned through high school and college is still the same French they speak today.  And the Latin I learned in grad school hasn’t changed.  And both continue to help me with vocabulary and sometimes, communication with others.  But the BASIC I learned in high school, no one codes in that anymore.  Ira Flatow mentions FORTRAN.  No one uses that anymore either.  CS is not about the programming language you use.  It’s about solving problems.  It’s about figuring out a puzzle, using the tools available to you.  Since I took CS, I’ve learned at least a little of 7 different “languages” and used countless tools to solve problems.

Math and Science teach foundational ideas that can be used in many disciplines.  CS is the same.  There are foundational ideas in CS that can be used anywhere, something Partovi and Margolis were trying to get across in their interview.  CSTA, Code.org, and other organizations argue it should count as a Math or Science.  Better yet, of course, it should count as its own thing, and it should be required for all HS students in addition to foreign language, Math, and Science, not instead of.   Logic, one of the underpinnings of Computer Science, was one of the original disciplines.  We spun that out into Philosophy and Math instead of CS.  Maybe we should go back to our roots.

Enhanced by Zemanta

Educon: The Takeaway

Someone asked me on Day One why people come to this conference.  I can’t answer for everyone, but I know for me I come to be inspired, to have the opportunity to talk to some smart people about issues related to teaching and learning and leading in education.  I feel lucky to have some opportunity for that at my own school.  I have many, many colleagues who inspire me daily and who regularly talk about teaching and learning in really intelligent and thoughtful ways.  It’s part of the culture here to do so.  But that’s not true for everyone.  I talked to many people who feel isolated at their schools, who are struggling to do interesting things in the world of standards and tests, and who face a fight every day just to teach in a way that they know would benefit their students.  I actually learn a lot from them.  Sometimes constraints lead to real creativity.  Think about how beautiful sonnets are.

Yes, the general feel of the conference leaves one warm and fuzzy, but there are also “real” takeaways.  Some very concrete lessons I got:

  • Why not have a class for both faculty and students on a topic, led by someone from outside the institution.
  • Have the confidence to pursue what seems like a crazy idea.  Don’t say no to yourself or impose the “buts” onto your idea before someone else does.  Because they might not.
  • Document cameras are really useful
  • We really do need more women in Computer Science, so says Kin Lane, who’s right in the thick of Silicon Valley culture.
  • Being out of your comfort zone is not a bad thing.  It’s how we learn.  Watch an infant/toddler sometime.
  • There’s no one right way to do anything.  Keep asking “What if . . .” to come up with new ways of doing things.

I’ve seen some Tweets this morning about the difficulty of going back to work after Educon.  How do you explain this to people?  I think you just have to pick a couple of things and just do them.  It might be in your classroom.  It might be in the way you approach a meeting.  It might just be sharing something with one of your colleagues.  It might just be renewing in yourself your belief in what you do.  That’s what gives me courage to try crazy things, to say crazy things, and to argue on behalf of my students.  Educon reminds me every year that what teachers do is important and it’s worth doing.

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

Getting in my own way

I am notorious for undermining myself.  I second guess.  I compromise too soon.  I don’t take the risk I should.  I hold my idea in because it might freak someone out.  Or piss someone off.  Or might not be right.* One reason I even have this blog is so I can throw some stuff out there before I take it elsewhere.  Which is funny, because this is public and some of my students and colleagues read this, but still, I feel freer to think through ideas here for some reason.

Anyway, there are many days where I feel like I suck at what I do, but I know that’s not true.  I know that I am often good at what I do, that I’m sometimes even great at what I do.  And I know that I’m always trying to get better, trying to learn more.  Part of why I often feel bad at my job is that I never stay in the same place.  I’m always looking for new material, new ways to do things, and I am willing to try something, even when I don’t know exactly what I’m doing.

I need to remember that, and I need to embrace risk more and put my ideas out there more and remember why I love education so much, and love CS so much.  Every day, it feels new and different.  And that is scary.  It’s like the ride up to the top of an incline on a roller coaster, knowing the super fast dip is coming.  Your stomach will reel.  Your heart will pound.  But it will be exhilarating.

 

 

*The very things I don’t want my students to do.