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

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

Summary

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.

Subjects

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.

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

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 TuringAwardwinners). 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

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!

Materials

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.

Rules

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.

Example

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:

Monday, June 1, 2015

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.

Algorithms

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.