I’ve had this post open in my browser for days.  I read it, and then let it sit, and I just now went and read it again, and the comments.  I’ve written many, many times about how frustrating I find it that people think Computer Science = Teaching Excel or how to use the Internet.  Computer Science is a very, very broad field, and in fact, I would argue that it can encompass Digital Literacy.  The writer of the post I linked to is frustrated by the lack of distinction, too, which she argues takes away from the importance of Digital Literacy by focusing more on Computer Science.   So she’s on the other side of this issue from me:

It’s dismaying then, to see in a week where we are seeing a huge move forward in the promotion of technology and a fresh look at how ICT as a subject area is designed and implemented in schools, to see digital literacy being used as an interchangeable term for computer science skills.

Her focus is on the British Government’s announcement earlier in January to revamp the ICT curriculum so that its focus is more on computing and computer science, including coding.  That announcement left CS teachers here salivating as they’ve been fighting to get any kind of computing into the curriculum.  ICT or Educational Technology as it’s often called here in the states in “integrated” into the curriculum, sometimes fabulously, sometimes not.  In some schools, it’s specifically taught as a separate class, sometimes not so well.

Here’s my beef with her post and mostly the comments on the post.  Once again, the commenters imagine the lonely coder in a cubicle.  We don’t want that!  We want to teach collaboration via digital tools.  GitHub anyone?  Have they been to a startup?  Do they know about people using chat, skype, etc. to work together to roll out software?  Seriously?  And, it’s not all about coding.  There’s HCI–interface design.  Have you had to use poorly designed software lately?  Do you know that medical software needs to have certain interfaces to make it easier and faster for doctors and nurses?  The HCI person doesn’t usually do the coding, but instead knows how humans actually prefer to interact with computers.  Almost every field and profession could benefit from having its practitioners know how hardware and software works, to have had some experience uploading files to a server or tweaking some javascript or understanding the logic of an “if” statement.

Yes, I think being able to blog and tweet and build documents together online and skype is all good.  And if, as Josie says, it’s about critical thinking and lifelong learning, why is Computer Science not about those things, but Digital Literacy is?  There are people who think that things are done on computers because it would be too hard to do them some other way.  Facebook and Google are the way they are because someone programmed them to be that way, and if we don’t understand that, then we have a big problem.

Program or be Programmed, Rushkoff’s book, is an apt mantra for today’s world.  We don’t have enough Computer Scientists not just serving as programmers, but working in other fields.  And while I don’t believe that there’s such a thing as a Digital Native, and that we can just let the kids take care of their own digital literacy, I don’t think we can say that teaching DL is more or less important than teaching CS.  I’m watching us all latch onto devices that can’t be easily hacked.  Can you write a script for your iPad on your iPad?  We’re dependent on software developers to create tools just to allow us to view Flash on them.  We’re letting huge companies dictate what we can do with our tools.  We need more people who are, yes, digitally literate, but who can participate in the development of tools that allow us the freedom to work in the world in whatever way we need to.  That’s what attracted everyone to the Internet in the first place.  The Internet would not exist if we didn’t have coders.

/rant

Sorry, but I’ve grown increasingly frustrated by this focus on “21st Century Learning” and “Digital Literacy” without anyone recognizing that without Computer Scientists, we would not have those terms.  I’m watching fellow CS teachers being asked to teach digital literacy classes when they could be teaching Python or Java or helping a kid develop an app.  Many of us feel that we’re being shoved out by the call for “21st Century Learning”.  What’s more 21st Century than knowing how to code, or having a deep understanding of how computers work?  Or having people able to harness the power of computing to solve our biggest problems: cancer, global warming, famine, transportation.  That’s where we’re headed.  Those problems will be solved by people plus computing.

Teaching 8th grade has to be one of the hardest things ever.  I dare anyone who thinks they know what they’re doing in life to put themselves in front of a group of 8th graders (girls, even) and see if they can hold their own.  I’m betting most people won’t last 5 minutes.  I don’t claim to be good at it.  I struggle every day, but I’m determined to reach them.

I teach a required “technology” class in each grade level that meets once a week for 10 weeks.  In 6th and 7th grade, things are going swimmingly.  In 8th grade, things were not.  I teach Scratch in 8th grade.  My plan was to have the girls create 3 Scratch projects of increasing difficulty.  I usually end with having them create a video game.  That worked okay the first trimester, but this one, I got a lot more grumbling after we finished our first project.  I decided not to fight it.  I asked them what they wanted to do.  Tell me, I said, what technology/computing projects would you like to do?  Many wanted to do video projects.  I suggested social media of some kind.  And they jumped all over that.  So, now, I have two groups doing projects on Tumblr and two doing video projects.  I was a little unnerved about this.  What if they suck? What if they goof off?

Today, though, the two groups working on their Tumblr projects were doing awesome things.  One group was customizing their theme, creating tabs, even digging into some CSS.  At one point, one girl said, “This being techie thing is really hard.”  A girl responded, “Yeah, but it’s really fun.”  Girl one said, “You’re right it is.”  Later, someone in that group said something about how many details were involved in technology.  I just smiled.

The other group, which is really just one person, took a bunch of photos and opened them up in a photo editor and started manipulating them to make them more interesting and different.  She was playing with levels and saturation.  And that was pretty awesome.

Maybe they weren’t doing exactly what I’d had in mind at the beginning of the class, but I actually think they’re learning stuff, and for the most part, they’re doing it on their own.  They were Googling the answer to how to manipulate the html to make their tabs work.  They figured it out before I could even help them.  I think that’s pretty empowering.

I also got some feedback from my CS students this week, who are a great bunch of students, really fun to work with.  I wanted to know how they liked the class so far, what I could differently next year for the things already covered, and what they’d like to be sure to cover this year.  I also wanted to know how likely it would be for them to take another CS course in the future, whether with me or later in college.

Here are their thoughts, summarized:

1. They generally like the class and find it fun.  The projects we’re doing are varied and interesting to them.

2. They all hate it when the technology doesn’t work.  I would second that, and I’m working on fixing those issues.

3. They want to go on field trips.

4. They want the class to count for something toward graduation other than a basic elective.  Some suggested language. :)  I laughed because Mr. Geeky tried that same strategy in grad school in order to avoid taking another language.

5. On a scale of 10, with 10 being very likely, the likelihood of their taking another CS course ranges from 4-9.  I thought that was pretty good.  I can handle a moderate likelihood of taking a CS course.  Heck, after my own first course in college, I never wanted to see CS again. You can stop laughing now.

6. Lack of interest is certainly an issue, but lack of time to fit the course in is a bigger one.

7.  They all liked that the class was small (7 students).  I did too!  They emphasized that the small class size meant a lot of personal help, which is important to them.  If the class gets larger, and frankly, I hope it does, I’ll have to figure out a way to deal with that.  Pair programming or peer instruction.  Something.

It’s been fun to teach, for sure, and I hope to improve upon what I’m doing next year.

  • What kind of computer should I get for my (parent/kid/aunt/me)?
  • Should my kid learn to type? Do you teach typing in tech class?
  • Do you teach (name your basic office application)?

That’s about it.  Here’s what I wish people would ask:

  • What should I be doing to educate myself about the Internet?
  • What skills do you think kids should know to be prepare for jobs and college?
  • How young is too young to learn to program?
  • Is learning to program important?
  • Should my kid go online and if they do, what should they be doing (or not doing)?
  • My kid is interested in x technology field.  How should they prepare? What things can they do?

Just another parent night.  Not that the first few questions aren’t legitimate, but I wish that people would up the level of questions.  And it may be that a) they were all tired (it was late after all) or b) I covered the answers.  I do get some of those questions from parents of older kids, so maybe it’s just going to take them some time to realize they’re important.

I’ve spent the whole day at our first official robotics competition.  One of our teams ended up as part of the winning alliance of teams that won the tournament.  In a way, they got lucky.  Their robot was good, but was only capable of scoring so much and mostly could do defense.  The teams they were grouped with had excellent robots.  Serendipitously, the other two teams in their group were both all-girls’ teams, which I think was partly why they chose to work with our team.  So yay, girls!

All our teams did fairly well, and I think they’re inspired to continue on and do better next time.  I was really proud of all of them.  When it comes down to the wire, the girls really do put forth a great effort.  We’re all learning a lot!

In a recent Georgetown University report on employment, one of the key findings is that those who invent and create technology do far better unemployment-wise and salary-wise.  This is something I’ve been touting for a long time and which organizations like CSTA and NCWIT try to emphasize.  Sure, it’s good to know the ins and outs of a spreadsheet program or word processor, but if you want real employability and a better salary, create something that solves a problem, whether that be software or hardware, an app or an entirely new system for managing energy.

Someone posted this to Twitter as well, emphasizing that despite indications that certain degrees fare better, students shouldn’t pick just based on that.  I agree, but I am also glad that I added technology to my own mix, making me much more employable than a standard English major.  And I’m glad I was an English major, focused on writing and communication as it made me better at what I currently do.  Most of the time, I translate technical issues for non-technical people and explain in technical terms what non-technical people want.  I love that aspect of my work, which has been present as part of my work for 10-15 years.

So, sure, do what you love, but find a way to add experience to your portfolio that makes your love of poetry relevant.  I added technology both through a CS class, and then as my work, building web sites and helping others use the technology at hand, which 20 years ago was a challenge.  Not everyone could use a spreadsheet or word processor well.  Now, that’s not enough to stand out.

Enhanced by Zemanta

Yesterday in my intro to CS class, I introduced dictionaries.  My students started on some “simple” text-based game projects before the break and when I looked them over, I decided they could all use dictionaries even though that’s not something I had planned on teaching this year.  To explain dictionaries, I went back to lists.  The idea of both is that they serve as a place to store data and often, to pull data from.  Lists store all kinds of data, but there’s no way to associate the things in the list with each other.  For you non-CS people out there, a list looks like this:

["apples", "oranges", "pears"] – a list of fruits

[1, 5, "thirty", 25] – a list of numbers plus one number written as a string

A dictionary contains keys with associated values.  It looks like this:

{“apples”: 5, “oranges”: 2, “pears”: 3, “bananas”: 0} – a dictionary with keys as names of fruit and associated values, presumably the amount we have and yes, we have no bananas.

My students were writing games where they had questions (riddles or trivia) with associated answers.  I thought it a good idea to store those as a dictionary.  They had simply written out each question with a few following lines to check if the answer was right.

So, I reviewed lists, and especially iterating through a list, so that I could then show them how to iterate through a dictionary.  It was pretty interesting how difficult it was for them to remember how to iterate through a list.  You use a loop to repeat an action, which they’ve done before, but when they’d done it before, it was not in a context where you are using a loop to save time.  So, for example, we used a loop to repeat a series of movements on our robots.  Useful, but not the assembly-line kind of looping that one usually does with a list or dictionary.

I did find that once we went through that again, showing how to loop through a dictionary was pretty straightforward.  And though students had questions as they were implementing their dictionaries, they were less confused, I think, than they had been.  So I implemented a bit of my research-based teaching methods to review old material and connect it to new material.  And it seemed to work.  And, frankly, it was kind of fun.

Enhanced by Zemanta

I’m participating in a P2PU course that examines teaching programming to “free-range” students vs. teaching programming in more formal settings.  I’ve long been fascinated by teaching methods, and, of course, focused on teaching in my dissertation.  But back in those days, technology and programming were in support of another subject rather than a subject unto themselves.  However, some of the same methods apply across subjects.  We were asked to read a post by Greg Wilson that reflects on the use (or not) of research-based methods within an informal online context.  The source of the research-based methods is an IES report that gives the following recommendations:

  1. Space learning over time. Arrange to review key elements of course content after a delay of several weeks to several months after initial presentation. (moderate)
  2. Interleave worked example solutions with problem-solving exercises.Have students alternate between reading already worked solutions and trying to solve problems on their own. (moderate)
  3. Combine graphics with verbal descriptions. Combine graphical presentations (e.g., graphs, figures) that illustrate key processes and procedures with verbal descriptions. (moderate)
  4. Connect and integrate abstract and concrete representations of concepts. Connect and integrate abstract representations of a concept with concrete representations of the same concept. (moderate)
  5. Use quizzing to promote learning.
    1. Use pre-questions to introduce a new topic. (minimal)
    2. Use quizzes to re-expose students to key content (strong)
  6. Help students allocate study time efficiently.
    1. Teach students how to use delayed judgments of learning to identify content that needs further study. (minimal)
    2. Use tests and quizzes to identify content that needs to be learned (minimal)
  7. Ask deep explanatory questions. Use instructional prompts that encourage students to pose and answer “deep-level” questions on course material. These questions enable students to respond with explanations and supports deep understanding of taught material. (strong)

Greg finds that meeting these recommendations within the online context is fairly difficult, given that there’s no clear way to assess student knowledge.  Others, in comments, and elsewhere on the web, have suggested that tools exist to provide some of that capability, but whether that would work with “free-range” students is unknown.  When learning is voluntary, how to you coerce students into doing things that you know would help them learn but which might turn them off?  No idea.

So here’s my assessment of my own teaching and a little about my own learning, which I’ve done on my own for years.

1. Spread learning out over time.  I try to do this in my classes.  We basically are covering 3-4 main concepts, which were introduced within the first few weeks.  I keep returning to things I said 6 weeks ago, trying to remind students of the basics.  I could certainly do more assessments that aren’t the actual writing of programs.  As it is, they will be assessed on the midterm and though they’ve been using these concepts in their programs, it’s a different thing to have to define them or otherwise discuss them.  So, I think I do this informally, but perhaps students could benefit from a more formalized way of doing this.

Online/free-range students could easily be required to return to older material.  I’ve never experienced this myself, though I’ve done it myself, redoing exercises and “relearning” concepts that I’ve already “learned”.  It helps to re-do these things.

2. Interleave worked example solutions with problem-solving exercises.  I probably don’t do this enough.  There are examples in our book and we go over them and/or work through them together.  I also code up my own examples and show them in class.  I definitely think I need to do more with this as I think students would get a better sense of how to break down a problem.  At the very least, I think we should go through early worked examples more slowly.   I see some potential for students to present to the class, going through an example for the class.  This could be done in class or online via a blog or class forum.  I might try that.

As a student myself, I know I skim these too quickly and then when I’m trying to do similar problems, I don’t remember anything about how the problem was done.

3. Combine graphics with verbal descriptions.  Mostly, I put a program up on the projector and then I talk students through it, so I guess I’m doing something okay.  Other than programs, though, I don’t use many other graphics.  I guess I could use flow charts or something.

I’ve never gotten verbal descriptions as a student myself.  I’ve either learned from books or online and none of the online courses I’ve taken in programming have ever had lectures or audio.  It’s all been reading about concepts, looking at sample programs, and then writing them yourself.

4. Connect and integrate abstract and concrete representations of concepts.  Usually, we define a concept abstractly and then apply it.  According to the research, students learning in this way should be able to apply the concept in different contexts.  I’m not seeing that happen consistently.  So perhaps I need to think about different ways to present concepts.  Some CS Unplugged materials might help concretize some of what we’re doing.  Perhaps the issue is that we’re too abstract.  Definitely something to think about.

5. Use quizzing to promote learning.  As I said above, I use no quizzes.  I think it would be worthwhile to incorporate more.  We do reading for the class, and I think quizzing at that point would be good as well as quizzing later to reinforce concepts would also be good.

6. Help students allocate study time efficiently.  I’ve done this a little.  When I return projects, I go over the concepts that people struggled with, in the hopes that students will go back over those concepts.

7. Ask deep explanatory questions.  Coming from a humanities background, I think I do pretty well on this one.  In class, I often ask students to explain what they’re doing and/or I ask them how they might solve something.  For example, we were talking about how the cute little keepon robot works, and I got them thinking about how the very simple things they were doing right now could be expanded in that application.  It was an aha moment for them.

Greg suggests the possibility of crowdsourcing/peer assessment.  I’ve seen that work in my classes.  And I’ve contributed to that in an online context.  I think it’s about creating an environment where that’s encouraged.  In formal settings, you can require it.  Informally, I think it takes a moderator/teacher to model a peer-learning environment.

In general, keeping the research in mind as you plan and teach a course is probably a good idea, but I’m not sure I could incorporate all of these into my course.  And I’m curious about how to meet these recommendations in project-based learning, which is my primary way of teaching.

Yesterday I kicked off CS Ed Week by bringing in two hip Computer Science-y women to talk to our high school students.  Kimberly Blessing and Lindsay Lindstrom joined us to talk about why they like Computer Science and what they do.  They also showed off some resources for students who are interested in learning about CS, but who may not have the time to fit it into their schedule.  They pointed out Web Start Women and TechGirlz, just two of the many organizations out there hosting classes in the evenings and on the weekends to give women and girls the opportunity to learn programming or other IT skills in a friendly environment.

Today, my Upper School students visited a 1st grade science class to show off their projects.  They showed how their robots took pictures, went through mazes, and played tag.  They really seemed to like it.  Tomorrow, they’ll take the same show to the Middle School assembly.

It’s a real challenge to get girls interested in CS.  We have a lot of smart girls in our school, and a lot are interested in entering fields related to science and math, but CS is not on their radar.  These kinds of things keep it on their radar.  I also am trying to put CS in their sights early.  Today I had my first session on computing with 1st and 2nd graders.  Eventually we’ll build robots.  And then maybe they’ll join the robotics club in middle school and then take CS in high school.  I hope that by keeping it on the radar throughout their years here, we’ll draw in a few more.  And I don’t necessarily want to create a ton of new programmers, but I do want everyone to know a little something about programming.  I’m encouraged so far, but this is a long-term investment that will take a while to bear fruit.

Today, as I was moving around the room during robotics club, checking in with each team, I had a moment where I realized I really liked what was happening.  I still have reservations about robotics as a pathway to Computer Science, but there is so much the kids have gotten out of this.  They no longer call screws and nuts “thingys”.  They’re screws and nuts–and the tools to work with them are 3/64 or 5/32 allen wrenches not “thing-a-ma-bobs”.  Lefty-loosy, righty tighty is no longer needed.  We talk about L-pieces and C-channels.   They sound like they know what they’re doing.  Each team member (mostly) has a job to do and does it.  They’re working together fairly well.  They’re getting a lot out of this.

And just before that, I had a study hall where students chatted with me about their experience visiting upper school classes that day and how they’re looking forward to upper school.  Two girls were chatting with each other about books and one said to the other, “I didn’t know you talked so much.  I’ve never really heard you talk.”  I smiled to myself, because I knew she talked and I knew she was interesting to talk to, and I was happy to see her classmates recognizing that.

And in homeroom, we talked about upper school, the upcoming holidays and speeches that they’re preparing.  I really enjoyed hanging out with them.

And that’s what makes the long hours worth it.  Because you hope you’re making a difference in these young people’s lives.  And really, they’re making a difference in yours.

This weekend, I participated in a robotics competition.  Like last year, I have a handful of high school girls (5) working with the boys high school down the street.  There’s one returning student, two students who have some experience from previous types of competitions and two who are new to the whole thing.  I also brought some middle schoolers, who ended up helping by resetting the field between matches.  There were 5 of them.  If you count my middle schoolers, there were 12 girls total at the competition doing something besides just watching.  That’s out of maybe 75-100 total people.  Not a good percentage.

The show is run by some well-meaning folks–a couple of middle aged engineers (both men), several college students (all men)–but I’m not sure they appreciate how few women there really are, and why there might not be more.  The organizers had a hard time accepting me as someone who could actually help.  They needed extra hands to get teams to the fields on time, but one guy said while I’m standing right next to him, “Does she know how?”  Wouldn’t ask me directly, and didn’t think I could do a pretty simple task.  Kind of annoying.

Mr. Geeky came for a while and mentioned that he thought the girls weren’t being allowed to participate very much by the boys on the team.  I didn’t see any of this because I was busy doing the task that the guys thought I couldn’t do.  I plan on talking to them about it on Monday and see if they felt left out.  He thinks I should boycott the whole thing or thinks I should encourage rules that require gender and racial diversity on teams.  I think boycotting deprives interested girls a much-needed opportunity and they might just shrug us off.  But I also am not above thinking that we should at least be having more thoughtful conversations about this issue within this particular organization.

I would also love to see some more research on whether robotics competitions are the best pathway for getting girls interested in computer science.  There are lots of good things about this whole thing, but it takes a lot of energy (and money), energy that might be better spent doing other things that increase girls’ participation in CS.