This weeks tabs.  I’m sort of amazed that there are only one or two duplicates.  That’s a little scary.

Hello, I’m a computer science teacher.  Every day, I read another article about another venture, online or face-to-face, that seeks to teach kids to code.  We’ll make it fun, they say.  I appreciate the effort.  If anything, you’ve at least made learning to code look like “the thing to do.”  You’re like the iPhones of coding.  No one wanted a smartphone until the iPhone came out.  That’s all good.  That makes what I do a little easier to explain.  But if you really want kids to learn to code (and I’m uncertain that that’s you’re real goal), then don’t make yet another tool or start yet another class that’s separate from your nearby school.  If you make a tool, share it for free with your school district.1  Contact a science or math teacher and help them learn to use the tool.  Host a workshop for local teachers.  Hire those teachers for your summer camps. They will share with you how learning actually works so that you can make your tool better.  That’s been the model MIT’s Scratch has used.  It works pretty well.

Better yet, if you really want kids to learn to code, provide money to teachers and schools for training and buying equipment (like actual computers to code on) through a grant program.  Or work on policy at the local, state and national level to incorporate Computer Science into the curriculum.  There are organizations like CSTA that are doing this already.  Maybe you can help them.  Washington State recently decided that AP CS counts as math or science for graduation requirements.  That will get CS and learning to code into the curriculum.

See, all this stuff you’re doing does a lot for publicity, but I’m afraid you’re working against actual change.  And you’re working against (in some cases) diversifying the field.2  Who has the time and luxury to go to summer camp? To work on their on with an online program? People who have resources and time. People who are likely already thinking about computer science as a field.  Often not women.  Often not students of color.  So, again, I appreciate the effort, but I think it’s time you did this a little more thoughtfully and maybe talked to some educators and schools.  Get out of your Silicon Valley bubble for a bit and deal with some of the realities facing teachers and students.  Because we do want to teach kids to code and we do want your help, but you need to work with us.

Thanks,

Geeky Mom, teacher
1I’m starting to see tools that aren’t free, not to schools, certainly not to individuals.
2The exceptions are things like Girls Who Code and Black Girls Who Code as well as CodeNow, which target underrepresented groups.

I’ve been wrestling with a student project for the last couple of days.  She’s doing part of it and I’m helping.  We’re using a tool that I like, but that I don’t know that much about and for which there isn’t much documentation.  There are lots of moving parts.  There’s python, there’s a database, there’s a web framework, and then there’s just HTML.  I started in this computing schtick with databases, so I understand the structure.  I know MySQL syntax and some SQL, but I used PHP to interface with those languages.  Now I’m using a python web framework.

Basically, I’ve been writing a line of code, running the code, and reading error messages.  I was excited when I got new error messages.  I came close, very close, to giving up.  But I finally turned to a forum, found some better examples, changed the function I was using and voila! Success!

But I completely understand my students’ frustration sometimes.  I found myself saying, “What do you mean, that variable is undefined? It’s defined right there!”  Or more often, I was trying to figure out what some method returned: a list? a dictionary? an object? all of the above?  I have developed a pretty good process for reading errors and figuring out where things are going wrong.  My students sometimes get frustrated if they get more than one error message in a row.  I don’t blame them.  We discussed the image below the other day, because it always seems to be true.

one_codeThis also happens when you take out one line of code.  I like the puzzles though.  I can get past the frustration when I have a clear goal in mind, and know what I want the end product to look like.  My students seem to be that way as well.  With really complex projects, though, it’s sometimes hard to see the end goal.  It’s even hard sometimes for them to see the pieces.  This project that I’m working on I broke into pieces.  My student and I are working on different pieces.  And she’s doing a lot of the conceptualizing.  We’re hoping to have at least two or three working pieces before the end is here.  Or at least have a clearer vision of the final goal.  That’s a major accomplishment.  I just hope they can see it as one.

It’s hit me in a major way that I need some free time.  While next week will be a bit of a break with exams beginning, I still have so much to do to finish out the year.  As always the kids’ birthdays being June 5 and June 7 will add to the craziness.  And we’ll triple that with Geeky Boy’s graduation and family coming in to celebrate.  June 8th, everyone–my parents and their spouses and Mr. Geeky’s parents–will descend on us and be with us for 3 days.  I feel like I’m not ready and that I can’t get ready until I get through the school stuff.

My CS II students finish up their “real-world” projects this week, only I don’t think any of them will be completely finished.  We were all a bit too ambitious in what we took on.  What I’m encouraging them to do is reflect on what they accomplished, what they learned, and what they could have done differently to reach a better conclusion.  I’m planning to survey them on whether they’d do something like this again, or if they would like to do something different.  Live and learn.

My CS I students have finished their projects mostly, and they’ve turned out well.  That class will wrap up nicely.

In Middle School, I have the usual stragglers, students who’ve failed to turn in an assignment or two along the way.  This is my last week with them, so I have to track them down.

For all of the above, there will be the inevitable grading and commenting.  That will take a while.

Looking ahead to summer, I have an ambitious one planned, one that includes learning new things and making changes to my curriculum.  I’ve already been thinking about a schedule for that that allows me to get things done and have some down time.  I do have vacations planned, but the summer seems far too short to get everything done.  I have high hopes and high expectations.  But right now, I look forward to the weekend (already!).

I’m not sure I’d call myself an expert in anything.  I’ve switched jobs a lot.  Technology has changed a lot.  I am still learning things, and I still make mistakes.  But, I’ve been an educator now for over 20 years.  I pay attention to research, both general educational research, and research specific to my field.  So I know a thing or two.  Still, I’m uncomfortable putting myself out there and saying, this is what I think and I think this because I’ve got experience and knowledge.  In other words, you should listen to me.  It feels somehow aggressive, and what if I’m wrong.

But I’m starting to think that now is the time to be an expert. I have to be okay with being wrong, but in order to be wrong, I have to have an opinion.  My field is sort of notorious for promoting “the right way” to do something.  In Computer Science, everyone thinks they know just the right language to start with or just the right approach. Often they’re evidence for this is, “It’s what I use or how I was taught.”  Not good enough.  I’m perfectly okay with saying, I use Python because it’s what I know.  I wouldn’t use it if it weren’t a good language to teach CS in, but I’ve read the research that says it’s a good language to start with.

I’ve also read the research that says that abstraction is a difficult concept for most high school students, so teaching certain CS concepts that require abstraction is a challenge.  I tread carefully there.

Many HS CS teachers I run into know this as well.  They’re very thoughtful about their approaches to teaching, and they have the same challenge I do.  They’re trying to teach CS in an “appropriate” way, according to good educational research, but they’re also trying to attract students, especially women and minorities, to their classes.  So the classes have to be educationally sound *and* fun *and* sensitive to gender and racial issues.

Many college professors, sadly, are not so thoughtful.  They’re not required to take the educational courses that HS (and Middle and elementary) teachers do.  They don’t know constructivism or who John Dewey even is.  Some know Papert.  Most think educational research is not important.  And college professors, I’m sorry to say, are often also the ones most loudly touting language x or language y or book x (often theirs) or book y (a colleague’s).  They are experts in their field, though.  And they want us listen to them.

But this is field specific, and it’s not the only thing I’ve been thinking about when it comes to expertise.  It’s also a little about leadership.  Being an expert can sometimes mean being a leader, and that means doing something with your expertise.  And I think that’s what I find particularly challenging.  What do you do? Write a book? Maintain a blog? Start a nonprofit? Move up the ladder at your institution so you can have influence? It’s funny because I tend to be, as my college roommate used to say, “all hat and no cattle.” That is, a cowboy who wears a big hat, but has no actual cows.  All talk, no action.  That’s not entirely true, but it is a little bit.  And I think it’s fear that holds me back.  My fear is typical impostor syndrome stuff, fear that I’m wrong, fear of conflict, etc.  And worry.  When I was writing my dissertation, everything else fell by the wayside except the essentials.  And what went first, mostly, was my family, because they’re awesome and supportive and I sort of took it for granted. The outcome of that was not good, for me or my family.  And I worry about doing that again.  If I took on a book project or started something big, even taking on something else at work, I’d have to put them on the back burner again.  And I think I can’t do that.

It’s not like there’s any particular opportunity I’m faced with, but I see a lot of little ones.  I see people not stepping up to do things, and so I do.  Because I care.  And I feel like I have something to contribute.  I understand better now what those contributions are, but I also understand better where I have to draw the line.  I think I’m doing pretty well.  I’m grateful for summer when the schedule allows me some flexibility: longer amounts of time for contributing and longer amounts of time with family.  Such a great benefit!

 

Another Friday, another collection of random links.  I think, though I’m not sure, that they’re all different from last week’s.

Quite a list, and aside from productivity things like Drive, Mail, and Calendar, mostly different.  I think I’m scaring myself.

Education is not the piling on of learning, information, data, facts, skills, or abilities – that’s training or instruction – but is rather making visible what is hidden as a seed.

Thomas Moore

Dandelion seeds (achenes) can be carried long ...A former boss once said to me that I planted seeds.  The implication, I think, was mostly positive, indicating that I have a lot of great ideas.  But it was also a little bit about my lack of seeing those seeds to their full growth.  If anyone has seen my yard and/or indoor plants, you might understand that this is a bad metaphor for me.  Most of my plants are sad looking things, barely surviving their poor caretaking.

But it’s true that most of what I do is give out ideas, get people started and then leave them to finish things up, to grow in whatever way they want.  With my students, I’m providing a lot more support.  I continue to give them information, push them, encourage them, etc.  But still, there’s no way of knowing if what I’ve said or done will effect them five years from now.  Having contacts at my former job, I know some of the things I floated as ideas as early as 10 years ago are now coming to fruition.  Some things I started are still flourishing, which is heartening to see.  I can only hope that some of my current students have learned something in my class that helps them or guides them ten years from now.

At my current job, people often credit me for giving them the idea to do something, which is also flattering.  Many of my ideas come from Twitter or blogs I read. Because I’m in a small school, I know what my colleagues are doing and what they might need.  I just happen to be at the right place at the right time (online). For my own teaching, though, I’m a bit on my own.  Not that many CS teachers tweet or blog. Which I think is weird. I’m grateful for those that do.  I love sharing ideas with them and stealing the good ones I see (:)).  I think, though, of my CS teaching as planting seeds, primarily because there’s so much to Computer Science, I’m constantly aware of how much I’m *not* teaching.  There’s just no way to cover it all in high school.

I am lucky, however, in that I get to have students over the course of several years and often, I get to have them in multiple contexts, class, clubs, in other social situations.  I really get to know them as people.  That allows me to cultivate the seeds I’ve planted more thoroughly, and better.  And that’s what I think about most often.  I want to plant more seeds earlier.  I want to nurture them more.  And my challenge right now is, how.

 

Enhanced by Zemanta

Today I worked on something kind of hard.  And it’s something I’m asking one of my students to do.  I had to connect three different things together: HTML, a database, and Python.  I was using a tool, PythonAnywhere, that I had introduced to my students earlier.  I, myself, have used PHP, HTML, and MySQL (database), so conceptually, I knew how to make this work, but practically, I wasn’t sure.  My students don’t even have the concept part down, which makes it even harder for them, so I wanted to have step by step instructions to get them started.

So, I took it one step at a time, myself.  I did the easy part first, creating the HTML form to take input.  Then, I went to my Python file and wrote psuedocode for each function I needed: one to add data, one to delete, one to update, one to show/sort.  Then I made my database directly in the shell.  I wrote a single function, connected it to web form, and then tried it out.  This is actually the opposite order in which I told my student to work–sort of.  I had her my the database first.  Then, I had her make a form, then the Python.

The hardest part of all of this was explaining conceptually how all of it works.  I knew.  I could envision from the beginning how the pieces were going to fit together. For me, it was just a matter of trying out the code in this unfamiliar environment.  I was integrating new knowledge into old.  Lots of, “Oh, that’s how they do that!”  My student, who was having a hard time grasping the idea of taking data from a form and storing it somewhere where you could access it in different ways, had no vision, no model for what that looks like.  It was all new to her.  Yes, some of the Python code is familiar, but the context is very foreign.

I’ve been doing some reading about this problem.  What do you do when you have a student who can’t create a model of something in their head?  What if there is no previous knowledge to build on (or very little)? How do you help them learn? Sometimes we use metaphors.  In this case, I could have used a bucket metaphor maybe.  I tried to use a spreadsheet as a model, which sort of worked.

I was excited to have figured out how to make everything work, but struggled to figure out what to do to make it more straightforward for my students.  One thing I think I will do is teach web programming more directly.  We dabbled this year because we had some time, but I think this is the kind of thing my students might encounter and might be interested in.  And I can teach a lot of other concepts through this.  Investing more time on it seems like a good direction.  I need to do some more thinking about what to do when the concept goes straight over their heads.

Enhanced by Zemanta
Thought

Thought (Photo credits: www.mysafetysign.com)

Computer Science is a very cool field, but it’s also a very misunderstood field, even by those who are in it.  It’s a big field, so there are people in it doing all kinds of different things.  The complications remind me a little of the distinctions Sheldon makes between theoretical and applied Physics on The Big Bang Theory.  Or between what he does and what everyone else does.  And yes, there is some of the same derisiveness Sheldon expresses from people in CS.  Here are just a few of the many arguments, boiled down into bullet form.

What is Computer Science?

  • Is it primarily theory or programming?
  • Do things like web design/development count?
  • Can Computer Science be done without a computer?
  • What is the relationship between the computer and Computer Science anyway?

What should be taught in Computer Science courses (this is related to the above, but gets a bit more tangled and detailed)?

  • Should we focus on concepts, and if so, which ones: algorithms, iteration, recursion?
  • What programming language should we start with (if any?)
  • Objects first?
  • Is CS vocational or academic?
  • In my school/district/state, Computer Science is considered Word, Excel, and Photoshop.

Who is qualified to teach Computer Science?

  • Can only those with a BS or more in CS teach CS?
  • What if no one with a BS or more in CS wants to teach it?
  • Should CS teachers have industry experience?
  • Can the technology teacher who was teaching Word, Excel, etc. teach CS?  If so, how should they prepare?
  • What if we prepare all these CS teachers and there are no classes for them to teach?

Where does CS fall in the STEM spectrum?

  • Is CS a science? It’s in the name!
  • Is CS technology? Well, it can be.
  • Is CS engineering? There are majors in Computer Engineering.  There’s software engineering.
  • Is CS math? Many argue that math is the grandmother of CS.
  • And yet, CS isn’t part of most school’s STEM curriculum, nor part of the CORE.

So here’s my own experience with these issues.  Most people (lay people) are in two camps when it comes to what CS is.  They either think it’s technology in a very general way, mostly about using applications.  If you’re lucky, they’ll assume it’s mostly about complex applications like Photoshop.  In the next breath, they’ll ask you what kind of computer to buy.  The other camp assumes it’s programming.  I’d much rather deal with these people.  They’re usually dealing with more complex issues like future job prospects, whether jobs are outsourced or not, gender bias, etc.  Much more interesting conversations here.

The issue of what to teach is complicated.  My Ph.D. research involved figuring out how students learn, and how to motivate more self-directed learning.  So I think about structuring my classes based on what I’ve learned from that research, and from more recent research specific to Computer Science.  I am so lucky to be where I am because I can build my classes however I want.  I try to provide a solid foundation and I also try to respond to student interest.  People have really strong opinions about this that I find kind of bizarre.  There’s also a huge difference between what might be appropriate for high school or middle school, and what’s appropriate at the college level.  There’s a huge difference in cognitive development between a 9th grader and a freshman in college.  I’ve seen this in two different fields.  I think the main goal at the secondary school level is to get students interested in the field.  If you start focusing on they “should” know, I think you can suck the life out of the class and cause students to become disinterested in the field as a whole.  An example that drives me crazy: commenting code “properly”.  In high school, who cares.  They can learn that in their software engineering classes in college.  I encourage commenting so students remember what blocks of code do, but in the beginning, their programs are so short, they don’t really need to.  But someone will fight to the death over the idea that even high school students should learn proper commenting techniques.  Like we’re gonna know what their future team manager wants.

Teacher qualifications is a touchy area for me, given that I don’t have a CS degree.  I feel quite squeamish about it at times, but I know I have more experience than my students, and I keep building on that experience.  I’ve created several programs for the school that have tested my programming chops, and next year, I’ll be headed into the land of Arduinos, so I’ll be diving into a new language.  Many teachers I’ve run into *with* a CS degree are having to learn new things.  Most colleges aren’t teaching you how to program Arduinos or Finch robots or Kinects.  Some are, but most stick to a rigid curriculum that hasn’t changed that much.  Ten years out from a CS degree, the common languages have changed anyway.  So, I’m not sure not having the degree makes my life too much harder than for those with the degree.  And certainly, I have the teaching experience in spades, which I honestly think is more important.

Ah STEM.  It’s the buzzword du jour, and yet the biggest field that has contributed to its success is not included in most interpretations.  Some people can make the connection work, but I find the T in STEM causes all kinds of problems because it draws people back to the idea that it’s just about using technology (not computing) to do other things like make pictures, write papers, etc.  I’d love it if we could find a better acronym.  To me this is a lesson in how language matters.

My basic approach to all of this is that what I do is about creating and making my own tools, not using someone else’s.  I think about that broadly, so it can include things like building web sites from scratch (something girls tend to enjoy).  Why use Excel, when you can write some code to analyze your data and graph it however you want, not just the way Excel wants you to.  Don’t like the way a game works? Create your own.  Want to track your cat’s nightly excursions? You can build that, too.  Looking at CS this way as opposed to getting into the nitty gritty of languages and concepts makes more sense to me.  I’m just trying to make it fun.

Enhanced by Zemanta

Life always gets in the way. I’m doing a million things, and yet, there’s more to do. Here are just a few items in my head.

  • There are interesting conversations on the CSTA mailing list about teacher certification and computer science. Let’s just say it’s a mess.
  • I’m helping Mr. Geeky develop curriculum and documentation for Calico, an IDE/programming environment he’s helped develop. Because I needed more to do.
  • I’m loving Flipboard’s new “create magazine” feature. I’ve been creating collections of things as I read them. You can also share them. It’s mobile only as far as I can tell, but it’s definitely nice.
  • I’m exploring Google plus more. I like the communities. The one I’m liking the most, oddly, is Python. The education ones are so far disappointing. Also, having a hard time getting a good system of sharing going.
  • I can maybe see the light at the end of the tunnel. Summer is coming. I’m ready.