Skip to content

How to Create Computer Scientists

2010 July 9
by Hélène Martin

I was talking to my dad about the design of a first computer science course and I said something like maybe I was more inclined to want to teach programming early because it’s what drew me into computer science in the first place.  I started writing some PHP scripts and BASH scripts to solve some specific problems I had and got hooked.  My dad doesn’t think it’s that simple.  He reminded me that I played The Incredible Machines and other games like it.

The Incredible Machines

Bowling balls? Dynamite? Mouse cages? The best building materials.

The neat thing about the Incredible Machines is that mistakes are made.  Lots of them.  Solving the puzzles requires incremental design and experimentation to understand how each component can be useful alone or when combined with others.  I remember feeling frustrated when things weren’t working but also really excited when I finally solved a level.  In retrospect, it does seem like that process is a lot like programming.

Then I played a lot of Zork.  It’s again a puzzle game but has the added twist of being command-line based.

Zork 1: The best game ever

That's right, no pictures.

To me, it was fun trying to figure out what commands were available when and having to visualize where I was and what was around me.  I still have the maps I drew out painstakingly with colored pencils.  I guess I was getting used to a limited command set and a form of abstraction.  I also realized how efficient typing in commands could be and eventually switched to Linux and a very light weight windowing environment.

Somewhere along the way I got involved in personalizing Windows 95.

Pink Screen of Death

Yeah, yeah, it's girly.

I never really thought much of it, but to make the Pink Screen of Death I had to change a setting in System.ini, figure out VGA colors and that kind of stuff.  Not super complex, but I was learning about operating systems, data representation, settings, etc.  I also did some fun registry hacking at the time which again got me curious about operating systems, frustrated at Windows, and on to Linux.

Of course, I didn’t just come up with these projects out of thin air.  I was spending a lot of time on Usenet and was perfecting my web searching skills.  Most importantly, I was learning how to learn.  That’s perhaps one of the most important things in computer science given that all of its fundamentals as well as its artifacts are man-made abstractions and that new ones come up every day.

So maybe I didn’t get to programming first.  And maybe what an introductory computer science class should do, in part, is give students an opportunity to be hooked by experiences similar to my own.  How about games like Lightbot 2.0 or Manufactoria?  Customization experiences through CSS?

15 Responses leave one →
  1. July 9, 2010

    Nice post! Reminds me of my friends blog post on her history with computers. It’s pretty fun to sit back and think about where it all began. One experience you didn’t mention was HyperCard from Apple.

    Your learning to learn is spot on. The whole usenet experience you describe is the experience kids now have with Google and some people still don’t get it and that is why we have let me Google that for you, link to lmgtfy.com.

    Lastly, I liked your mention of learning command sets and abstraction. When I was in CSE 142 I think a lot of people sruggled because they didn’t understand why they were writing what they were. This is similar to rotely memorizing a physics equation, but never fully understanding when and why you would use and how it works. To take your command set argument and expand on it to a little bit of computer architecture, operating systems, programming languages and linguistics might help people better understand introductory programming. I am not entirely sure on this and your experience teaching might prove otherwise.

  2. Dan Grossman permalink
    July 9, 2010

    yes, yes, yes — not necessarily that this is how we should teach (as you know, I plead lack-of-expertise) but it’s so easy to forget “we” had these experiences. I tell people with pride that I never wrote a computer program before college, and that’s true unless you count implementing the quadratic formula in basic in some math class. But that’s not the whole truth.

    For example, for two years I ran a summer-camp business office using a typewriter and an adding machine. There were a lot of things to keep track of: different campers every week, equipment to move around, finances, etc. Some efficient algorithms (word never used) were handed down to me, others I figured out on my own. I reinvented check-sums as quick sanity checks, was solving optimization problems on scratch paper, etc. I still have ‘tricks’ for manually counting hundreds of dollars in change in a matter of minutes. So maybe there’s an “operations research” angle to getting people hooked on some of the concepts.

    I’m sure there are a half-dozen other formative experiences that left me primed for CS1 in ways I didn’t understand at the time. And I didn’t even have an email account until college.

    • Hélène Martin permalink*
      July 9, 2010

      These are good, great!

      Maybe I need to start a collection of these anecdotes. I’m not sure how to use them, yet, but there’s has to be some way to recreate these experiences in the classroom… it doesn’t have to have anything directly to do with computer science, either. Math classes could be a lot more deliberate about having students work with data like you did.

  3. Linda permalink
    July 9, 2010

    I wish computers had been a reality when I was growing up; as it was, being in 10th grade at a posh prep school in 1982 meant we had 3 – 3! – of the first macintoshes (I think! little boxes). I was hooked from the beginning, writing little pascal programs that made the output formatted the way I liked it. Started cutting gym class to be in the “computer lab” – garnering saturday detentions on the way. I’m not sure the addiction can be taught; it’s a personality thing. You have to like puzzle solving and be tenacious enough to want to figure it out and not give up (like your game examples). I’m not sure the current generation growing up – and being surrounded by so many things that just “work” – will have the same drive to enhance the experience you or I did. But there will always be some.

    • Hélène Martin permalink*
      July 9, 2010

      Were there other things that might have pre-disposed you to like programming? I’d hate to think that it’s something one is born with or not!! I do agree that it’s about exposure and that today’s kids don’t necessarily have as much incentive to tinker since “there’s an app for that.” That said, I feel we should be able to create these kinds of experiences in the classroom!

      • Linda permalink
        July 9, 2010

        Aything else?? Don’t know. I was always really good at math, tinkered extensively with legos as a kid, am good at visualizing and hated it when I couldn’t figure something out. Still am that way. Spent 18 hours a day last year teaching myself cad in 6 weeks. it’s a puzzle thing, ultimately, and then – exposure to the opportunity. Any kid who stands alone while the other run off because they need to investigate further, I would think, along with an ability to (micro) focus for periods of time. I’m trying to “teach” my 5 year old niece with concentration games that require lateral thinking and abstract visualization skills (close your eye and “see” it in your head” as well. She seems to have the aptitude.

        • Hélène Martin permalink*
          July 9, 2010

          Ahh… Legos strike again. ; )

  4. Linda permalink
    July 9, 2010

    PS like the pink screen of death lol

  5. July 20, 2010

    What about a short module on adapting computers to one’s own needs?

    These days computers are necessary for work, but a lot of people never learn the fun basics – like your Pink Screen of Death – that can make that work a lot easier/more interesting. Some of the things that gave me confidence to learning XHTML were just basic tweaks that I figured out on my own. (Examples: changing the default fonts and colours in Word and Outlook; downloading pictures and setting up a desktop background slideshow; playing with screensavers, alert sounds, et cetera)

    That sort of thing builds confidence, lets students express themselves and teaches a bit about internal computer structure.

    • Hélène Martin permalink*
      August 3, 2010

      You know, you’re absolutely right — these kinds of experiences can fit into my classes. Ideally they’d be in “computer applications” classes but in practice that rarely happens. I’ll try to package it compellingly for this fall. Any specific ideas on how to guide students in the right direction much appreciated!!

Trackbacks and Pingbacks

  1. Tune Up Your PC » Post Topic » Interesting Links 12 July 2010
  2. Finding Colleagues « And Yet It Moves
  3. Interesting Links 12 July 2010
  4. Impact of Childhood Games | Hélène Martin
  5. Teaching with LightBot | Hélène Martin

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS