Wednesday, November 25, 2015

Review / Ruby on Rails Tutorial: Learn Web Development with Rails by Michael Hartl

When I started at Shopify in the summer, the only Ruby I knew was from reviewing a children's book, and I didn't know any Rails at all. So I needed to get up to speed, and fast. Michael Hartl's Ruby on Rails Tutorial was my first, and still my favourite, go-to resource.

You can buy a copy of Hartl's tutorial, or read it for free online. If you buy it, you can also get supplementary learning material like solution manuals and screencasts. So far, I've just been working through the online version and skipping the exercises found at the end of each chapter (though I think the exercises are worthwhile, especially if you are not using Rails at work in parallel to learning it).

The coolest thing about this tutorial is the partnership that Hartl set up with Cloud9, a cloud-based development environment. When you're just getting started with something new, it is very helpful to avoid the headaches that inevitably come with setting up your own machine for development. Instead, you can use the tutorial-specific, preconfigured workspace on Cloud9 that leaves out only exactly what Hartl wants to walk you through. It's also really easy to deploy to Heroku from Cloud9, allowing you to easily test your website in production.

The structure of the book is well thought out. You get to make a fully functioning, if simplistic, web app in the first chapter using the automation tools available in Rails.  In the next couple of chapters, some of the key concepts of Rails are introduced and you learn to create static pages.  Chapter 4 delves into some Ruby-specific programming concepts. I'm not sure how well a beginner would be able to program after reading a single chapter, but then again, I'm not sure how good at programming you even have to be to write a small, straightforward Rails app anyway.

After the introductory chapters, the rest of the book is devoted to creating a Twitter-like micro-post website. A lot of the initial focus is on users, which makes sense pedagogically: it allows the learner to focus on the key concepts surrounding information stored in a database with a single model, which makes it a lot less confusing. The downside is that you don't get to the actual micro-posts, the meat of this particular application, until chapter 11. I found myself losing interest by then.

Overall, though, this is a great way to learn Rails, especially if you have some programming background, and probably even without any. The language is clear, direct, simple, and friendly. The examples are carefully designed to introduce as few concepts at a time as possible. Highly recommended.

Thursday, October 29, 2015

Connections: Learning Science, Games, and Apprenticeships

I'm working on an education project that isn't ready to announce yet. In so doing, I've been taking another look at learning theory, game-like learning, and apprenticeships. Unsurprisingly, there are many connected ideas.

Close connection - Verbundenheit
Close connection / Daniela Hartmann

There's a great book called How People Learn: Brain, Mind, Experience, and School that you can read for free online. The introductory chapter aims to separate speculation from science, summarizing some of the key concepts and practices covered in the rest of the book. Part of this is a research-based list of attributes that good learning environments ought to have:

  1. "Schools and classrooms must be learner centered." Consider cultural differences between students, and foster a growth mindset over a fixed mindset.
  2. "To provide a knowledge-centered classroom environment, attention must be given to what is taught (information, subject matter), why it is taught (understanding), and what competence or mastery looks like." Avoid presenting a large number of disconnected facts, and don't design tests that favour memorization instead of understanding. Doing with understanding is more important than just hands-on doing.
  3. "Formative assessments—ongoing assessments designed to make students’ thinking visible to both teachers and students—are essential." Use formative assessments to allow students to experiment with and revise their understanding and track their progress.
  4. "Learning is influenced in fundamental ways by the context in which it takes place." Make the norm of your learning environment one that encourages risk-taking, mistakes, feedback, and revision.
Meanwhile, one of my favourite examples of game-like learning (that is, applying what we know about learning in good games to more traditional forms of education) is NYC public school (grades 6-12) Quest to Learn. Seven principles of learning are outlined in the Q School Design Pack, directly quoted below:
    1. It kind of feels like play: Learning experiences are engaging, learner-centered, and organized to support inquiry and creativity.
    2. Everyone is a participant: A shared culture and practice exists where everyone contributes, which may mean that different students contribute different types of expertise.
    3. Failure is reframed as iteration: Opportunities exist for students and teachers to learn through failure. All learning experiences should embrace a process of testing and iteration.
    4. Everything is interconnected: Students can share their work, skill, and knowledge with others across networks, groups, and communities.
    5. Feedback is immediate and ongoing: Students receive ongoing feedback on their progress against learning and assessment goals.
    6. Challenge is constant: A “need to know” challenges students to solve a problem whose resources have been placed just out of reach.
    7. Learning happens by doing: Learning is active and experiential. Students learn by proposing, testing, playing with, and validating theories about the world.
    I'm sure you are already seeing the connections. For example, the learner-centred theme appears in both lists, formative assessments to revise thinking is similar to failure reframed as iteration, and context and practical experience are important throughout. Of course, this is no accident: The Institute of Play, the organization behind Quest to Learn and similar schools, have done a lot of careful research into both learning and games. Even without the more obvious game-based approach of Quest to Learn, game-like learning principles are useful to apply to any educational initiative.

    Finally, I have also been learning more about apprenticeships, particularly for software developers.  In the introduction of another freely available book, Apprenticeship Patterns, software craftsmanship is defined as a community of practice with a common set of underlying values. Many of the values listed tie again to the ideas described above. For example:
    • An attachment to Carol Dweck’s research, which calls for a ‘growth mindset.’” How People Learn calls for a community in which the growth mindset is the norm.  Failure as iteration shows students that they don't need to 'get it' the first time, but instead work toward mastery.
    • "A need to always be adapting and changing based on the feedback you get from the world around you." Formative assessment provides opportunity to react to feedback, and in game-like settings feedback is always coming your way.
    • "A belief that it is better to share what we know than to create scarcity by hoarding it." Game-like learning encourages sharing knowledge broadly.
    • "A willingness to experiment and be proven wrong." Again related to failure as iteration.
    • "A strong preference for what Etienne Wenger calls ‘situated learning.’" Communities of practice are one part of Wenger's situated learning theory, which relates to the idea of learning in context and learning by doing.
    I'll be delving deeper into a lot of these ideas and seeing how they will apply to the project I'm working on. Perhaps the perspective from the three different angles presented above will help you in your own projects, as well.

    Monday, October 19, 2015

    Transitioning From Academia to Industry

    It seems that 2015 has been a year of change for our family.  My husband got a new job in February, we somewhat suddenly decided to buy a new house down the road over the summer, and I was unsuccessful at getting a permanent teaching position at Carleton.  Rather than becoming a full time student to wrap up my PhD, however, I decided to jump ship to industry.  And so I am currently a developer at Shopify here in Ottawa.

    change / Andrea NIgels

    When I decided to go to industry, I had my sights on Shopify and only Shopify.  Many of my friends worked there, and I felt like it was the kind of place I could make an impact.  But I was really nervous about interviewing – would they want someone who had been locked away in the ivory tower since her co-op days in undergrad?

    Mind you, I have always tried hard to remain 'useful' in the industry sense.  I figured it would keep my teaching relevant if I got the permanent position, and it would help me break back into industry if not.  While I didn't work on any large-scale team projects during my grad school years, I did choose an application-heavy research area and was mindful to maintain good development practices where I could.

    Clearly, it worked.  I had interesting projects to talk about during my interviews, code to show on my GitHub, and despite my nerves, I did just fine for the pair programming part.  I showed I had a strong technical base and a boatload of passion.

    Once I managed to get hired, I wasn't so nervous about actually starting a few months later.  Which is interesting, since I didn't really know Ruby or Rails, the language and framework I'd be working in.  I suppose I felt confident in my ability to learn new things quickly, and I can't say I was wrong.  I still don't know Rails deeply, but I have been able to learn what I need as I go.  My aforementioned conceptual base along with my enjoyment of the design aspect of programming have made it easier.

    And so my transition from academia into industry has been a good one.  It's been nice to keep more regular working hours, and it's been fun learning new technologies.  If I hadn't had 20 months of co-op experience in undergrad, or continued to practice throughout grad school, the switch would have been a lot rougher.  If you're a grad student, strongly consider industry-based internships and make sure to learn the tools of the trade (starting with version control!).  With a strong base and a little confidence, you can make the switch, too!

    And as for my PhD, worry not: I am on leave this semester, but I do hope to (slowly) get through it eventually.  You'll have to wait for the "how to work full time while working on your PhD part time" posts a while longer. ;)

    Tuesday, September 29, 2015

    Online Communities are Why I'm Excited for GHC15

    I've attended almost every Grace Hopper since 2008. The one exception was 2011, when I was too pregnant to fly. I found an old blog post about enjoying the conference from afar, where I reflected about being sad to be missing out once the conference started. Since I'll be missing this year as well, it's nice to re-read this:
    Fortunately, the very thing that I have worked so hard to make awesome when attending GHC in the past is allowing me to enjoy this year's edition from afar: the online communities. 
    I have a whole new appreciation for the many awesome posts on attendees' blogs and Twitter accounts. While seeing conversations between all the people I am missing out on meeting up with makes me feel sad, I also find myself vibrating with excitement with all the amazing things happening in Portland. From the wonderful keynote speakers to the fantastic panels to the neat e-textile workshop, this conference must be the best one yet.
    While there is nothing at this year's conference on e-textiles (at least, not that I know of!), the conference is once again gearing up to be the biggest and best. Along with that comes our largest set of amazing volunteers ever – they will be giving their time as always to share the conference through our online communities. And so, the reason I'm excited about GHC15 is the fact that I'll have more blogs, notes, and tweets to enjoy from afar than ever before!
    Perhaps I'll see you on Twitter this October (I'm @gailcarmichael), and we can share the conference from afar together!

    Thursday, September 24, 2015

    Beyond the Code: A Day of Diversity and Inspiration

    Monday was a day of inspiration and diverse voices.  It was the second annual Beyond the Code conference in Ottawa, a labour of love for a group of volunteers mostly from Shopify.  As described on the official webpage, "Beyond the Code is a positive, solutions-driven conference for anyone interested in diversifying the technology sector. We’re building a supportive environment for underrepresented groups in tech, to help you build a fulfilling career and feel empowered to make positive changes in your community."

    The speaker lineup this year was spectacular, and you can read my lives notes for a bunch of the sessions.

    The keynote this year was Hilary Mason, lover of data, cheeseburgers, and apparently Red Bull pancakes.  Mason is a self-confessed optimist: she is a believer in technical progress and in the underlying goodness of humanity.  In her talk, she focused on technology, organizations, and people.  Some of the biggest takeaways for me included that data is exciting, machines are getting more creative, and people aren't fungible.

    My job at the conference was to introduce workshop speakers and see if they needed any help.  The one I participated in most was a design thinking workshop lead by Barbara Spanton of Macadamian.  It was a really well organized workshop that had participants work through each stage of design thinking to design a new wallet for their partners.  The prototypes everyone created were really quite good!

    All the other speakers I saw were equally as awesome – like Kelly Shearon, who taught us how to better value the "less technical" roles on our teams, Safia Abdalla, who shared her insights on how to effectively teach, and Jen Myers, who shared her wisdom on how to be awesome.  The closing panel of the conference, however, was a perfect way to wrap up the day.

    Lead by Cate Huston, the panel featured Omosola Odetunde, Kat Li, Tai Dickerson, Lori Olson, and Marco Rogers.  The coolest thing about it was that it did not cover only women as a diversity issue, but also issues of ethnicity, sexuality, gender, etc.  Cate did a really good job of starting where most panels end, and pushing discussion of the issues further than usual.  For example, instead of the conversation devolving to be all about the pipeline, panellists talked about not just hiring, but retention as well.

    Again, you can check out my live notes for the conference, which include quite a bit on most of these talks (only the workshop is missing).  Be sure to watch for next year's Beyond the Code, which I hear might even have a new location.  Hope to see you there!

    Friday, September 11, 2015

    HLF2015 / Fred Brooks on Software Engineers and Teams

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    It has been over a week since the end of HLF, and I've been settling back into my life as a software developer at Shopify in Ottawa, Canada.  I often find myself thinking back to what I consider to be an epic conversation with laureate Fred Brooks.  With my husband and fellow blogger, Andrew Carmichael, I interviewed Brooks in what was a joint effort.  Brooks was kind enough to spend over an hour with us.  Since I can't possibly share everything he said in one blog post, I've put together a transcript that you can read online, and I've picked a few tidbits to share here.

    Because Andrew and I both work as software developers, we wanted to take a more practical, industry-driven approach to our discussion with Brooks.  For example, we asked early on what makes a programmer great.  At first Brooks simply said "too hard" in his patient southern accent with a smile on his face.  He then explained that being able to visualize complex geometric constructs was a pretty good indicator of whether beginners would be good programmers.  We also discussed the importance of teamwork:
    I once worked with a colleague when I was a summer intern… this fellow was extremely difficult to get along with.  He was our supervisor to us two interns, and that was fine, but he could not get along with any other colleagues in the room.  His boss remarked one day to the two of us privately, “You know, if we could put him in a box with two slots, one to put problems in and one to get answers out, it would be great!” [laughter] And he was easily the sharpest person in the room, but I was not surprised to learn three years later that when they had a reduction, he was the first one let go in that group. ... We used to get fractional distillation of the nerds [laughter]. ... Now we’re drawing from a larger population.
    We also wondered what companies could do to grow recent graduates into effective professional programmers.  For Brooks, the key is apprenticeships.
    Only talk to me about the theory when I’ve encountered the problems.  I’m willing to listen to your war stories, but I need to be able to bring from my own background my own war stories to make what you say to me relevant. 
    Therefore I would do rotational mini-projects, and I would do rotation definitely so that...well, you know, the same thing they do with residents in medical school.  Go try surgery, go try pediatrics, go try psychiatry.  It will make you in general a better physician in all respects. 
    I’m not interested in making people into better programmers, I’m interested in making people better software engineers.
    Once a programmer is ready to join a team, there are many skills to learn.  For example, estimating how long software projects will take is a very difficult task for teams.  When we asked about what could be done about it, Brooks gave us this great quote:
    One of my friends who was an electrical engineer on the 360 project said there are promising engineers, and there are old engineers, but there are not promising old engineers [laughter] - they don’t make promises!
    Of course, how well a team can produce estimates is not the only indicator of how successful they will be (or perhaps not an indicator at all).  We asked Brooks what he would do if he could spend one day with our teams at work if he had to determine whether we would succeed or fail.
    Talk to a lot of people [laughter].  One of the things I’d be looking for is how consistent is their view of the goals.  One is: how highly do they respect each other? One I would be looking for is: do they believe in the goals, or is it something they were assigned and not sure they’re going to be able to do anyway? One is: are they excited about the goals? “Yeah, this is going to a contribution, it’s going to be a great system, and I’d be glad to be part of this team!” 
    One question I’d listen for, but my presence would interfere, is when they chat, do they chat about work, or last night’s TV? Which has to do with: are they really excited about what they are doing, or are they just turning the crank? 
    Purely subjective.
    This is just a taste of our interview.  Our conversation took many different directions, winding through topics like education and Grace Hopper.  We were very grateful, however, to be able to bring all kinds of practical advice and insights to our team at work.  Again, check out the transcription of the interview if you want to see more.

    Tuesday, September 1, 2015

    HLF2015 / Sir Antony Hoare — Theory and Practice

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    As with my interview with John Hopcroft, I was most interested in what Sir Antony Hoare had to say about computer science education. He was, after all, knighted for his work in education in addition to research. I was also particularly fascinated with his effort to tie academia and industry together, for example by setting up an external Masters degree for software engineers.

    ©HLF/ / C. Flemming­ - All rights reserved 2015

    My first question for Sir Hoare was about whether we should be concerned that undergraduate degrees try to address both theory and practice. Most graduates will go on to work in industry, but many academics seem to believe that they are training students primarily for academia. Sir Hoare's belief (and I happen to agree) is that theory is valuable to learn for all students regardless of their future paths. Learning theory helps you better understand what you're doing by noticing analogies to what you've done before, thus increasing your competence. Once you get into the workplace, theory can make your job less boring: it is fun to see real-life examples of the theory you learned in school! It can also help you understand when the code you write is 'good.'

    Next, I was curious what Sir Hoare thought of active learning techniques in the classroom. Though he wasn't particularly familiar with recent approaches, he wouldn't say no to the possibility that they can improve learning. As with anything, if it's done well and in moderation, it can be a good thing. Then again, we can also talk about what makes a lecturer effective on their own: a good lecturer, he says, has charisma and motivates students with rhetoric. Further, the lecturer has many existing tools available, such as textbooks, tutorials, exercises, practical projects, and even discussions (sadly, we never had any of these in our undergrad CS classes). I would love to say that I believe all this is enough, but I have seen firsthand that, for far too many students, it isn't. It will be interesting to see what a typical undergraduate lecture hall will look like in a decade or two.

    Finally, I told Sir Hoare that I couldn't not ask him a question about quicksort, but that I'd try to put a different spin on it. (This elicited a large smile.) I have used quicksort as a first introduction to recursion for my students in the past, including for my arts and social science students as they learn the basics of computational thinking. I wondered how he felt about its efficacy as a first example. It turns out that not only does he think it's great for teaching recursion, but he even had some fun ideas for how to do it. One is a wonderful video that explains the algorithm via a Hungarian folk dance. I've used the same set of videos in my lectures, and highly recommend them. Another idea is based on the card game Patience (also known as Solitaire).

    It's interesting that Sir Hoare began our conversation with an admittance that he hasn't been working on education the last 15 years, so he thought he wouldn't have much to say about it. As you can see, I once again had a wonderful conversation on the topic, and am very glad to have gained some insight into Sir Hoare's thoughts on theory and practice in computer science education.

    Friday, August 28, 2015

    HLF2015 / John Hopcroft, Diversity, and One of the First Computer Science Courses

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    I've long had a special interest in computer science education. I recently worked as a full time lecturer for two years, and I have been designing and delivering outreach initiatives for more than seven. So when it came time to request interviews with this year's HLF Laureates, John Hopcroft, who created one of the world's first computer science courses, caught my attention.

    I began our conversation by introducing my interests in education, and right away Hopcroft pointed out that there is so much talent distributed around the world, but that educational opportunities are not so widely available. This has been in the case in China, for example, where Hopcroft has been working; he says their educational system needs help, and they know it. Of course, improving education everywhere is important. Hopcroft points out that as we move more and more into an intellectual economy, we need to better prepare our workforce.

    John Hopcroft during his lecture at #hlf13 ©HLFF // C.Flemming - All rights reserved 2013

    For me, this means ensuring that we educate everyone with at least the basics of computing. Right now, the field of computer science is not very diverse. For example, in the United States, according to the National Centre for Women & Information Technology, only 18% of computer and information science bachelor degrees went to women in 2013, and women made up only 26% of the computing workforce. Hopcroft suggests that one factor in a rather complicated issue is that women seem to want to help people, while men are satisfied by learning more abstract things. This idea validates my own theory that many men are often happy to primarily learn about the tools of computing (code, hardware, etc) for the sake of it, while women tend to want to know what you can do with these tools.

    So what was the diversity like in Hopcroft's very first computer science class? Understandably, he wasn't really aware of diversity at the time. After all, there was enough to worry about, like figuring out how to teach one of the world's first courses on computer science despite having a background in electrical engineering. Ed McCluskey asked Hopcroft to teach the course, and in doing so, Hopcroft found himself becoming one of the world's first computer scientists. This lead him to be at the top of the list whenever anyone needed a computer scientist for, say, an important committee, thus giving him opportunities that for most disciplines wouldn't be possible until close to retirement. Hopcroft admitted he feels lucky for the way things worked out, and credits Ed for making it possible.

    After learning that Hopcroft's first courses covered automata theory, I wanted to know what he thought the best computer science teachers do more generally. He told me he went into teaching because of the impact his many world-class teachers had on him at every stage of his education – he wanted to do the same. To be a great educator, he told me, it is not about the content, which anyone can specify. The single most important thing is to make sure your students know you care.

    I was curious what Hopcroft thought of recently proposed active learning techniques like peer instruction and flipped classrooms. He said he didn't have any experience with them, so couldn't really comment. However, he did reveal that he still uses the blackboard during lectures – that way, he can change his lecture on the fly according to student needs. I pointed out that this could be considered a form of active learning, as there would be a feedback loop in the classroom. He did point out that techniques like the flipped classroom have some hidden concerns. For example, one must consider the credit hours a course is worth. If you are shifting what was done during lecture into videos or reading ahead of time, are you adding more pressure to the students' time?

    I quite enjoyed my conversation with Hopcroft, and will leave you with some advice that he gives his students. Don't focus on what your advisors have done in their careers; their work was done in an era where the focus was on making computer systems useful. Look instead to the future, when we will be focussing on doing useful things with computers.

    Thursday, August 27, 2015

    HLF2015 / Foghor Tanshi – This Year’s Women In Technology Pass-It-On Award Winner and HLF Attendee

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    The Anita Borg Institute is a non-profit organization "on a quest to accelerate the pace of global innovation by working to ensure that the creators of technology mirror the people and societies who use it." For many years, ABI has supported women in technology through programs like the Grace Hopper Celebration of Women in Computing and through research.

    One of ABI's initiatives is called Systers, originally a mailing list for women in systems computing and now a community for all women in technology. Today, Systers donate money to help supportPass-It-On Awards, "intended as means for women established in technological fields to support women seeking their place in the fields of technology." Each award winner has a moral obligation to somehow pass the benefits of the award on, broadening the its impact.

    One of this year's Pass-It-On winners is Foghor Tanshi, a Nigerian researcher currently teaching at the Federal University of Petroleum Resources. Tanshi received financial support for travel to this year's Heidelberg Laureate Forum, where she hopes to launch her research career.

    I asked Tanshi a few questions about her involvement with computer science, and would like to share some of her answers here.

    Image courtesy of Foghor Tanshi

    Gail Carmichael: Why did you get interested in computer science?

    Foghor Tanshi: Because it is a field that easily finds application in a variety of other fields of endeavour. This particularly appeals to me because I enjoy applying my knowledge to new challenges.

    GC: What is your research area? What made you interested in it?

    FT: I have broad interests in machine learning applications in natural language processing and robotic motion and vision. This was inspired by the most basic need for machines – they make work easier. I am therefore interested in these interconnected research areas because they enable the development of collaborative and assistive technologies for humanity, e.g language-based teaching aids, human-robots collaborative manufacturing systems, etc.

    GC: You also have an interest in computer science education. Can you tell me more about that?

    FT: I am presently a computer science educator and plan to continue for most of my life because I am interested in inspiring – by any available means – more students (especially female Nigerian students) to use its techniques to solve problems. This is because of the fact that computer science tends to play an important role in the achievement of flexible solutions.

    GC: What made you want to come to HLF?

    FT: As one pursuing a career in research, it promises an opportunity to network and acquire vital information from Laureates in computer science and mathematics that would launch the next stage of my career. It would also provide an opportunity to share my research and meet potential collaborators, partners, mentors and friends.

    GC: What was the role of the Systers Pass-It-On award in your ability to attend HLF?

    FT: The Systers PIO enabled me make pre-travel and travel arrangements towards attending the forum.

    GC: What are you most looking forward to at HLF?

    FT: To re-live several years of knowledge and experience through the laureates. This would mean learning as much as possible within a short period of time; wisdom (for navigating a research career) that they acquired in a lifetime.

    Tuesday, August 25, 2015

    HLF2015 / Stefan Hell and the Difficult Task of Communicating Science

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    It turns out that the idea behind the Heidelberg Laureate Forum isn't exactly new. In fact, Nobel laureates and young scientists have been meeting in Lindau for more than 50 years, and it is these events that HLF is modelled on. For the first time, to show the strong affiliation between the events, we have a Nobel laureate speaking at HLF, and a laureate from HLF will speak at the next Lindau meeting.

    This year, we were honoured to hear from Stefan Hell, Nobel Laureate in Chemistry 2014. His talk was part life story, and part description of the breakthrough that lead to the Nobel Prize. I personally found both aspects equally compelling, but the thing that Hell succeeded at most was managing to communicate his scientific work in a way we, decidedly not chemists, could understand.

    @HLFF/ C. Flemming­ - All rights reserved 2015

    Some of my friends and colleagues know that I am very picky about presentations. I find that many talks, especially research talks in conferences, could be so much better. Slides are best used as a prop, not notes. The talk should tell a story of sorts, and not be structured the same way as a paper (written and oral forms of communication just don't work the same way). The content should be clear for audiences outside the direct field of the speaker, yet detailed enough for those who are part of it. And, of course, the speaker should be personable and engaging.

    Stefan Hell succeeded on all counts with his excellent lecture.

    Hell's work makes it possible to view molecules at a much higher resolution than previously possible. The key insight that made this possible was the realization that you can never get better resolution by focusing light – there is no way to focus a lens to a point small enough. Instead, his work showed that you can put molecules into two different states and show only a small number of them in one of those states. I was thrilled to understand as he walked us through the key ideas, despite the fact that I haven't done chemistry or physics since my first year of undergrad.

    If you want to see for yourself, you can watch Hell's Lindau lecture online. See also the HLF Blog post on whether Hell should be considered a role model for mathematicians, and read about STED microscopy on Wikipedia.

    HLF2015 / Pomp and Circumstance at the Opening Ceremony

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    The importance of the Heidelberg Laureate Forum really hit home for me when I saw how much effort was being put into making the event special for both the laureates and young researchers. From the smallest details, like the quality of the conference bags, to the pomp and circumstance of the opening ceremony, the organizers sure are doing things right.

    The opening ceremony felt a bit like a wedding at first. We were asked to stand, the music started courtesy of a very talented saxophone quartet, and then we stared at an open door for a good few minutes before the laureates proceeded in. Cue the huge round of applause to honour the 26 laureates, winners of the ACM Turing Award, Abel Prize, Fields Medal, and Nevanlinna Prize. I'm sure each and every of the 200 young researchers present were honoured to be in their presence, and eventually even meet them personally.

    @HLFF/ B. Kreutzer - All rights reserved 2015

    There was a touching moment of silence for those we have lost since last year's forum, including the founder of HLF, Klaus Tschira. The rest of the ceremony featured welcome speeches, including two from politicians: Sigmar Gabriel, Federal Minister for Economic Affairs and Energy, and Vice Chancellor of Germany; Dr. Eckart W├╝rzner, Lord Mayor of the City of Heidelberg. I found it quite refreshing that not only did these politicians seem to understand the importance of science and technology, but genuinely cared about it.

    Saxophone Quartet Balanced Action @HLFF/ B. Kreutzer - All rights reserved 2015

    We were treated to some more sweet sounds of the saxophones at several interludes, and lead by the quartet Balanced Action out of the building and along the historic cobblestone streets to the opening reception nearby. Hard to make a group of mathematicians and computer scientists feel any more special than that (that is, until dinner at the castle, but that's a story for another time).

    The video of the opening ceremony is available online.

    Sunday, August 23, 2015

    HLF2015 / The Calm Before the Forum

    This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

    My husband and I are sitting in the restaurant of the historic brewery and hotel, Kulturbrauerei, where the wifi is good. Now that we've recovered from having essentially no sleep Friday night while we traveled from Ottawa to Heidelberg, it's time to get excited about the upcoming activities at the Heidelberg Laureate Forum. Although I am in fact a young researcher (a part-time PhD student at Carleton University, to be specific), that's not why I'm here. I was invited to blog for the event, and I'm really looking forward to sharing my experiences with you.

    A view of the castle and bridge appropriately called Old Bridge.

    After we arrived in Frankfurt Saturday morning (which, I feel obliged to point out, was only midnight our time), we sleepily made our way to Heidelberg by train. We decided to walk from the train station to our hotel. We thoroughly enjoyed the pleasant hour-long stroll along the river where we spotted a play park our daughter would have adored, and many lovely homes with a great view. We were lucky enough to get our hotel room early, so we checked in, had lunch, and napped.

    A outside-in view of the restaurant at Kulturbrauerei.

    The rest of our Saturday consisted of a wonderful media get-together at Kulturbrauerei, and some after-dark exploration. We ended up at Schloss Heidelberg (Heidelberg Palace), where we got some lovely views of the city at night. We're looking forward to the opportunity to get inside during one of the many social events hosted by the Forum.

    Schloss Heidelberg is lit up very nicely at night.

    Today, the Forum kicks off with opening ceremonies and a reception. Then we have a week of intellectual stimulation to look forward to, with lectures from the laureates as well as opportunities to engage with the young researchers. I have a feeling our departure on Saturday is going to come all too soon...

    Thursday, July 30, 2015

    Creating a Sense of Coherence in Open-World Adventure and Role-Playing Game Stories

    The following is my most recent explanation of my thesis project.

    We are interested in the application of interactive storytelling to videogames.  We want to improve story experiences in open-world adventure and role-playing games.  A game that features an open world allows its players to move freely in a large space with few or no artificial barriers, choosing what to do and when.  The flexibility of an open world and the fact that adventure and role-playing games tend to have strong story components make these genres an interesting place to explore interactive storytelling techniques.

    Our central goal is to support the creation of open-world videogame stories that give players a sense of coherence.  To achieve this, we take a structuralist approach and partition stories into two types of scenes inspired by the concept of kernels and satellites.  First, a minimal set of fixed scenes form a core story with strong authorial control.  A game’s most central plot points become fixed scenes, thus acting like kernels.  The rest of the story emerges from a much larger collection of flexible scenes that can appear just about anywhere in story save a small set of preconditions.  Most flexible scenes act like satellites: minor plot points, or opportunities to develop story elements like theme.

    We want to give players the freedom to explore flexible scenes however they wish as they move through the fixed scenes as designed.  A certain level of coherence is guaranteed when the content of the fixed scenes is itself coherent, but a story with few satellite scenes will have minimal aesthetic appeal.  The challenge, then, is to maintain coherence no matter how a very large set of flexible scenes is experienced.

    Instead of arranging flexible scenes according to a strict definition of causal coherence, we want to create a “sense of” coherence.  By this we mean that not all events have to be causally related in explicitly obvious ways, but that players should have the sense that they could figure out the meaning of and relationships between events if they thought hard enough about it.

    One of the major ways we achieve a sense of coherence is by managing the story’s progression.  We keep track of when certain story elements, such as theme and character, are reflected.  We then prioritize which scenes should be made available to players next according to a desired distribution of the story elements.  For example, if a particular theme was developed very recently, we want to prioritize scenes that reflect some of the other themes.  On the other hand, if it has been a long time since a theme was developed, scenes that reflect that theme strongly should have high priority.  A good distribution of elements ensures that story elements don’t feel out of place when developed, and that reminders of previous scenes are made throughout the story.

    Another facet of creating a sense of coherence is the emergence of structure at run-time through the use of conditions.  Instead of defining causal relationships in a scene graph a priori, we allow authors to define prerequisites for their scenes.  Using prerequisites is a common technique, but in our design we push for prerequisites based on story state values in addition to game state.  For example, scenes might have prerequisites that only allow them to be seen once a particular theme has been developed sufficiently.  Alternatively, a scene might be best suited for the early development of the theme, and should not appear later on.  We want authors to think about flexible scenes in terms of how they function in a story’s development without having to worry about how they will fit within a series of causally related events.

    In addition to controlling the path players take through a set of fixed and flexible scenes, we can improve the sense of coherence by adjusting the content of scenes.  In so doing, we want to give players interpretative agency: they should feel like there are deeper layers in the story not being explicitly told, and they should feel like they can interpret those layers in a reasonable way.

    We are exploring three ways of dynamically affecting the content of scenes.  In the first, run-time criteria is used to choose a set of scenes that a recurring motif (say, an apple) can be featured in.  Observant players will begin to notice the motif over time and assign meaning to why it appears in certain scenes.  Eventually, they will expect something in particular to happen when a new scene with the motif begins.

    Second, mix-ins give us pre-scripted opportunities to make connections to scenes the player happens to have already seen.  As Keith Johnstone points out in the context of improvisation, “feeding something back in from earlier in the story adds ‘point’ and creates structure.”  Characters, story elements, and dialog are all examples of source material that could be referred to in future mix-ins.

    Finally, we can adjust the presentation of a scene to alter the player’s interpretation of otherwise unchanging events.  Choice of lighting, background music, camera angles, and even the weather can all depend on the story’s state at the time a particular scene is reached.  Perhaps the heroine of the story returns to the castle with the head of a dragon.  The mood evoked during the scene might be bright and cheerful if the player saw the dragon as an evil menace.  However, the mood might be more sombre if the player found out that the dragon was simply a loving mother trying to protect her hatchlings.  The final event stays the same, but the interpretation of it changes.

    In summary, our goal is to give players a sense of coherence when exploring stories in open-world adventure and role-playing games.  We structure our stories as a set of fixed and flexible scenes.  Players can traverse the set of flexible scenes freely, barring any prerequisites that deem certain scenes inaccessible.  Flexible scenes are prioritized so that story elements are well distributed throughout the story.  We encourage interpretative agency by dynamically introducing recurring motifs, using mix-ins to make connections to earlier points in the story, and modifying the presentation of a scene to affect interpretation.  Through all of this, higher quality open-world stories will emerge while still maintaining a satisfactory level of interactivity.

    Wednesday, July 22, 2015

    Keynotes and Inspirations at Foundations of Digital Games 2015

    I had a great time at this year's Foundations of Digital Games, but it was the talks and the hallway track with narrative folks that really left me inspired.  In this post I'll summarize the first three keynotes and some inspiration I got from one of them; you can check out my raw talk notes and the proceedings for more details.  The sketch notes I'm including are all by Chris Martens, a fellow narrative PhD candidate (though she'll be done soon!).

    Tom Forsyth's Keynote

    The first keynote of the conference was given by Tom Forsyth, who worked at Valve and then Oculus VR.  Tom highlighted some of the challenges we face when designing all-new experiences for virtual reality.  For example, motion sickness comes from there being an imbalance between what your eyes see and what your ears feel, so having players move up stairs causes issues (elevators are apparently much better).  It's also important to avoid most cinematography techniques, and to use an eye blink transition whenever possible.

    [raw talk notes]

    Sketch note by Chris Martens, via Twitter

    Robin Hunicke's Keynote

    The next day we heard from Robin Hunicke, who produced Journey and is seriously inspirational.  She began by talking about Wattam and its designer Keita's inspiration for the game.  The zaniness levels of that game are right up my alley, making me want to get a PS4 even more...

    Most of Robin's talk was about her inspiration for Luna, which as she puts it, was kind of a beast.  She talked in depth about the inspiration noted on the game's website: "origami, shadow boxes, abstract sculpture and minimalist illustration."  Near the beginning of the design process, she apparently spent six months alone in her apartment, folding paper.  It turned out that folding paper digitally wasn't very fun, but that didn't mean some of the lessons learned from origami couldn't apply to a game's design.  Luna looks wonderfully whimsical, and I am hoping I was mistaken about it being a VR game (or at least, not VR-exclusive) because I would really like to try it.

    [raw talk notes]

    Sketch note by Chris Martens, via Twitter

    R. Michael Young's Keynote

    The first academic keynote of the conference, R. Michael Young is in charge of the Liquid Narrative Group at NCSU.  He described some of the main areas his group looks at in the world of narrative after reminding us that "narrative is big. Really big."

    The systems his group builds are evaluated based on whether they produce narratives that can be understood by humans in particular ways.  They break narrative down into story (everything that happens inside the story world), discourse (the choices the author makes in how to tell the stories; what goes into the telling), and interactivity (what happens when a player goes into the role of a character? How do we design the story and discourse?).

    The group's most used tool seems to be artificial-intelligence-based planners.  Planning looks at how to automatically sequence actions in the face of a novel set of environmental goals.  In narrative, this might mean anything from having characters scheme to achieve their own goals, to authors planning to mislead then reveal.  Stories are broken down into the smallest possible units (such as individual actions), then built back up.  Many problems arise from the use of standard planners, which often tell uninteresting stories.  One of the ways to improve the outcomes is the group's current work in progress that attempts to express character traits through the action sequences created.

    [raw talk notes]

    Sketch note by Chris Martens, via Twitter


    Michael's distinction between story and discourse got me thinking about my own thesis project (read a somewhat out-of-date description here).  I realized that a large part of what I'm doing feels more like discourse than story.

    It felt even more clear to me when I thought about Mieke Bal's definitions of story and fabula from Narratology: Introduction to the Theory of Narrative.  A fabula is "a series of logically and chronologically related events that are caused or experienced by actors" while a story is "a fabula that is presented in a certain manner."  Most of the techniques I am working on actually don't affect the fabula so much as the way the fabula is experienced.

    One of the areas I struggled with in my thesis proposal was justifying why I didn't want to use planners.  There are some definite reasons that were easy to articulate, such as difficult authoring.  However, I also had this unarticulated understanding that planners weren't quite right for the design approach I took, but wasn't sure exactly why.

    By thinking about story and fabula, I was able to realize that I'm not trying to arrange actions into a story so much as allow navigation through a set of coarser story pieces featuring fixed actions.  I want players to be able to explore a mostly fixed fabula in different ways, leading to different interpretations of it.  In the process, the resulting story should still have a sense of (but not necessarily actual) coherence.

    As a result of this insight and another cool idea that came up during the conference, my thesis project's focus is tightening up very nicely.  I'll share more about that sometime in the future.

    Sunday, July 19, 2015

    My Experience at Foundations of Digital Games 2015

    During the last full week of June, I took a wonderful trip to Pacific Grove, California for Foundations of Digital Games 2015.  (You might recall that last year's conference was on a cruise ship.)  I didn't end up presenting anything this year, and I'm so glad I went despite this.  I found the whole experience rather invigorating.

    Before continuing, be sure to note that I've posted publicly accessible notes for most keynotes and a selection of paper sessions.  The proceedings are also available.  I'll talk more about the academic content of the conference in another post.

    This year's conference was held at Asilomar Conference Grounds, which began life as a YWCA summer camp for girls about 100 years ago.  It is part of Asilomar State Beach, which is, unsurprisingly, gorgeous.

    Our keynotes and some of the parallel track sessions were held in the site's chapel.  Not the greatest for lighting (and, to an extent, sound), but a really neat building in terms of its architecture.

    All meals were held in the dining hall at a set time signalled by the dinner bell.  In addition to giving meals a fun summer camp feel, it ensured that everyone in the conference ate together.  I loved this setup for its ability to build community and encourage networking.  I had many excellent conversations over food, and even some pivotal moments in terms of my thesis (more on that in a future post).  A downside was that the food was usually just ok at best, and there was always too much of it .

    Although most attendees stayed on site, we were spread around many different buildings on site.  I was really surprised to see our lodging when I first walked up to it.  I remember describing it as a "70's nature lodge" and wondering how something so dated, and without any in-room phones or TVs, could cost so much.  I suppose, though, that a lot of the money goes towards the maintenance of the beach, which softens the blow.  It really did grow on me over time; the slight ocean view from the balcony likely didn't hurt.

    One of the things I really enjoyed was walking along the boardwalks that wound through the protected sand dunes.  They were often higher than the beach, thus affording some lovely views.  Occasionally, you even met some wildlife along the way.

    After the conference was over, I headed to Monterey and spent an afternoon at Monterey Bay Aquarium with a fellow conference attendee.  The aquarium is inside old cannery buildings, so from the outside doesn't look like much.  It was absolutely spectacular inside, though.  I loved every minute there and could have stared at some of the exhibits forever, constantly discovering new details.

    After a long walk along the coast to my last hotel room and an early morning flight the next day, my trip was over.  I can't say I've ever had a bad experience travelling to California, and I'm really grateful that I was able to use my professional development money at Carleton to make this trip.  Stay tuned for a future post about the academic side of FDG.

    Tuesday, June 23, 2015

    Keynote / Attracting Women to Computing and Why it Matters

    I was invited to give the keynote for Women and Technology 2015, held at Carleton on June 19.  I spoke about women and computing.

    I began with an exercise: how could we generate six different versions of a multiple choice midterm where the three options were scrambled differently on each of 30 questions? I gave some time to discuss the problem, then asked how many people realized this could be easily solved with code.  Of those with hands up, how many felt confident they knew how to write that code? (There were a few!) I mentioned that learning to code can help you automate the boring stuff you don't want to do manually (see, for example, the new book Automate the Boring Stuff With Python).

    This lead me into a discussion of the kinds of computational thinking skills that learning to code can give you, and where those skills could be applied outside of coding.  But if these skills are so empowering, then why do so few people have them? And in particular, why are women so underrepresented?

    The short answer, of course, is that it's complicated.  (It's not just a pipeline issue!) I shared a few of the factors involved, from gendered toys (see Riley's rant) to a sick tech culture.  I talked a bit about some of my own small contributions (e.g. my mini-course, Go Code Girl, Gram's House and CU-WISE).

    I concluded with some homework: everyone should go forth and learn to code (or, learn some more).  If they could get to the point that they could feel positively about computing, it's a lot more likely they will encourage girls that show an interest in it to give it a go.  I hope you'll do the same. ;)

    Thursday, June 18, 2015

    A Brave New Data World at the Heidelberg Laureate Forum

    I recently told you about my upcoming trip to Germany for the Heidelberg Laureate Forum.  One of the exciting events during the forum is a discussion on a selected "hot topic."  This year's hot topic is big data.  Because events will be recorded and publicly available afterwards, and because I'll be blogging about it myself, I thought I'd share some information about what will be happening.  The following is from the organizers.

    Scientists and Society face together the ethical challenges of computational science


    Massive spying; privacy breaks; anonymity reversed… the penetration of information technology in all aspects of life has spurred a long series of worrying stories of lost privacy and “big brother” control. But the brave new world of Big Data is also behind some of the most hopeful news in recent years: from the “Twitter-revolutions” to the findings in astronomy and genetics. This year's Hot Topic session will focus on the social and ethical challenges of computational science. How to protect privacy against mass surveillance, organized crime, and companies’ intrusions? How secure is our data? How is intellectual property changing? Should we blindly trust massive data mining? How is computational science best used for the good? How should we regulate this brave new world? During the session, experts in these issues will think together with big minds and talented youth from mathematics and computer science. The objective is drafting an agenda of how scientists can help society in using the opportunities and dealing with the challenges of computational science.

    Why should the HLF host this session?

    The nature of HLF (top level speakers and talented youth in a free-speaking atmosphere) is the ideal setting for an open-minded, well-grounded discussion on the ethical and societal challenges of computational science. Inquiring into its social impact is a moral imperative for researchers, in a time in which it is used for all kinds of purposes. But it is also an important strategic choice: computational science is surrounded by a halo of omnipotence and suspicion, which could hamper its many beneficial effects and interfere with research. The polarization around GMO and nanotechnology is partially due to the delay of the scientific community in engaging in social debates. While the relative balance around stem cells or IVF is partially due to ethical issues being taken into account from the beginning. The HLF could be a fertile ground for making scientists proactive and constructive allies to the public in the debate around the social challenges of computational science.


    • Big Data for the common good. It should be clear from the beginning that the benefits of Big Data and computational science largely outweigh the challenges, and that the latter must be tackled precisely to make the most out of the first. This can be done by providing one or a few very explicit examples of the use of Big Data for the common good.
    • State of the art. Providing an objective and description of the main facts and figures about social and ethical challenges of computational science (the source of sensitive data, the size and degree of transparency, controversial application, etc.)
    • Technical challenges. It is very important to break the halo of omnipotence of Big Data, showing the pitfalls associated careless data mining: quality of data (biases, gaps, heterogeneity), false positives, approximation in models, biases in interpretation, etc.
    • Socio-ethical challenges. The bulkiest part of the event should gravitate around issues like privacy (informational self-determination, identity management, limits to anonymity, massive spying, cybercrime, companies’ intrusions, data-based discrimination, dangers for socio-diversity, commodification etc.), security, intellectual property, and computational manipulation of social behaviour.
    • Constructive approaches. Speakers should be chosen in such a way to prioritize those that put forward technological solutions or regulatory approaches, rather than limiting themselves to criticism (eg. New deal on data, Personal data purse, compensation schemes, Internet bill of rights, etc.)

    Tuesday, June 16, 2015

    Blogging and Meeting CS Greats at the Heidelberg Laureate Forum

    The Heidelberg Laureate Forum "offers a select group of young researchers in mathematics and computer science the extraordinary chance to meet the preeminent scientists of their field for one week of cross-generational, scientific dialogue."  Although I would qualify as a young researcher who could have applied to attend, I hadn't actually heard of the forum by this year's deadline.  Instead, I was contacted by one of the lovely media organizers for the event to see if I'd be interested in blogging (oh, and by the way, expenses to and within Germany will be paid).  I'm sure you can imagine my answer!

    Here's how the event is described by its organizers:
    For the third time, recipients of the ACM A.M. Turing Award, the Fields Medal, the Nevanlinna Prize and the Abel Prize gather in Heidelberg to meet with 200 young researchers from all over the world. For one week, the laureates of mathematics and computer science will exchange with young researchers through lectures and workshops, plus a “hot topic” session discussing the socio-ethical challenges of Big Data.
    I'm personally quite excited to hear from some of the pioneers of computing (though I am disappointed they are all men, when there are indeed female Turing Award winners).  When I registered as a journalist for the forum, I requested the chance to interview John Hopcroft because of his passion for computer science education.  It will also be awesome to see the likes of Stephen Cook (laid the foundations of NP-completeness theory), Frederick Brooks (originator of the 8-bit byte and author of The Mythical Man Month), and Ivan Sutherland (pioneered the graphical user interface with Sketchpad).

    Other interesting aspects of the forum are the social and outreach components.  The laureates get together with local students on Wednesday morning, while the young researchers visit local institutions (hopefully I can go with the laureates!).  The welcome dinner Monday night is being held at Heidelberg Castle, and we get to visit (and wine and dine at) the Speyer Museum of Technology. Check out the full forum schedule here.

    I want to tell you more about the events on big data, but I'll save that for the next blog post.  Stay tuned for more about the forum leading up to and during the week of (August 23-28).  Also be aware that the events will be recorded and archived publicly online, so you can check it out for yourself later on.

    Tuesday, June 9, 2015

    A Classroom Game to Teach Data Representation With Images

    Our Gram's House team has been working on three classroom games designed to teach middle school girls about computer science principles.  One game intends to teach data representation by showing how images can be represented on computers with numbers.  Here are the current rules of the game.  These are not final—there are open questions about some individual rules, and we need to do more play testing with the target audience.  Feedback is most definitely welcome!


    Each player will receive two pieces of paper.  The first will be hidden from the other player and contain an encoded image and the total number of black cells contained in the image.  The image will be different for both players.

    The second page is a blank grid where the encoded image will be revealed over time.  This page will be placed on the table where everyone can see it.  Each player must copy the total number of blacks in her image onto this page.

    Each player also needs a pen.


    Players alternate turns, with the youngest going first.

    On her turn, Player A calls out a row number and column number.  Player B then takes one of the following actions:
    • If the cell on Player B's publicly revealed image is blank, the colour of the cell will be revealed.
      • If the corresponding cell on Player B's hidden image is a 0, Player B places a dot inside the cell on the revealed image to indicate that the cell is white.
      • If the corresponding cell on Player B's hidden image is a 1, Player B colours the entire cell with her pen to indicate that the cell is black.
        • When the revealed cell is black, Player A gets to call a second row and column, which can be for the same cell or a new one.  This happens only once, and only when revealing a black cell for the first time.
    • If the cell on Player B's publicly revealed image is already revealed as a certain colour, a run of cells directly to its right is also revealed until the colour changes, or the row ends.
      • If the very next cell is a different colour, nothing new is revealed.
    Winning the Game

    A player wins the game if the public image of their opponent has all of its black pixels revealed first.


    Here is an example turn.  Player A is trying to reveal Player B's image.  Player B's publicly revealed and hidden encoded images currently look like this:

    Player A calls "4, 2" which means she wants to reveal the cell at row 4, column 2.  Player B looks at her hidden encoded image and sees that the cell at "4, 2" contains a 1, so the cell needs to be coloured black:

    Because a black cell was revealed, Player A gets to call an extra row and column.  Though not required, she decides to call "4, 2" again to see if she can reveal a run of blacks following the first one.  Player B sees that there are three more cells that contain 1 before the colour changes, so Player B colours in all three cells:

    Player A's turn is now finished.

    Monday, June 1, 2015

    Early Designs for Classroom Games Teaching Computer Science Principles

    We have been working on designs for three classroom games as part of our Gram's House story project.  Each game teaches a different computer science principle, and has three different forms: an abstract game, a game with a fictional context, and a game with a complete story.  We will eventually be comparing engagement and learning outcomes between the different versions, but for now we are focused on getting the game mechanics right.  What follows is a summary of the three games so far and some of the design issues we have been running into.


    The first game is about writing and performing algorithms. Our learning objective is that players should be able to both create and understand an algorithm of clear and concise directions to solve a simple problem.

    First Iteration: Before the game begins, clue bags and decoys are hidden in the space the game will take place in (around a classroom, in a hallway, and so on). The bags will be placed inside of and underneath existing objects to require more complex instructions to find them. Two teams compete in a relay race. One player writes precise, step-by-step instructions to lay out three objects in a clue bag in precise positions on the floor. The next player follows the instructions. Another player writes instructions to find a location on a map inside the clue bag. A fourth player follows the instructions. A fifth player writes instructions to assemble individual parts in a clue bag into a completed object. A final players follows these instructions. Finally, players race to the finish line with their completed objects.

    Design Issues: Because the teams are working on the same problems, they must be separated into two different locations. A proctor is required to determine whether algorithm performers have followed the steps correctly and whether the steps have lead to the correct outcome. Because teams are not in the same room, the facilitating instructor cannot proctor effectively, resulting in a player having to do it. Players are only active when they are reading or writing algorithms in their leg of the race, resulting in excess downtime.

    Second Iteration: We are working on a cooperative version of the relay race that will reduce player downtime significantly. The race will be done with two teams in two rounds. For each team, two players will work together to write instructions, one player will be the algorithm reader, and the last player will be the algorithm performer. At the beginning of a round, writers will work together to plan their algorithms within a time limit. The non-writers on the first team will begin reading and performing their algorithm. After watching the first team for a short period of time, players on the second team will begin reading and performing their instructions. Writers will continue to refine their instructions after they are fully performed until the performers successfully complete the task.

    Data Organization

    The second game is centred on the principle of data organization. Our learning objective is that players should be able to recognize different ways to organize data, and see how the organization will affect data retrieval. For example, finding information in data that is unorganized requires a linear search, while a binary search can be used when the data is sorted.

    First Iteration: Players are required to search a set of cards to find a specific data point. A deck of cards is arranged face down using a different organization each round. Each team draws a target card, and tries to find a card that matches the data on the target. Players can turn over one card at a time, check it, and turn it back down if it is not correct. There is a score penalty for each card checked. In the first round, cards are arranged randomly in a row, forcing players to search linearly or randomly. In the second round, cards are sorted according to the type of data being searched, allowing players to discover binary searching techniques. In the third and final round, cards are grouped into categories based on the data being searched (for example, the groups might be A-D, E-H, and so on).

    Design Issues: Although there are points involved, the game feels more like an activity. Students have to observe the sorting order and determine how to make use of it, but there aren't any interesting choices to be made. The first round with randomly ordered cards makes it clear that unorganized data is difficult to search, but is unfair in a game setting; there is a risk of disengaging players.

    Second Iteration
    : Our most recent idea for this game is unrefined, but holds some promise.  The game involves dividing a communal set of objects with varying properties across multiple dimensions (something like cards, or buttons) into individual piles.  Each player would get a target card that indicates the exact item in the pile she needs to find.  Using one of a hand of action cards, players would modify the piles on the table.  Her goal is to isolate the item she is looking for in a pile with only that item.  This will hopefully lead into a discussion about how to arrange data once so that it is easy to find any data.

    Data Representation

    Our final game shows players how images can be represented by computers. Our learning objective is that players should understand how images can be represented as numbers using different protocols. We also want players to understand the idea of compression using run-length encoding.

    First iteration: Players will work on teams to transmit an image by encoding and decoding it in a relay. Before the game starts, players are asked to decide on a protocol they want to use during the game. In the first round, one team member takes a pixelated image and encodes it row by row by writing numbers according to the chosen protocol. The encoded version is taken to the next team member, who decodes the numbers back into an image within a time limit. The image is checked for accuracy. Players have an opportunity to discuss their protocols before repeating a second round using new images.

    Design Issues
    : Players spend most of their time doing the rote activity of filling in their images or writing out the numbers. The only interesting choice is in making the protocol to encode images with, but the choice of protocol is constrained by the information already given. While some time is given to improve protocols between rounds, but there is little to no in-game motivation to try something new.

    Second iteration: We wanted to maintain a clear connection between numbers and an image, but centre the gameplay on interacting with individual pixels. Our second iteration is for two players and is inspired by Battleship. Each player has an encoded black and white image that she keeps hidden from her opponent, and a publicly displayed grid of unknown pixels where the encoded image will be revealed as a regular image. How many pixels are black in each image is also public. Each player's goal is to reveal the image of the other player. On her turn, a player announces a pixel coordinate. Referring to their hidden encoded images, the other player either reveals the colour of the pixel at that coordinate, or reveal a run of all the pixels of the same colour starting at the coordinate.


    We are play testing all of our games right now, though some are further along than others.  In a future blog post, I'll share more details about the image representation game, since that is a design I have been working more closely with.