Monday, May 28, 2012

Lauren Ipsum: Bringing Computer Science to Everyone

Have you ever heard of Userland? It's where you buy things with truly fair coins, deal in algorithms, and try to outwit logicians to gain access to the town of Symbol.  There's all this and more in Lauren Ipsum, "a story about computer science and other improbable things."

Winsome Losesome, a mentor of sorts to Laurie (used with permission)

The book is designed for kids aged 5-12 according to a recent WIRED article about the book and its author, Carlos Bueno.  From the same article:
Bueno — who “tested” the book on his nephews as he wrote it — says that programming should be a part of everyone’s education. “The first step to controlling your life in the modern world is understanding computers,” he says. [...] “Programming is a broadly applicable life skill,” he says. “Even if you’re not in front of a computer, you can use programming skills for problem solving.” Lauren Ipsum doesn’t include any computer code, but it does seek to instill the ideas behind computer programming.
This approach interests me greatly, as my current research centres on the connection between educational games and story.  Though not a game, I tried to read Lauren Ipsum through the lens of a beginner.  I found the story delightful not just from that perspective, but from my own position as a seasoned computer scientist as well.

I think that the target audience would love the story for its fun characters and their adventures.  But more importantly, I suspect they'd walk away with a boost in their computational thinking ability.  For instance, Laurie, the little girl who unexpectedly found herself lost in Userland, encountered the design and analysis of algorithms (called "poems") more than once.  She learned that even if the solution to a problem makes sense, it's not necessarily sensible.

Achilles and the Tortoise (used with permission)

The algorithms and other computer science topics are not explicitly named, but they are easily recognized by those with some experience.  This ended up being one of the most fun things for me: looking for concepts I knew, and seeing how they integrated into the story.  Computer science is artfully woven into every little bit, from Laurie's hometown being named Hamilton to little turtles carrying out instructions in Laurie's algorithmic poems (presumably a tribute to Logo / Turtle Graphics).

Even though kids won't know about all these hidden gems, that's not exactly the point.  It's about bringing computational vocabulary into the public domain.  And this, in my opinion, is a very important task.

So, no matter how old you are or how much experience with computers you have, I highly recommend you read this story.  And when you do, know that your purchase will result in a book being donated to a school or youth program through the Get One, Give One program.  You really can't go wrong.

Monday, May 21, 2012

Mini-Course 2012: The Games

I have posted the 13 games I received from my mini-course students onto my website.  They are in exe format that should work on Windows machines without Game Maker.  As usual, the girls have done amazing things!

I'll list and link to the games below, but if you want to see more of what we did during the mini-course week, check out the student page.  There are links to the course notes and more.

Friday, May 18, 2012

Python vs. Processing as a First Language

When I asked my social networks what they thought was the best language to learn to program with, most said Python.  I've always heard great things about this as a first language, so I went along with it.  But one person said Processing, a language / tool I have been using for a while.  After learning a few basics of Python, I'm wondering if Processing really would be a better choice.

I started learning Python from the official beginner's guide (specifically, the Python Tutorial), designed for those who know how to program.  They also have a list of tutorials for non-programmers, but I didn't look at any of those.  Almost right away, I found myself thinking, 'Really? This is supposed to be easier for beginners?' The tabbing to define blocks, the somewhat frightening look of the official interpreter, the strange syntax with colons and range functions in loops... I just imagined myself saying, "Trust me, you'll understand this later" to an awful lot of things.

But, to be fair, I was looking at the documentation for experienced programmers.  Maybe if I read a source for beginners I could see the value a bit more easily.

So I put a copy of Invent Your Own Computer Games With Python on my Kindle and started reading.  This book aims to teach programming from the ground up in the context of games.  Considering how most programming books work, this one seems to approach things in a more interesting way.  Even still, the author has to pause from the context of the game being made and discuss the programming concepts for pages.  And he still has to note that certain syntaxes are beyond the scope of the book, or that you'll understand some particular thing later on.

I thought Python was supposed to get rid of this problem!

You could argue that Python is a good choice because it lets you do things quickly.  But I'd argue that Processing lets you do things even faster.  That games programming book? So far I'm more than halfway through and nothing has moved beyond text-based games.  But in Processing, your first program is almost certainly going to be entirely visual.  I love that with very little code you can get up and running in Processing right away and have something feels like an accomplishment.

Furthermore, I think that the syntax of Processing is more straightforward in many ways.  You can do a lot with some basic math, one or two types of loops, and standard method calls.  You can add literally one line of code to your project and get a visual result right away (as seen in this beginner's tutorial).  Yes, you will need to implement a method or two to really get going (setup and draw), but these actually make sense in a logical way, more so than the main of many languages.

It's true that Processing isn't interpreted like Python is, potentially introducing some issues with compiling.  But the compile and run process is abstracted quite nicely with the play button, so it's not all bad.  You can get errors in either type of language, of course.

I admit that I may be biased at this point since I'm not a Python expert yet, potentially making the comparison unfair.  On the other hand, now is really the best time for me to analyze Python fairly given that I don't know it well at all, just like other beginners.  Either way, I'll have a chance to learn more about how well Python works as a beginner's language as we work on our book on CS for beginners, since that's the language we've decided to include.

Tuesday, May 15, 2012

Mini-Course 2012: Another Successful Year

Last week marked the fifth year I've run my mini-course, Computer Science and Games: Just for Girls! This was a special year because of our study, and because it was my first taste of working full time away from the baby.  While both these factors made it challenging, I had some amazing helpers that made all the difference (thanks Elizabeth, Sarah, Laura, and Vanessa!).

I'll definitely be posting more about the results of our study once we have the opportunity to go through the data, but for now we do know from a discussion on the last day of the course that our always awesome group of girls generally liked our use of story.  One said she would have preferred to just learn the material directly, which I can certainly respect (and I appreciate her honesty).  Some said they felt like they remembered what they learned better when they could think about the story and the lesson within.  So for now, at the very least, using story is proven to be a good tool for engagement (no real surprise there).  We'll soon see if it helped the students perform better on our evaluation worksheets.

I'll be posting the students' games to my website soon as well, and I'll let you all know when they're up.  I have more than half of them to share (and maybe others will send theirs in later!).  As always, they have blown us away with what they can get done in a week's worth of afternoons.

Sunday, May 13, 2012

Lauren Ipsum Goes to Seven Lucky Girls

Remember that computer science storybook I mentioned recently? It turns out that the authors of Lauren Ipsum have a Get One, Give One program.  I had written to one of the authors, Carlos Bueno, to tell him how much I loved the book when he mentioned this.  He said it wasn't easy finding classes and programs to donate to.  What timing! I just happened to be running my girls' mini-course on computer science and games the very next week!

So Carlos sent me seven copies to give away to my class.  The seven winners are in the photo above, and based on the feedback about the stories in our study, I have a feeling they will enjoy their new books very much.

Friday, May 4, 2012

Two Examples of Storytelling to Teach Computer Science

Here are two delightful examples of using storytelling to teach computer science.  These are traditional stories to be read on their own.  They differs from our storytelling experiment, where we are doing interactive group activities with stories attached.

The first example is a book called Lauren Ipsum, "a story about computer science and other improbable things."  I just bought the e-book version and haven't read it yet, but even the opening note has me hooked:
No computers will be found in this book. If the idea of a computer science book without computers upsets you, please close your eyes until you’ve finished reading the rest of this page. The truth is that computer science is not really about the computer. It is just a tool to help you see ideas more clearly. You can see the moon and stars without a telescope, smell the flowers without a fluoroscope, have fun without a funoscope, and be silly sans oscilloscope. You can also play with computer science without... you-know-what. Ideas are the real stuff of computer science. This book is about those ideas, and how to find them. 

The second example is a collection of short stories housed in a blog called Computational Fairy Tales.  After enjoying the newest story, I started way back at the beginning and am working my way forward.  I particularly liked the story on hunting dragons with binary search.  You can probably see where things are going:
"Have you studied dragon attacks at all?" the king asked. "There is an order to these attacks. Dragons are smart. They eat the biggest cow in the area, then the second biggest, then the third, and so forth. They keep eating smaller and smaller cows, until the only remaining cows are too small to be worth the bother. Then the dragon goes on to the next kingdom."
I definitely think these would have helped my arts and social science students as I taught them a selection of computer science topics.

We're thinking of incorporating story into our book for CS beginners.  It will have more technical content than these, but they are still great sources of inspiration.

Do you know of any other projects or books that use story in this way to teach computer science?