Education, computer science, sewing…

Multiculturalism.

Las Galeras is a noisy place: music, children laughing, birds singing, chickens clucking, pigs grunting, dogs barking, cats wailing… and these days construction sounds as a new aqueduct gets constructed nearby.  I’ve found it a nice background track to a lazy existence as we go from the beach to a hammock and back again.

We’re staying with a Dominican man and his American wife and spent Tuesday with a Dominican of German and Italian descent who has lived in New York, Paris and goodness knows where else, an American/Dominican and an older Italian couple.  It turns out I understand Italian fairly well but speaking back has been a bit more of a challenge.  By the end of the evening, after some beers and limoncello, we were congratulating ourselves on re-inventing Esperanto.

Our boat ride took us to two beautiful, deserted beaches: Frontón and Madama.  We enjoyed sandwiches from the local euromart and did some snorkeling.  Baracudas, sea cucumbers, fish of every color, huge urchins a sunken boat… wow!

Yesterday was a sit on the beach and read day and given the downpours today, it’s been more of a sit in a hammock and read day.  We’ve enjoyed the company of two middle school teachers from Boston.

Every once in a while I get a pang of ‘what am I doing in class next week’ but I’ve been pretty successful at bringing myself back to the difficult act of relaxing.

Sadly, though Yaw has learned a lot about the complex art of being white in the sun, I’m more burnt than tanned!

February 18, 2010   1 Comment

It feels good to be warm

24 hours after leaving home, we’re in a beautiful bed and breakfast in Las Galeras, Dominican Republic.  The five hour ride out from the airport was beautiful: lush hillsides, endless rice fields, friendly folks.  My Spanish is incredibly rusty but we’re getting by.  Tomorrow we sit our butts on the beach hoping that I will tan and not burn!

February 14, 2010   No Comments

Conditionals

Obviously, as I dive into high school teaching, I’ve been thinking a lot about mental models necessary for programming and about how to form these.  With 120 students of my own that I have had the opportunity to see through their very first line of code, their first loops, their first conditionals, etc, it’s become painfully clear that some students are much better prepared to think computationally than others.  This is old news to most people, but it’s just a much more intimate reality for me now.  I have no idea why, really… it’s not obviously correlated to their other grades or to their temperament.  It’s certainly not only the basement nerds or even the particularly interested — I have an superstar freshman girl in my AP class who I just learned ended up in my class by accident!

In my exams, I try hard to uncover what students’ current mental models are and have an opportunity to review them as necessary.  Although I know it’s unpopular among many, I have them write code on paper as well as solve mechanical code reading problems (Stuart is my hero and I steal all my ideas from him).  Reading their solutions is so eye-opening for me, especially since I can correlate with what I’ve seen them do at the computer.

I recently had my Creative Computing students take a Python quiz.  I asked them a fairly simple conditional problem to get them to define a function that takes parameters and check their conditional syntax.  Something interesting came out.  Here’s the problem:

Write a function choose_todo that takes two parameters: a temperature and a mood.  It should print what to do according to the following rules:

Temperature

Mood

Activity

60 or above

Happy

Go hiking

60 or above

Sad

Go fishing

Below 60

Happy

Go hiking

Below 60

Sad

Stay home

Ok, not particularly demanding or intellectually stimulating but the average and good students did this:

def choose_todo(temp, mood):
    if(temperature >= 60 and mood == "happy"):
        print "Go hiking"
    if(temperature >= 60 and mood == "sad"):
        print "Go fishing"
    if(temperature < 60 and mood == "happy"):
        print "Go hiking"
    if(temperature < 60 and mood == "sad"):
        print "Stay home"

And from EVERY exceptional student, we have:

def choose_todo(temp, mood):
    if(mood == "happy"):
        print "Go hiking"
    else:
        if(temp >= 60):
            print "Go fishing"
        else:
            print "Stay home"

I had the two happy cases be the same to see if they would recognize it, but I didn’t expect it to be such a black and white thing.  I pretty much could give this one problem and assign grades for the year.

The strong students somehow turned the problem around in their brain a bit more before starting to write than the others did.  Of course, the first solution isn’t wrong, it’s just… less satisfying?

This is not by any stretch of the imagination a skill that I explicitly taught.  I showed examples of concise code and discussed the advantages of making mutually exclusive options obviously so by favoring elif/else constructs over sequential ifs… but it was parenthetical at best.  Why do some people just ‘get it?’

Temperature

Mood

Activity

December 2, 2009   8 Comments

Scootered.

I enjoy public transportation but sometimes (most of the time) it’s really inconvenient.  I don’t have time to always be on someone else’s schedule!

So now I ride a 2008 Genuine Buddy 125cc scooter.  Isn’t she gorgeous?  I filled the gas tank the other day and it cost me $1.50.

IMG_0033

August 31, 2009   4 Comments

Troubleshooting.

It’s somewhat ironic that computer scientists often get asked for computer help that they can’t provide.  The truth is that software-writing ability generally doesn’t depend on utilitarian knowledge of Windows 2000, optical mice, wireless access points or printer drivers.  A number of computer scientists in fact take offense when asked for general computing help.  I guess they see it like asking a biologist for help troubleshooting a microscope or something though I’m not sure the biologist would be quite as offended.  I suspect they may act offended because they honestly don’t know.

I’ve always had a place in my heart for IT and happen to take pleasure in banging my head against strange computer (or more often, user) glitches.  And as unglamorous as diagnosing computer slow-downs or malfunctioning peripherals may be, I’d go as far as saying that my troubleshooting abilities are some of the most valuable skills I have.  What does it take to teach those?  Why don’t more people have them?

I recently received an e-mail from someone I really like and respect.  Our conversation went something like:

  • Short e-mail asking if I could help her fix her backspace
  • I ask whether it’s a mechanical problem and if so recommend popping out the key and cleaning it
  • She answers with more details: the backspace key doesn’t delete a selected region of text but works otherwise
  • I ask what program it’s happening in.  By this point, I suspect a Word or Office setting so I ask her to try in notepad, Outlook and Word
  • It’s only in Word
  • After a little poking around, I find the “typing replaces selection” setting

This is representative of the kinds of problems I’m asked to address — the issue is that most users don’t realize what their problem actually is.  In this case, the backspace key itself was fine but a software setting had changed.  It turns out that searching for “overwrite word selection” in Google provides a solution from Microsoft as the first hit.  Does it take a sophisticated understanding of the way computers work to know what questions to ask or things to try?

I’d like to try to help my students gain troubleshooting abilities but I’m not sure how to go about it.  Some of the things I’d like them to think about:

  • Eliminate hardware first (“is it plugged in?”  “Is the cable ok?”  “Is the socket ok?” “what if you plug it in elsewhere?”)
  • Applications have their own settings (“does it happen in application X?”)
  • Some applications are related (IE-Windows, the Office suite)
  • Rebooting solves a lot of problems
  • The right search query solves a lot of problems.  Coming up with it requires asking lots of questions until you have ideas on what might be causing the problem (hardware, settings, interaction between programs, malware)

Having “book knowledge” of troubleshooting isn’t particularly helpful, though.  I guess I can reproduce the backspace issue, for example, pretty simply and have them walk through how they would address it.  I wonder what students would do with that…

August 18, 2009   6 Comments

Oh wow podcasts.

I was doing the dishes.  It was good because Russ Roberts was talking to me.  I’m not ashamed to say that podcasts have changed my life.  More specifically:

  • Planet Money: an entertaining look at serious economic issues.
  • Fresh Air: I used to be annoyed by Terry Gross.  Now I have no idea how that could have been possible and I wish she were my friend.
  • EconTalk: Russ Roberts from George Mason university (libertarian bastion) discusses economic issues of various kinds. I think I got into this one through Yaw.  It’s one of the best at giving me food for thought.
  • The Moth: hilarious stories every week.  I sometimes cry they’re so funny.  While doing the dishes.
  • This American Life: each week, of course, they choose a theme.  And they bring you three or four stories on that theme.
  • Radiolab: blend of science and culture with Robert Krulwich, NPR science correspondent.

No wonder I have forgotten what boredom even is… there’s just too much syndicated content for it.

August 7, 2009   4 Comments

Teaching the Internet

A couple of days ago, I taught my 9th graders about the Internet.  My slides in PDF format are on the course website.  I took a bit of a risk: this baffles me and I think explains a lot about the sad state of education, but kids don’t expect more than ten minutes of lecture time.  We did about thirty minutes and it went surprisingly well.

I really wanted to do this because I believe in understanding what I use.  Just having a little bit of a sense of how computing tools work and why they were created can go a long way in becoming a better user, I think.  The first thing I did in this summer class was have students take apart computers and that worked really well for increasing understanding of computers but it was less clear to me how we would learn about the Internet.  We ended up having a conversation about it.

A lot of really interesting questions came up that I hadn’t necessarily anticipated:

  • Where is the Internet? Demonstrates that students really have no idea what it is.  We talked about how it’s not a place, it’s a big distributed system spread all over the world.
  • What does the Internet look like? I had a representation in my slides that helped but wasn’t entirely satisfying to them.  Is that a picture of the Internet? Well, we can’t take a picture of it since it’s really quite abstract.  The best we can do is draw computers on the network as nodes and draw lines between them to represent physical connections and attempt to capture how many hops there are between them.
  • What would happen if a terrorist hit a backbone connection? I didn’t anticipate this question though part of the idea in giving this lesson was that students would better be able to assess policy questions surrounding the Internet.  Two different sections were really interested in this and the next day I added a slide about the Alexandria cable cuts that compromised Internet access for millions in late 2008.  Students had no idea the Internet was this vulnerable and couldn’t believe we had cables dangling in the oceans.
  • What would happen if a terrorist hit the main address book? (I didn’t really go into details about DNS and root nameservers thinking the address book analogy was sufficient)  Again, I thought students were very sharp to notice a vulnerability there that I wasn’t going to go in much detail about.  Though there recently have been increasing efforts to mirror root nameservers, the whole system is surprisingly vulnerable.
  • So I can make any webpage popular on Google? I don’t know quite how students imagined that Google worked, but it didn’t seem to have occured to them that it was exploitable in some ways.  I think that notion made them uncomfortable.  Who can they trust if not Google?!

Some students tuned out after the first 10 minutes but a lot were very engaged and told me afterwards that they had learned a lot.  I think this kind of material needs to come in somewhere.  I know it’s not hands-on and flashy, but it’s really important (I’d love to see a simulation of how data flows through the world and see what happens when we cut cables, etc).  So where does it fit in?  It’s part history, part networking, part geography, part civics.  I think we owe it to ourselves to make sure it fits in somewhere.  In the mean time, I’ll keep teaching it whenever I get the chance.

July 31, 2009   No Comments

Course planning.

I’ve been suffering from a form of writer’s block, I suppose.  I’ll be teaching three computer science courses I’ve never taught before starting September 9th and I’ve found it incredibly difficult to figure out how to prepare myself for the challenge.  It recently struck me that I’m going to be spending 5 hours of each day in class with students so my usual algorithm of 2-3 hours of prep time per hour of class time is just not going to cut it unless I make significant headway over the summer.

Here’s my problem, though: I like to heavily adapt what I’m teaching to my students’ strengths, interests and schedules.  Even for the short and sweet summer program I am teaching for (10 hours of class time total), I felt so smart coming in with a schedule ready to go but after giving the students a survey and seeing what some of the other teachers were doing, I threw the whole thing out the window.  The time I spent planning prior to the course starting was definitely valuable because it at least gave me a framework to operate in and some ready-to-go materials.  But I’m still spending a lot of time reworking my plans as I go.

This leaves me with a number of questions.  How do the majority of teachers use their summers?  Should teachers be given more planning time interspersed with their courses?  Is effective advance planning just a skill that takes time to develop?  Is the trick to plan a lot of modular pieces and resources which can be plugged in as the situation demands it?

What I’ve been trying to do is at least answer some of the really big questions framing the courses.  I’m a big fan of “backwards design” and have been using a lot of ideas from Understanding by Design.  So I guess really I’m not answering big questions but rather trying to tease out what they are.  For example, I’ve attempted to formalize some of them and link topics to standards for the algebra-based introductory programming course I’ll be doing.

Course concepts for high school programming classes

Course concepts for high school programming classes ready to be put in order.

A tactic I’ve tried to get myself unstuck has been to write out concepts I want to cover on post-its and try to shuffle them around to see what goes together, what kind of orderings are possible and what can be cut out.  Topics are so inter-woven that it hasn’t been quite as successful as I hoped though getting all the topics out has been helpful.

Ultimately, I think I need to come up with a number of compelling assignments and tasks I want students to be able to complete and work from those.  I just need to fight off this “designer’s block!”

July 18, 2009   No Comments

Burda WOF 5/2007 #130

Sewing was kind of put on hold as my sewing machine killed itself and I prioritized trying to figure out what to do with my life.  I’m hoping I’ll have the opportunity to make a few things over the summer now that Yaw got the machine fixed for my birthday.

This particular shirt had spent a long time in the ‘to finish’ pile which is unfortunately huge at the moment.  My machine had mostly been fine but kept jamming as I tried to sew through the thin, super stretchy fabric I picked out for this one.  I should probably take her in for servicing more regularly…

Here’s the very dramatic Burda WOF picture:

Burdas version of top 130

Burda's version of top 130

I went for a decidedly less serious look.  I found the neckline too geometric and severe so I smoothed out the sharp angle to more of a curve.  I was going to knot the straps but after some experimentation realized that I liked it better as a plain tank, especially with this busy of a fabric.

Burda WOF 5/2007 #130

Burda WOF 5/2007 #130

Overall, no surprises.  This was a pleasantly simple top to put together.  I took in maybe a total of 2in around at the waist and pinned the straps so that they’d look roughly symmetric despite my incredibly uneven shoulders.

Burda WOF 5/2007 #130 back

Burda WOF 5/2007 #130 back

The fabric is a shifty poly blend of some sort from Jo-ann Fabrics.  It has an incredible amount of stretch so I took out all ease.

Waiting for fireworks to start

Waiting for fireworks to start

July 5, 2009   No Comments

CS/IT 2009

What a week.  My flight out of DC was delayed so I didn’t get into Seattle until late Sunday night.  Monday was the start of my summer class on technology for incoming 9th graders.  I gave the students a survey to see what they were interested in learning and the results convinced me to change my song and dance quite a bit.  Turns out a number of students wanted to better understand how computers work and what they’re made out of.  I’m not sure whether this was a wise decision or not, but I figured we could try exploring some old computers.  The kids are going crazy with it but I’ll save the details until I see how the project as a whole pans out.

Saturday 6/28 was the Computer Science and Information Technology Symposium — pretty much the one big professional development event for high school CS instructors.  I’m so glad I was able to go and hope to make it annually!  The sessions gave me some great ideas and I had the opportunity to make very useful connections.

The keynote was given by Stuck in the Shallow End authors Jane Margolis (who also authored the excellent Unlocking the Clubhouse: Women in Computing) and Joanna Goode.  I was not a huge fan of the book: the problem seemed too obvious to me and the offered solutions too weak.  That being said, the keynote was excellent and brought in some more data and a little information about the Exploring Computer Science course they have been working to develop in LA area schools.  Of course, everyone wanted to see the curriculum outline and materials but it looks like they’re not sharing the details yet.  Joanna made it sound like they were going to release things in the fall — too late for those of us starting a new course then but still, I’m excited to see what they’ve come up with.

Dave Burkhart’s session on differentiated instruction provided a number of good ideas.  He managed to balance educational theory and computer science well and although he’s a middle school teacher, his insights were quite relevant to high school.  I’d also never seen the hilarious clip he showed on herding cats.  Indeed, when we’re given classes with students of wildly different levels and interests, chaos ensues.  According to Dave, differentiated instruction is having a vision of success for each of your students.  I love that way to think about it.  He provided some good tools for making sure that all students had a path to success available to them.  I found it interesting that he uses a multiple intelligence test to better cater to his students’ learning styles.  Not a bad idea.

The “Computational Thinking – A Problem Solving Tool for Every Classroom” session wasn’t quite as relevant to me.  I liked breaking down thinking computationally when approaching a problem as asking a series of questions including:

  • “how difficult is this problem?”
  • “how can it be solved?”
  • “how can technology be applied to the problem?”

Computational thinking was also not-defined as “not thinking like a computer, it’s not programming, it’s not computer science, it doesn’t require a computer.”  Less sure about these.  Computational thinking may be broader than these, but they’re all great examples of applications, I feel.  This session was very similar to the previous day’s TeraGrid workshop where a lot of emphasis was placed on using simulations.  Interesting.

I really enjoyed the “Building Effective Leadership at the Grass Roots” panel.  Lots of very interesting people doing interesting things across the country.  I asked about making the CSTA curriculum resources into an easier to use tool and more of an online community.  Sounds like that is in the works.

I met a bunch of really inspiring people I hope to stay in contact with.  Highly recommended for anyone involved in K-12 computer science.

July 4, 2009   No Comments