Friday, August 29, 2014

This Year's Design for 'Computers for Arts and Social Science Students'

I've been working on our non-majors computing course for a while now.  Last year was the first time I got to try it with a large group (440 students!), and also the first time I tried using Python.  I have since refined it to the following design.  I will report how it went at the end of the semester, but I have a great set of TAs and am optimistic about using turtle in assignments to make programming a bit less daunting.

 We're not using the robot turtle, but wouldn't it be fun? Image from Wikipedia

This course design lives on my portfolio site, and will be updated there as time goes on.

Introduction

This course is currently undergoing a transformation.  It has traditionally taught basic office software usage in a step-by-step workshop style.  The new version focuses on computational thinking skills by teaching basic programming concepts in Python and then applying them to understanding more advanced functions of the same software previously covered in detail.  Instead of learning a laundry list of programming concepts, however, the concepts are embedded in four relatable general contexts (see topic list below).

A new calendar course name and description, which I developed, is up for approval Fall 2014.

Learning Objectives

By the end of the course, students will:
  1. Develop an appreciation of computer science.
    1. Understand what computer science is.
    2. See how computer science can help solve problems in arts and social sciences
    3. Learn how computer science can help you by automating boring, repetitive, or error-prone tasks.    
  2. Develop computational thinking skills.
    1. Learn how information is stored on a computer.
    2. Learn basic programming concepts (variables, if statements, loops, and functions) and write simple programs using these concepts.
    3. Learn how to formulate searching and sorting problems in a way a computer can solve them, and understand the efficiency of the solutions.
  3. Develop an advanced understanding of useful software packages by applying computational thinking skills.
    1. Apply an understanding of variables to effective use of word processing software.
    2. Apply an understanding of variables, if statements, and functions to effective use of spreadsheet software.
    3. Apply an understanding of variables and references to database software.
Topics

Many topics have a context in which the concepts are placed.  For example, for conditionals and repetition, we discuss how the logic would look for a robot that can find its own way out of a maze.  We start with just the ideas, such as how to break the right-hand rule down into its constituent parts, then see how to implement if statements and while loops in snippets of Python later on.
  1. Introduction
    1. Course intro
    2. What is computer science?
    3. What is computational thinking?
  2. Binary Numbers and Data Representation: How Photography Went Digital
    1. Image representation
    2. Binary numbers
    3. Bits and bytes in memory
    4. Using the Python interactive shell
  3. Conditionals and Repetition: Helping a Robot Find Its Way
    1. Boolean expressions
    2. If, else, elif
    3. while loops
  4. Data Structures: Making Stories Interactive
    1. Data types and variables
    2. Lists
    3. Dictionaries
    4. References and simple graphs
  5. Searching and Sorting Algorithms: Managing a Bookstore More Efficiently
    1. Searching: linear, binary, hash
    2. Sorting: insertion, selection, quick
  6. Applying Computational Thinking to Word, Excel, and Access
  7. Miscellaneous applications of computational thinking / Python
    1. E.g. PyschoPy, RenPy, etc
Assignment Topics
  1. Computer science, computational thinking, binary numbers
  2. Image and text representation, first Python turtle program
  3. Python turtle programs with if statements, loops, and variables
  4. Searching and sorting (conceptual), Python turtle program with a user-defined function
  5. Word, Excel, Access

Tuesday, August 19, 2014

Gram's House Project Team Receives Two NSF Pathways Grants!

Gram's House is a research project I started several years ago with a prototype originally designed for Microsoft's Imagine Cup competition.  Since then, a core research team has formed around the project: me (Carleton University), Elisabeth Gee (Arizona State University), Carolee Stewart-Gardiner (Kean University), Gillian Smith (Northeastern University) and Casper Harteveld (Northeastern University).

We just got awarded two NSF Pathways grants for the Advancing Informal STEM Learning program!


The Role of Story in Games to Teach Computer Science Concepts to Middle School Girls

This project is being co-lead by Elisabeth Gee and Carolee Stewart-Gardiner.  Since I'm not a research faculty member, I am participating as a contractor.  We are going to dive deeper into determining the effect of story in educational games that teach computer science to middle school girls.  This will extend previous work I did with a study during my mini-course a couple of years back.
As part of its overall strategy to enhance learning in informal environments, the Advancing Informal STEM Learning (AISL) program funds innovative resources for use in a variety of settings. Nationally, the US has a shortage of computer scientists; a big part of this problem is that girls are discouraged from learning computer science at a very young age. This project tries to address this problem by creating a videogame specifically oriented towards getting middle school girls interested in learning computer science concepts outside traditional programming classes. Based on evidence that stories provide a compelling way to present complicated technical subjects and that girls in particular respond to technology careers as a way to help others, the project is building a videogame called "Gram's House" in which social workers intend to move a fictional grandmother to a retirement home unless the player can outfit her home with sufficient technology for her to remain independent. Solving puzzles in the game requires learning core computer science concepts. Research studies will be conducted to determine whether the videogame is effective at getting girls interested in computer science, at teaching computer science concepts, and whether using stories makes videogames more effective for learning.
This project based on an earlier successful prototype uses an iterative research-based design process including paper prototyping, playtesting, and focus groups (N=20) to create age appropriate activities, based on the CS Unplugged series, that support learning concepts from the Data, Internet, Algorithms, and Abstraction sections of the high-school level CS Principles curriculum. A quantitative, quasi-experimental design will be used to determine the overall effectiveness of teaching CS concepts under three types of game conditions: (a) games alone, (b) games with fictional settings, and (c) games with stories. A novel assessment instrument will be developed to assess content learning and qualitative observation using a standard observation protocol will be used to gauge interest and engagement. 70-80 middle school girls will be recruited for afterschool participation in the study in two states. As part of the dissemination efforts, a facilitator's guide, rule book, and materials such as maps and storyboards will be created and shared with the game. In addition, a workshop for computer science and other teachers who are interested in using games to teach CS concepts will be conducted.
(Project link on NSF website.)

GrACE: A Procedurally Generated Puzzle Game to Stimulate Mindful and Collaborative Informal Learning to Transform Computer Science Education

The PCG project, as I like to call it (where PCG stands for procedurally generated content), is being lead by Gillian Smith and Casper Harteveld.  They want to learn more about how best to generate puzzles that teach high level computer science concepts, and whether players will learn more about the concepts when discussing how puzzles are generated in an attempt to help one another solve them.
Northeastern University will design, test, and study GrACE, a procedurally generated puzzle game for teaching computer science to middle school students, in partnership with the Northeastern Center for STEM Education and the South End Technology Center. The Principal Investigators will study the effect of computer generated games on students' development of algorithmic and computational thinking skills and their change of perception about computer science through the game's gender-inclusive, minds-on, and collaborative learning environment. The teaching method has potential to significantly advance the state of the art in both game-based learning design and yield insights for gender-inclusive teaching and learning that could have broad impact on advancing the field of computer science education.

Development and evaluation of GrACE will consist of two, year-long research phases, each with its own research question. The first, design and development, phase will focus on how to design a gender-inclusive, educational puzzle game that fosters algorithmic thinking and positive attitude change towards computer science. The content generator will be created using Answer Set Programming, a powerful approach that involves the declarative specification of the design space of the puzzles. The second phase will be an evaluation that studies, by means of a mixed-methods experimental design, the effectiveness of incorporating procedural content generation into an educational game, and specifically whether such a game strategy stimulates and improves minds-on, collaborative learning. Additionally, the project will explore two core issues in developing multiplayer, collaborative educational games targeted at middle school students: what typical face-to-face interactions foster collaborative learning, and what gender differences exist in how students play and learn from the game. The project will reach approximately 100 students in the Boston area, with long-term goals of reaching students worldwide, once the game has been tested with a local audience. Results of the project will yield a new educational puzzle game that can teach algorithmic thinking and effect attitude change regarding computer science. Through the process of creating a gender-inclusive game to teach computer science, it will provide guidelines for future educational game projects. Beyond these individual project deliverables, it will improve our understanding of the potential for procedural content generation to transform education, through its development of a new technique for generating game content based on supplying educational objectives.
(Project link on NSF website.)

Monday, August 18, 2014

How Small Changes in a Game's Story Can Make a Huge Difference

I recently wrote to the author of a book I love, Think Like a Programmer.  I had wanted to ask some questions related to using the book for one of our first year classes. But it turned out that V. Anton Spraul also happens to be interested in stories in games, the topic of my thesis.

Leave me alone, I'm reading.
Leave me alone, I'm reading. / Hey Christine 

We had some interesting discussion on the topic after he read our Foundations of Digital Games paper on coherent emergent stories. I thought that some of his suggestions of how this sort of system could work were so spot on, I wanted to share them here.  So, with Anton's permission, here is what he said:
So I'm intrigued by your idea, especially by how it could be employed without the player knowing -- using a "tension" value to control the type or volume of music in a scene, for example. What if a game gradually lowered tension over time outside of character interaction or combat, so that a scene would actually play differently just because the player took a long walk before a key confrontation? Cool stuff. Or a game with Bioware-style dialogue interaction where certain choices were not always present, and not because certain information had previously been discovered or not, but because of the emotional state of the player avatar at that moment, as influenced by prior events? Perhaps ultimately, a game could be made which always arrives at the same scene, but the outcome of the scene is largely controlled by prior actions in a way the player wouldn't predict--so maybe the player can only shoot the final boss if he or she is angry enough to do it. (I was let down by the endings of the otherwise brilliant Deus Ex and Deus Ex: Human Revolution because they didn't depend on anything that happened five minutes before the end of the game.)
I like the tension example especially.  We had pictured using different lighting, or camera angles, depending on the path the player took previously.  For example, maybe the ending of the game is the same either way, such as the princess returning to the kingdom after "taking care of" the threat of the nearby dragon.  Simply knowing that the player befriended the dragon and learned its behaviour was a result of it protecting its child would already cause a different interpretation of the culminating scene than if the player had slayed the dragon.  But adjustments in lighting, for example, might emphasize this.  The idea that additional small changes based on tension could reflect the urgency with which the player acted seems all the more interesting!

This kind of approach is meant to allow players to have an effect on a story's outcome without the need to create much (or anything) in the way of additional assets.  I think the potential is enormous.

Friday, August 8, 2014

Google's Report on Women in Computer Science, and What it Means for Me

A couple of months ago, Google came out with a report called Women Who Choose  Computer Science — What Really Matters.  It details a study Google conducted "to identify and understand the factors that influence young women’s decisions to pursue degrees in Computer Science." The results are important to me as someone who does a lot of outreach.

Creating A+ Schools
Creating A+ Schools / Gates Foundation

According to the study, the four most influential factors when deciding to pursue computer science as a female are:
  1. Social encouragement
  2. Self perception
  3. Academic exposure
  4. Career perception
Social encouragement comes from both family and peers.  This is one reason that I see changing someone's attitude toward computer science to be a win, even if they will never consider pursuing it themselves.  At least if someone considering CS tells that now-positive-thinking person, she is more likely to say "Oh, cool!" instead of making fun.  Also interesting is how effective it is to get encouragement in extra-curricular settings, which is great for the type of outreach I tend to do.

It's not surprising that perception of one's abilities in math influence their decision to pursue CS.  What's cool to see is a confirmation that the "ultimate source" of passion comes from a love of problem solving and tinkering.  This is one aspect of CS, along with the social good you can do, that we are hoping to convey in our Gram's House project.

The report had this to say about exposure:
Early exposure to Computer Science is important because familiarity with a subject can generate interest and curiosity while establishing a sense of competency. Moreover, even a basic understanding of Computer Science provides insight into viable career paths within the field and how those careers can be leveraged to achieve personal goals.
I constantly wonder when the best time to expose girls to CS is, especially since the study showed that age of first exposure is not an influencing factor.  Middle school seems like a good place to start, since those girls are old enough to understand some interesting problems and create things with code.  If we hook them, they can choose the right courses in high school while their interest is still fresh.  But what happens when high school rolls around? Boys, cliques, popularity, competing interests... There are so many opportunities to lose them again.  I believe middle school is a good place to start, but that we need to follow up again during the high school years to reinforce the good we did earlier on.

I also believe we could be easily integrating computer science into the school subjects everyone is already taking.  The study showed that "regardless of how they were exposed, young women who had opportunities to engage in Computer Science coursework were more likely to consider a Computer Science degree than those without those opportunities." I once put together a list of how CS Unplugged activities could be used in other school subjects.  Daniel Kimball discusses similar ideas of how CS can be integrated.  Beaver Country Day School in Boston recently integrated coding into every class.  It's not impossible, and it doesn't require a stand-alone computer science class!

Exposure can come from other avenues as well.  In terms of career perceptions, the report suggests that "visibility of female role models in Computer Science and telling stories about the positive social impact careers in computing can have, can enable young women to visualize themselves in the field." This is one of the reasons for Anita's Quilt, a collection of inspirational stories from women in tech that I help with.  The stories and role models are out there, and it's now a question of how we get them to the right people.