This conversation is driving me crazy.  The post itself is fine, and raises an issue that CS teachers have been talking about both at the secondary and college level for a long time.  It’s the conflation, once again, of technology/computer literacy (i.e. using Excel and Powerpoint) with learning to program/learn computational thinking/computer science. In the first few comments alone, there is the yes, please make computer science a requirement so that all my students can use Word. No, no, no. To counter those who think learning programming or CS leaves out or doesn’t address the issue of learning Office or other applications, I have two responses.  One, those other applications are used in a context, not taught separately.  My students have used a variety of applications to present projects.  And I know they use them in other classes.  Two, I’ve found that students who learn programming are fearless about trying to use anything presented to them on the computer.  They will figure out Word because of that, and because they know a bit of how it works underneath.

And then there’s the later comments that say, okay, so we require CS.  What’s a student going to do with one semester of CS?  She can’t compete with those with full CS degrees.  No, but when she sits on a committee where they’re discussing the implementation of a new student information system or launching a new web site, she will be informed about how those things actually work and can ask appropriate questions and make informed decisions.  Or she will know how to get the computer to work for her, even if she’s not the one who writes the program to do so.

It doesn’t help, of course, that not even the CS people agree about how to approach this issue.  But that happens in every discipline.  Require one or three Writing courses? Writing across the curriculum or no? Technical writing or business writing?  There is no one right answer, but there are certainly lots of possibilities.

Teaching

  • My CS class is cruising right along, and have begun their final projects.  I’m quite pleased with what they’ve accomplished so far, and am looking forward to their final projects.  They’ve presented their topics, and I like them all.
  • One of the surprising things about teaching programming has been the subjectivity that goes into grading the programs.  I could grade them purely on functionality.  If it works, it gets an A.  If not, it’s a failure.  But there’s such a thing as programs that almost work and programs that work, but do so in a really wrong way.  I find myself confronting programs that are complex, but don’t work and programs that work but are too simplistic.  Not that different from grading essays really.
  • I’m becoming increasingly aware that I need to reflect a bit more on the structure of this class and make some tweaks to it for next year before I forget.

Mentoring

  • This is something I have done a lot of and continue to do, and I love this part of my job.  I’m helping some individual students, and I’m adding some extracurriculars that I hope provide some more informal opportunities for students to be involved with computing.
  • I often wonder what I’m mentoring my students into.  The field is still male-dominated, and can be hostile. Though I know they can hold their own on the programming front, I worry about all the side issues: the sexism, the lack of women in the field, etc.
Other job-related things
  • Can I just say I love the faculty I work with?  I went to a meeting the other day with other people who do my job at other schools, and so many of them complained about how no one did anything with technology, or they had to be pushed into it.  Not me.  I could tell story after story about different teachers doing some really cool things.
  • The year is winding down.  There are awards to hand out, special dances, celebratory dinners.  Light at the end of the tunnel so to speak.

Health and Exercise

  • As my clothes get increasingly tighter, I’ve tried to integrate some kind of exercise into my life.  It painful to do.
  • I’ve tried to get technology to help me, but it’s imperfect at best.  It still requires me to actually enter information. And tracking calories in and calories burned is tedious.
  • What I know I need is better habits.  I’m giving the couch to 5k program a try as a kickstarter, but I’m really not a fan of running.  But if it can get me in the habit of running/walking 3 times a week, maybe it will be worth it.
  • On the diet front, I’m not perfect but better.  I find it relatively easy to stick with a decent diet.  Today, I had oatmeal, salad, some chips and guacamole, and a ham sandwich with a side of applesauce.  And water all day.  Where I fall down is chocolate and alcohol.  My hope is more exercise will allow me to have those treats and not put on a pound just for looking at them.
  • I try not to think about it, but part of me just wants to let myself go.  Which isn’t a good idea for multiple reasons.

Mr. Geeky’s response to my last post about women and coding with, “Okay, so what do you do differently?”  I didn’t have an immediate answer, and I certainly don’t have all the answers, but I’m working on having more answers.  Here are some brief but immediate ideas, based solely on my own experience and a tiny bit of reading.

1. Connect to what women like.  Don’t know what they like? Ask.  Things that work for me:

  • Graphics, drawing, animation. Graphics, by the way, is a great way to reinforce math skills.
  • Music and sound
  • Current movies, books and tv shows.  Think trivia games about these or text analysis.
  • Physical object, especially cute robots, Lilypad arduino/soft circuit projects

2. Let them work in groups–at least for a couple of projects.  Women are social.  They like talking to each other as they’re working.  Sometimes they’re talking about their projects, sometimes not.   Note: not all women are social, so allow them to work alone if they want.

3. Assume they know little about the inner workings of a computer–everything from file systems to motherboards.  One of my first labs is to take a computer apart.  Very fun!  And it gets them to understand more about the hardware.  Teach them these things in context, not as a lecture.  As they’re using files in their programs, for example, they’ll get what a full path name means.

4. Give students time in class to work on projects, so that they have your and others’ support.  This also deals with equity issues.  I can’t necessarily expect that everyone has access to a computer at home, so all their projects are done during class time.  It creates a workshop environment that I’ve enjoyed.  Whether that will work with more than 10 or 15 students, I don’t know.  But we’ll see.

5. Speaking of projects, assign interesting projects (see number 1 above).  Recently I did a search of Computer Science projects just to get some ideas to add to my own list and it was depressing.  Calculate the nth prime number? Fibbonacci sequence? A lot of math-related stuff, a hold over I suspect from the days when CS was math.  If students are interested in that, fine, but I’ve had better luck making suggestions, but ultimately letting them choose.  My students have created games (“rock, paper, scissors”, “tic tac toe”, “lingo”) and robotics projects (“navigate a maze”, “dance with a partner”), among other things. 

6. Be flexible.  I’m lucky to have only women in my classes, and while there are definitely differences among individuals that I have to accommodate, they are more similar than not.  Adding boys to the mix complicates matters.  Boys have higher confidence than women when it comes to talking about computing and trying things.  This will sometimes intimidate the women in the class.  You have to be able to pivot and create an environment where this doesn’t happen.  It means creating assignments that appeal across the board, and it means supporting students who do good work, but may not be taking as many risks as those who have more experience and confidence.

7. Don’t get stuck on the language, environment, etc. Especially in middle/high school.  Some other language is going to come along by the time they’re in college or working.  Or what they learn in high school won’t be what’s taught at the college of their choice.  I like Scratch and Alice, Python (using the Calico project for my environment), and Processing (great way to create art).  You’re teaching concepts.  As I often tell my students, “Everyone uses a reference manual.”  While you’ll memorize some things, you’ll never remember the exact syntax for everything.  And if you switch languages, knowing that is very helpful.  There is no right language, though some languages and environments are easier to teach/learn and are more engaging to some people.

For non-students, women who want to learn to code in order to further their careers or just because they’re interested, some of the same things apply.  I’d say, too, that if you can latch them onto a project that has practical application, that they or someone they know might actually use, that’s a great way to get them involved and learning a lot.  One of my first projects that involved data structures was writing something that keeps track of my food items and tries to match that with recipes.  It was something I really wanted to work, so I worked harder on it.  And that wasn’t something anyone has ever suggested in any class I’ve taken online or offline.  I teach in a way that I’ve never been taught. 

Solving the time problem is harder, but one thing that CS is good for is breaking down problems into small bits.  Find a project and just write a small piece of it at a time.  For my recipe project, I started with structuring my recipes so that I could separate food items from them.  Just a bit at a time. 

What am I missing?  What else works? How do you work around the time problem?