kids, code, and computer science code, and computer science magazine© is published bi-monthly, ......

17
The First Computors Six women were hired to program the first electronic digital computer, ENIAC, in 1945. They were called computors. PLUS: Make Kittens with JavaScript and How to Keep Your Code DRY October 2015 $9.00 USD help kids code + explore computer science Kids, Code, and Computer Science

Upload: lamthuy

Post on 21-Apr-2018

228 views

Category:

Documents


2 download

TRANSCRIPT

The First ComputorsSix women were hired to

program the first electronic digital computer, ENIAC, in 1945. They

were called computors.

PLUS: Make Kittens with JavaScript and How to Keep

Your Code DRY

October 2015 $9.00 USD

help kids code + explore computer science

Kids, Code, andComputer Science

1Find lots more to learn and do at https://www.KidsCodeCS.com

KIDS, CODE, AND COMPUTER SCIENCE / OCTOBER 2015 : VOLUME 3 ISSUE 2 ISSN: 2377-1208 (ONLINE) ISSN: 2377-1216 (PRINT)

Publisher/Editor/Webmaster: Tim Slavin Copy Editor: Madeleine Slavin Writers: Jenn Choi, Ali Hagen, Jennifer Newell, Jean-Francois Nguyen, Les Pounder, Madeleine Slavin, Tim Slavin, Emeline Swanson

Kids, Code, and Computer Science Magazine© is published bi-monthly, six times a year, online at https://KidsCodeCS.com and in print. Annual subscriptions are $15/year for online access only and $39.99/year (US) or $52/year (outside US) for print by mail plus online access. The magazine was launched as HelpKidsCode.com in August 2013.

Published by Owl Hill Media, LLC and copyright with all rights reserved except as noted. Flickr images are copyright their creators, as noted with each story online. Cover photo courtesy CoderDojo. Questions or comments? Email [email protected].

Owl Hill Media, LLC, 378 Eastwood Rd, Woodmere, NY 11598 (516) 234-0607. Periodicals postage paid at Woodmere, NY and other mailing offices.

1What is the Internet of Things?By 2020, 25 to 100 billion lightbulbs, refrigerators, cars, houses, and other objects will become smart with inter-net connectivity and software.

ContentsInternet of Things Issue // October 2015

4Operating Systems for the Internet of ThingsThe operating systems used to connect devices with the internet (and each other) are available now if you want to research and explore.

6Make Kittens with JavaScriptUse a Google Chrome web browser to learn JavaScript and make kittens.

10CoderDojoWith 750 plus groups, called dojos, in 59 countries touching the lives of 30,000 kids, this group is a fun social way for kids and parents to learn about technology.

12RustA new programming language, Rust solves many key weaknesses of C, C++, and other languages. It does so mostly by looking to older languages for solutions.

14The First ComputorsSix women were hired to program ENIAC, the first successful electronic and digital computer used in World War II. Some went on to contribute to programming history. All have mostly disappeared from history.

16How to Keep Your Code DRYDon’t Repeat Yourself (DRY) is an import-ant concept for programmers to learn. Here’s how DRY works in practice, and the reasons to use it.

20Coding Apps, Books, Board Games, and RobotsWith the holidays approaching, there are lots of fun ways to help kids and families learn problem solving. and other skills, as well as coding games and learning languages.

MORE STORIES IN THIS ISSUE

Interview with Nicky Ringland 24The Australian programmer talks about how programming fits into her life as a teacher and co-founder of a startup.

MORE STORIES ONLINE ONLY

VidCode.io: Helping Girls Learn to Code

What is an Operating System?

Learning from Data

IN EVERY ISSUE

News Wire Stories 19

Can a car talk to a house? In the future, your car might tell your house that you

are five miles away and please turn on the lights and warm up the house.

This is an example of an idea called the “Internet of Things” or IoT. Because wi-fi networks have become so common, dumb objects like re-frigerators, washing machines, and cars can include internet access with software to make use of the internet connection.

For example, if you scanned in your groceries as you put them in the refrigerator, and pulled them out for use, each item could tell the refrig-erator what it was, its expiration date, and other useful information. The refrigerator could collect and organize this information to send you. You might get emails with recipe ideas, for example, based on what food you have. Or an email with a grocery shopping list.

In the bigger less personal world, imagine water and gas pipes that notified your town when they had a leak. Or sensors in the woods that notified firefighters of a fire.

Researchers believe by 2020 there will be over 26 billion devices con-nected to the internet. Some estimate the number will be much higher, 100 billion.

The internet of things has at least these elements:

• Sensors to detects inputs from the world around them

• Software to look at sensor data then follow rules to make decisions about how to respond to data.

• Software to manage the operation of a device, called an operating system, which includes one or more sensors.

• An internet connection to transmit and receive data and instructions from other devices.

CONCEPTS

What is the Internet of Things?

3Find lots more to learn and do at https://www.KidsCodeCS.com2 Find lots more to learn and do at https://www.KidsCodeCS.com

For example, your refrigerator might have:

• A barcode scanner (sensor) to scan all food you put into it.

• Software to evaluate scanner data about food stored in the refrigerator and make decisions about expiration dates, recipes, shopping lists, and other useful tasks to save you time.

• A basic operating system to run the barcode scanner and the software evaluating data from the scanner.

• An internet connection to help the software evaluate data and follow rules to make decisions about the barcode scanner data. For example, the refrigerator might use the internet to look up recipes or email you a shopping list based on when food expires.

To communicate, every device will need its own unique address the same way every web site has its own unique address, or URL. Now imagine some-one has the unique address for your refrigerator and knows how to make the software in your refrigerator turn itself off, as a prank. Lately we have seen

how software in cars can be hacked. The Internet of Things has the same security problems to solve.

Years ago, people joked home automation meant you had to reboot your house (or car) if the software crashed. Today oper-ating systems are more stable. Google is working on Brillo, its second version of an operating system designed for objects. Microsoft, Apple, mbed, and other com-panies are adapting or creating operat-ing systems and software to make dumb objects smart and interactive.

The biggest issues with billions of objects connected to the internet is secu-rity and privacy.

For example, the Nest thermostat knows when you are in a room or not. On a hot day, the Nest thermostat might keep your place cool if you are at home. If you’re not at home, Nest might keep the temperature warmer. Information about whether or not you are home, and what days and times you have been at home, also is useful for burglars, or the police. Whether or not you have control over data collected by Nest determines how much privacy you have (or don’t have) about your daily life.

The Internet of Things has the potential to make our lives much simpler, especially the routine parts like food shopping, groceries, and calendars. But it would need to be easily controlled by each of us, and secure, to be truly useful.

By 2020, 25 to 100 billion light bulbs, refrigerators, cars, and other objects will become smart with internet connectivity and software.

Read this story online with links to more information about the Internet of Things: https://www.KidsCodeCS.com/what-is-internet-of-things

Internet of Things: ExamplesLots of devices with internet connections could provide people with useful and life saving infor-mation and perform basic tasks. Here are a few examples where you might see the Internet of Things in the near future. House

Appliances (refrigerators, bulbs)

Security

Air and Water quality

Car monitoring

Cities and Towns

Available parking spaces

Noise monitoring

Traffic congestion

Water quality

Medical

UV monitoring for sunburns

Patient monitoring

Athlete monitoring

Environment

Forest fire monitoring

Air pollution

Snow level monitoring

Flood monitoring

Radiation and Gas monitoring

Personal

Hotel check-in with phone

Bottles signal when food is expired

Clothes tap you to show directions

Clothes measure pulse rate

5Find lots more to learn and do at https://www.KidsCodeCS.com4 Find lots more to learn and do at https://www.KidsCodeCS.com

Operating Systems for the Internet of Things

There are a number of software operating systems available to run on

connected devices to provide basic services to applications.

While desktop and mobile computer operating systems are well known and stable, for example, Windows and Mac OSX, many operating systems used on connected devices are still under development with new projects appearing every few years.

Operating systems for connected devices used in the Internet of Things differ in interesting ways from desktop and mobile computers. One key problem to solve is balancing operating system complexity with all possi-ble features a connected device might need.

For example, an operating system for a wall mounted thermostat might be much smaller and provide a small set of features instead of many capa-bilities needed by a desktop computer. An operating system also might be modular with a base operating system and modules to provide specific features. Developers mix the base operating system with only the modules they need to make the operating system as small and durable as possible.

Opearting systems for devices also must work within the small hardware memory sizes available on computer chips. Manufacturers of computer chips also have developed operating systems optimized for their hardware.

Here are a few active operating systems used by connected devices if you want to explore features and how they work.

NOTEBOOKBrilloThis Google project takes the Android operating system used on phones and tablets and adapts it to work on connected devices. The primary benefit is fa-miliarity: developers who create software applications for Android can more easily create software for small devices.

RiotDespite its name, Riot advertises itself as a friendly operating system for the Internet of Things. This is an open source project with the goal of providing a write once use anywhere operating system for connected devices. The proj-ect also emphasizes small code and memory footprints to make these devices faster and more durable.

ContikiContiki also is an open source project to create a modular, power efficient, and fast operating system for connected devices. The operating system is designed, for example, to work for long periods of time on devices powered by AA batteries, as well as manage power usage while waiting for messages to be relayed out and back to the connected device.

mbedCreated by ARM, a company that makes microprocessor chips used in con-nected devices, mbed is an operating system designed as a platform to pro-vide a range of services to these devices. This project is interesting because the operating system is built to meet the needs of ARM customers who buy their chips.

In addition to these efforts, with the release of its Apple Watch, Apple also released HomeKit, a set of tools software developers can use to make devic-es smart through use of internet access. For software developers, coding for devices is similar to programming applications but they also must learn how to work with controller boards, computer chips, and other hardware.

Read this story online with links to more information about the operating systems for the internet of things: https://www.KidsCodeCS.com/iot-operating-systems

7Find lots more to learn and do at https://www.KidsCodeCS.com6 Find lots more to learn and do at https://www.KidsCodeCS.com

Make Kittens with JavaScript

A subscriber recently suggested the magazine include kid-centric tutorials for

Javascript and keeping it fun. Well, kittens are fun so JavaScript and kittens

likely meet the criteria.

This tutorial is adapted from an excellent book, JavaScript for Kids, written by Nick Morgan and published by No Starch Press, pages 7-9. Buy the book if you’re interested to learn much more about JavaScript in a way kids and non-technical people understand. This tutorial elaborates some details left out of the book, although they both work the same way.

RequirementsThe best part? You only need a Google Chrome web browser which is free and easy to find at https://www.google.com/chrome, if you don’t have it already on your computer.

Set UpTo get started, you’ll open your Google Chrome web browser, open a blank web page, and then open the coding console for the browser.

• First, open your Chrome web browser on your computer, You should see a default page with the Google search field.

• In the URL field, type about:blank and press the Enter key on your keyboard to display a blank page.

• Display the coding console. If you use Windows or Linux, hold the Ctrl and Shift keys down as you press the J key. If you use a Mac, hold the Ctrl and Option keys as you press the J key. If the console does not display, click the hamburger icon on top far right (three horizontal lines) then select More Tools then JavaScript Console from the drop down menu.

PROJECTS & PUZZLES

Your Chrome web browser should look like the screen above.

Notice the Console tab is one of many tabs, the farthest right tab in the middle sec-tion of the browser. Click the Console tab if somehow you get lost. For this tutorial, you only need to use the Console tab.

Let’s Warm UpBefore we make fresh warm kittens with JavaScript, we’ll start with a few simple math problems to show how JavaScript, the coding console, and your Chrome web browser work together.

• Click to the right of the > bracket in the middle console area. You’ll see a blink-ing cursor. The console is ready for you to enter JavaScript.

• Type 3 + 4; and don’t forget the semi-colon after the 4. Press the Enter key. Your Chrome web browser used JavaScript to calculate 3 + 4. You should see 7 in the row below the command you entered.

Repeat this process for any math calculation. For example, try these commands:120/5;24*5;

The forward slash (/) tells JavaScript to divide two numbers while the asterisk (*) tells JavaScript to multiply two numbers.

You should see this output in your console:120/5;2424*5;120

where 24 and 120 are the results of your commands to calculate 120 divided by 5 and 24 times 5.

Let’s Make Kittens!Of course JavaScript does many more important things than calculations. You also can make kittens with JavaScript. Okay, not real kittens but defnitely digital kit-tens. Here’s an example:

=^.^=

9Find lots more to learn and do at https://www.KidsCodeCS.com8 Find lots more to learn and do at https://www.KidsCodeCS.com

See how the equals signs (=) on the left and right make whiskers, the carat (^) makes ears, and the period (.) makes a nose? This is called an emoticon. You can make all kinds of neat animals, people, and other things with the keys on your computer keyboard and a little imagination.

Today, however, we will use JavaScript to make as many kittens as we want. We’ll type in some code, called a function, and then use the code to say how many kittens we want to make. Here’s how it works.

In the coding console, type this code and pay attention to spaces, capitalization, curly braces, and smooth round braces:

var drawKittens = function (howManyTimes) { for ( var i = 0; i < howManyTimes; i++ ) { console.log(i + “ =^.^=”); }};

Then press the Enter key on your keyboard to enter this function in the memory of your coding console. If you typed everything correctly, you’ll see this output in your console:

< undefined

The < bracket tells you the console has saved the function to its memory.

Now let’s make kittens! Type this command in your console:

drawKittens(5);

You should see this output:

drawKittens(5);

0 =^.^=

1 =^.^=

2 =^.^=

3 =^.^=

4 =^.^=

undefined

Type the drawKittens command with a different number to make more kittens. For ex-ample, drawKittens(5); will make five kittens while drawKittens(50); will make 50 kittens. Way more fun than using your console to do boring math problems.

How JavaScript Makes KittensOnce the novelty of using JavaScript to make kittens wears off, you might want to know how the code works. Here’s our function code again:

var drawKittens = function (howManyTimes) {

for ( var i = 0; i < howManyTimes; i++ ) {

console.log(i + “ =^.^=”);

}

};

Notice these details about our code:

• var tells JavaScript to create a variable (var is short for variable) called drawKittens then uses the equals sign (=) to say drawKittens will be a function with one input parameter called howManyTimes. When we use drawKittens, we need to tell the function how many times to draw a kitten. The left curly brace ({) marks the start of the definition of our drawKittens function while the right curly brace and semi-colon (};) marks the end of our definition.

• The for statement in the next line tells JavaScript to run some code for as long as a set of conditions are met.

• The first condition we set is var i = 0; to create a variable called i (the letter i) and add a semi-colon to tell JavaScript var i = 0 is one condition.

• The second condition we set is i < howManyTimes; to tell JavaScript how long to run this code, for as long as i is less than the howManyTimes value we use.

• Finally, the third and last condition we set is i++ to tell JavaScript to add 1 to the value of our i variable each time the code is run. Many languages use i++ to increase (increment) a counter variable in this way.

So this for statement says, in English, “run this code for as long as these conditions are met where the variable i starts out as 0, and i is less than the howManyTimes value passed into this function, and each time we run this for statement we add 1 to the counter vari-able i”

Also notice the left curly brace ({) and right curly brace (}) mark the start and end of our for statement and the code to run.

The console.log(i + “ =^.^=”); code run when the for statement is true makes our kittens. We tell JavaScript to print out in our coding console the value of the i variable plus a blank space and our kitten emoticon.

Finally, when we type the drawKittens(5); command, we tell JavaScript to use the drawKit-tens(howManyTimes) function and pass the number 5 as the value for the howManyTimes input parameter of our function.

If you want to learn more JavaScript, definitely look for the book this tutorial is cribbed from, JavaScript for Kids, written by Nick Morgan and published by No Starch Press.

Read this story online with links to more information about making kittens with JavaScript: https://www.KidsCodeCS.com/make-kittens-with-javascript

11Find lots more to learn and do at https://www.KidsCodeCS.com10 Find lots more to learn and do at https://www.KidsCodeCS.com

CoderDojo is a free after school club for kids ages 7-17 where kids, parents, mentors,

and others play with technology and learn to code. The focus is on community,

learning with peers, mentoring kids as they learn, and self-paced learning.

Led by volunteers, clubs — called dojos — are connected to over 700 dojos worldwide. While every dojo can develop their own programs, all dojos have access to Zen, an online community where people can share ideas, ask questions, and work together to help kids become comfortable with technology. If a dojo doesn’t exist near you, it’s easy to create one through the CoderDojo website.

Started in July 2011 in Cork, Ireland by James Whelton, then 18 years old, with help from Australian philanthropist Bill Liao, CoderDojo began as a way for kids to learn programming in local clubs in a fun, safe, and social environment. The clubs quickly spread to all five continents.

In 2013, the CoderDojo Foundation was created to support new and existing dojos with resources and a community platform, as well as scale CoderDojo through partnerships. The Foundation allows each dojo to pursue their local interests while ensuring all dojos are connected to their members and other dojos.

Mary Moloney, CEO of the CoderDojo Foundation explains, “Kids explore the magic behind the technology that surrounds them in their everyday

NOTEBOOK

CoderDojo

lives. They develop an under-standing of how technology works. From there they become creators of technology. They develop creativity and innovation skills and start to build apps, games, websites and even busi-ness solutions.”

There are 750 plus dojos in 59 countries around the world touching the lives of 30,000 kids.

“Kids are introduced to many types of software and hardware,” Moloney says, “Many have already developed projects relating to drones, 3-D printing, wearable technology, virtual reality and ro-botics. They are fully empowered in their own learning journeys. The CoderDojo model is child centred learning, not curriculum based. So each young person focuses on technology that inter-ests and excites them to develop projects that they choose. They also develop ancillary skills in logic, computational thinking, project mangement and problem solving, without even realising it, it’s just what you do!”

Moloney got involved with Co-derDojo with her kids, attending meetings then starting their own local dojo. She left Accenture after 23 years and having become a Managing Director. “I’d first-hand experience of the benefits and impact of Coder Dojo. When I was approached about taking up the role of CoderDojo Global CEO, I thought, opportunities like this don’t appear too often, to be involved in a movement with such a positive impact on so many young lives, would be

such a privilege and honour, so I couldn’t let it pass!”

Carola Faughnan is another par-ent involved in CoderDojo. She and her two boys got involved in a local dojo in Wexford, Ireland. When she called up the dojo to learn if it would meet in the new school term, she learned the group needed someone to run the dojo. The large number of phone calls and attendees had overwhelmed the small space offered by the Wexford Study Hub. Faughnan decided to take on managing the group. She found a bigger space and used the CoderDojo tools and lots of volunteers to share the responsi-bilities.

“Our first Coder Dojo for Wex-ford Town was on the 7th March 2014, one week before my baby was born. Just in time! I missed the second dojo as he was born on that day, but baby and I went along again the following week and I have only missed one since.”

“The CoderDojo is a community project so everyone there is really grateful, happy and energised by the whole thing. It’s a privilege to be a part of this. The other best thing; the kids are actually learn-ing and developing confidence in their abilities. We also have a few kids on the autism spectrum who are extremely smart but don’t have many social outlets. At CoderDojo, they are heroes!”

Kids also like CoderDojo. Niall, age 10, from Coder Dojo Gorey, first got involved when his dad heard about the program on the radio then mentioned it to him.

He not only had fun but he also became a mentor to other kids. “The neatest thing I’ve learned is making apps and publishing them to the Apple App Store. It was difficult and fustrating, but finally I got great satisfaction when my game was published.”

CoderDojo kids also includes lots of girls who attend their local do-jos. Mary Moloney, the CoderDojo Foundation CEO, says, “We’ve just launched a CoderDojo girls initiative to encourage further par-ticipation from girls, we currently average 30% attendance from girls but would love to further improve that.”

Getting involved is as easy as looking up your location on the CoderDojo website. If a group does not exist, CoderDojo pro-vides lots of support, ideas, and direction to help start a local group. For example, this fall (2015) an updated online com-munity hub will be relaunched. The hub connects local dojos with their members as well as all dojos with other groups around the world.

Mary Moloney adds, “We’re also launching a new suite of coding tools to help to introduce young people to multiple coding lan-guages. Everything we do is in collaboration with the extend-ed community of volunteers, of which there are approximately 5,000 at the moment!”

Read this story online with links to more information about this program: https://www.KidsCodeCS.com/coder-dojo

13Find lots more to learn and do at https://www.KidsCodeCS.com12 Find lots more to learn and do at https://www.KidsCodeCS.com

RustIn some ways, Rust is an upside down systems programming language. The develop-

ers have mostly hunted through old languages to find ideas useful to solve problems

software developers face today and mostly ignored recent research into programming

languages. Yet Rust solves many key weaknesses of C, C++, and other languages.

Rust 1.0, the first stable version of the language, was released on May 15, 2015.

What Makes Rust Special?To solve key programming-related problems in low level C and C++ lan-guages, ownership is the primary concern of Rust. Ownership helps solve critical security and runtime problems with memory management C and C++ programmers have dealt with for decades.

If you are wondering, low level languages run as close as possible to the native binary 1s and 0s used by your computer to run software. Low level languages are faster than langugaes which need extra runtime software in-cluded with their applications to convert their code to a lower level native language. C and C++ are low level languages. Python, Java, PHP, and other languages are higher level languages.

The idea of ownership is fairly simple to explain. When you write code, the programming language assigns your code to specific parts of your computer memory and indexes its location. The index makes it easy to find, process (compile), and run your code. With some languages like C and C++, it is possible for the programming language to become confused about where your code resides in memory. Connections within your code can’t be made and your program crashes.

LANGUAGE OF THE MONTH

Ownership enforces strict rules about how code is written to make it easier to manage the storage and indexing of your code in your computer memory. Which makes sense, if you think about it. A new programming language is free to solve this problem while an existing lan-guage has past code and con-cepts to deal with.

Typically, programming languag-es have used garbage collection to track use of your computer memory and delete memory no longer needed by the program-ming language as it executes your code. Rust does not use garbage collection. Instead, the Rust compiler tracks memory location and usage based on ownership and object lifetimes. As a result, the language can be embedded in other languages and used for writing low level code like software drivers and operating systems. However, Rust report-

edly runs as quickly as low level languages C and C++.

The language also is open source, like other Mozilla projects, and has a strong active community around the language. The best documentation and tutorials are on the Rust main website. If you search online for tutorials and documentation, for example, you might find a few with inaccurate information. Now that Rust is stable, anything published after May 2015 is likely accurate.

Finally, the name of the language turns out to have an amusing back story. There is no official reason for the name Rust beyond a name that can be interpreted many different ways. Wikipedia says the language is named after an amazing fungus called Rust. However, digging deeper online reveals it is simply one of many reasons for the name.

How is Rust Used?In real world terms, Rust is designed to compete with or

replace C and C++ as low lev-el languages used in computer operating systems and other applications. Rust does include concepts from a number of other languages to round out its fea-tures and how it solves common programming problems.

Rust started as a project by the Mozilla Foundation, the people who support the Mozilla Firefox web browser. They wanted to create Servo, a new web browser software engine to run Firefox, but wanted a more robust, faster, and modern language than C or C++.

Because Rust is a new language with its first stable version released May 2015, the active community around the language is developing the first libraries and people are creating their first projects to test its features.

Screenshot from RustByExample.com

Read this story online with links to more information about Rust: https://www.KidsCodeCS.com/rust

15Find lots more to learn and do at https://www.KidsCodeCS.com14 Find lots more to learn and do at https://www.KidsCodeCS.com

Frances (Bilas) SpenceBilas majored in mathematics with a minor in physics at Chestnut Hill College where she met Kathleen Antonelli, another ENIAC programmer. She was hired to work on a US Army funded project to calculate ballistics trajectories by hand. then picked as one of six women to program the ENI-AC. In 1947, she married Homer Spence, an Army electrical engineer assigned to ENIAC, and resigned to start a family.

Ruth (Lichterman) TeitelbaumAfter graduating from Hunter College in New York City with a Bachelors of Science degree in Mathematics, Teitle-baum was hired to work with Antonelli, Bartik, and other women for a US Army project. Her work led to work pro-gramming the ENIAC computer. She eventually trained the next generation of ENIAC programmers in 1948.

Adele GoldstineGoldstine wrote the first com-plete technical description for ENIAC. She also worked with Jean Bartik to convert the computer from a computer reprogrammed each time it was used to a computer that used stored instructions. She was born in New York City and attended Hunter College High School. She earned a Masters in Mathematics at the University of Michigan where she married Herman Golds-tine who was involved in the construction of ENIAC. Gold-stine taught mathematics at the University of Pennsylvania and trained some of the six original ENIAC programmers.

Marilyn (Wescoff) MeltzerA graduate of Temple University in Philadelphia, Wescoff was hired to do weather calculations for the US Army, apparently because she knew how to operate an adding machine. In 1943, she was hired to perform ballistic trajectory calculations then hired in 1945 as one of the original six ENIAC programmers, or computors. She resigned in 1947 to get married.

ENIAC (Electronic Numerical Integrator and Computer) was the first successful electronic and digital computer designed to calculate ballistic trajecto-ries during World War II. The work involved often complex math. Because the calcula-tions were considered clerical work, six women were hired to program the computer. Their title was computor. They called themselves The First Programmers Club.

The women learned to pro-gram ENIAC before they had access to the computer. They used the blueprints to define rewiring and me-chanical switches needed to calculate trajectories step by step. ENIAC weighed 30 tons, used 200 kw of power, 18,000 vacuum tubes, 1500 relays, and hundreds of thousands of resistors, capacitors, and in-ductors. The computer was 80 feet (24 meters) long.

Here are short biographies for the six original ENIAC pro-grammers plus Adele Gold-stine who wrote the original operations guide for the com-puter and trained some the programmers.

Betty HolbertonOn her first day of college to study math, a pro-fessor asked if she would be better off at home raising children. She was hired as one of the original ENIAC programmers and led the team. Holbertson went on to work with Grace Hopper developing COBOL and FORTRAN, two early critical programming languages.

Kathleen (Kay) AntonelliBorn in Creeslough in Coun-ty Donegal, Ireland, the night she was born, her father was arrested and jailed for his part in the Irish War of Independence. Released in 1924, when Antonelli was 3, he moved the family to Phila-delphia. Antonelli took every math course offered in high school and college then grad-uated as a math major. Like Holbertson, she was hired to program ENIAC. She later married one of the co-inven-tors of ENIAC, John Mauchly and helped her husband with the software designs of the BINAC and UNIVAC comput-er hardware he designed.

The First Computors

HISTORY Jean (Jennings) BartikBetty Jean Jennings majored in mathematics at Northwest Missouri State Teachers Col-lege, graduating in 1945 as the only math major. Upon grad-uation, she applied for a job with the US Army and hired to work as one of the ENIAC computors. In 1946, she mar-ried William Bartik, an engi-neer working on a Pentagon project at the university. Later, she helped convert ENIAC from manual computing – set-ting dials and changing cables – to stored program comput-ing. She also worked on the BINAC and UNIVAC comput-ers. She also documented the contributions of the ENIAC programmers and early wom-en programmers.

17Find lots more to learn and do at https://www.KidsCodeCS.com16 Find lots more to learn and do at https://www.KidsCodeCS.com

How to Keep Your Code DRY

DRY is an acronym for Don’t Repeat Yourself. It’s a critical programming concept

and skill to learn. Here’s how it works. Plus a DRY joke at the end.

Imagine you’re a programmer. Someone has asked you to write code to generate a random number between 1 and 1000. The random number is to be used by another bit of code. You sit down and write simple clean code to generate a random number:

nbr = create_rnd_nbr(1,1000)

print nbr

where create_rnd_nbr is a built in function included in the programming lan-guage which expects a start number (1) and end number (1000) to be passed into it. You assign the result of create_rnd_nbr(1,1000) to the variable named nbr then print the variable as a number to your computer screen.

A month passes, you’re busy, and they ask you to write another bit of code to generate a random number between 1 and 500 to be used by another part of the application. You could adapt the code you have to work in both cases, for numbers between 1 and 1000 and 1 and 500. But you’re busy. So you copy paste your oode and change the limit from 1000 to 500:

nbr = create_rnd_nbr(1,1000)

print nbr

new_nbr = create_rnd_nbr(1,500)

print new_nbr

Now you have two blocks of code that generate random numbers.

CONCEPTSImagine this happens a third and fourth time. You have four different blocks of code to generate random numbers. Time passes, you leave the company, and a few years later the company hires a new programmer. Someone has noticed the application generates weird random numbers. They think its the random number code you wrote.

If you’re a new programmer, you might go into the 10,000 lines of code, find where the random number is generated, then test the code, fix any problems, and be done. Perhaps the problem is the built in create_rnd_nbr function provided by the programming language has changed. You’re still learning on the job and there’s not a lot of time. You don’t realize there are three other bits of code in the application to generate random num-bers. Perhaps your fix doesn’t completely solve the problem.

If programming is a religion, using the same or almost the same code in multiple places in an application is a sin. It introduces needless complex-ity and risk of errors.

DRY is an acronym for Don’t Repat Yourself. It is one of the key con-cepts programmers try to follow as they create code. A good code review session will flag duplicate code and ask the programmer to rewrite their code to work in multiple locations.

Instead of these four blocks of code to generate random numbers:

nbr = create_rnd_nbr(1,1000)

print nbr

new_nbr = create_rnd_nbr(1,500)

print new_nbr

rand_nbr = create_rnd_nbr(100,500)

print rand_nbr

first_nbr = create_rnd_nbr(150,250)

print first_nbr

You would have this one block of code to generate random numbers for any specified range:

do_rand_nbr ( start, end )

nbr = create_rnd_nbr( start, end )

return nbr

end

And here is the code you would use to replace the four nearly idential blocks of code used to generate random numbers:

nbr = do_rand_nbr ( 1, 1000 )

new_nbr = do_rand_nbr ( 1, 500 )

rand_nbr = do_rand_nbr ( 100, 500 )

first_nbr = do_rand_nbr ( 150, 250 )

19Find lots more to learn and do at https://www.KidsCodeCS.com18 Find lots more to learn and do at https://www.KidsCodeCS.com

With DRY, if there is a problem with the way do_rand_nbr (start, end) code generates numbers, you only need to fix one location in your code, not four locations.

What happens if you need to pass three values to generate random numbers, not two? For example, you need to call do_rand_nbr like this:

nbr = do_rand_nbr ( 1, 1000, new_third_value )

instead of this call to your code:

nbr = do_rand_nbr ( 1, 1000 )

To add a third value, you would update the one code block:

do_rand_nbr ( start, end, new_third_value )

nbr = create_rnd_nbr( start, end, new_third_value )

return nbr

end

Then you would have to search for all code that calls the do_rand_nbr code block and add the new third value to pass to the do_rand_nbr code to generate a random number:

nbr = do_rand_nbr ( 1, 1000, new_third_value )

new_nbr = do_rand_nbr ( 1, 500, new_third_value )

rand_nbr = do_rand_nbr ( 100, 500, new_third_value )

first_nbr = do_rand_nbr ( 150, 250, new_third_value )

You also could set the new_third_value equal to null by default in your do_rand_nbr code block:

do_rand_nbr ( start, end, new_third_value=null )

nbr = create_rnd_nbr( start, end, new_third_value )

return nbr

end

If there is no third value passed to do_rand_nbr, the code still runs.What works best depends on how the code is supposed to work.

DRY takes extra time to design then write code. But it is time well spent to prevent errors and ensure code is easier to main-tain over time. Every serious programmer will make the time.

Also interesting: DRY helps identify edge cases where your code will need to do different things in ways that might not be obvious.

Imagine, for example, fixing the do_rand_nbr code causes problems because, in two cases, the number do_rand_nbr generates doesn’t

work with your code. Perhaps a special kind of random number is needed, or a random number is only needed in spe-cific situations in that part of your code. Using the same or similar code in four places might hide this complexity.

Writing a single block of code forc-es you to write code to identify then account for this hidden complexity. The single block of do_rand_nbr code won’t work in all four places in the applica-tion. Without DRY your code might work today but not in a few years. In other words, DRY can make you a bet-ter and more efficient programmer.

If you know a real programmer, and want to have a little fun, ask them to tell you what DRY means. When they finish, say “What?” as if you’ve not heard. If they repeat themselves as they explain the concept again, be sure to have a good laugh. And, yes, I know this is an example of dry humor. So it goes.

Read this story online with links to more information about DRY: https://www.KidsCodeCS.com/dry

Online security braces for quan-tum revolutionFrom Nature magazine, quantum computing will be able to perform so many calculations so quickly cracking current cryptogra-phy algorithms will become easy. Scientists are starting to think about how to create algorithms that can with-stand the processing power of quantum computers.

See Smart Robots Learn to Play Like Human ChildrenThis video story from Bloomberg shows how robots can learn on their own using neural networks. The story focus is on BRETT, a self-learning robot from the University of California at Berkeley.

The History of CTRL + ALT + DELETEWhat started as a quick solution for the first devel-opers of IBM computers – how to reboot quickly while testing, without triggering memory tests – proved useful to anyone using a computer.

Acer’s Arduino- based Cloud Professor kit wants to get kids into the IoTFrom Ars Technica, a review of a new software develop-ment kit that tries to make it easy for kids to program household devices.

News WireSome of the stories found online since the last issue. Stories are about coding, computer science, and how we use technology in our daily lives. Visit the news wire URL above to read all stories.

https://KidsCodeCS.com/october-2015-news-wire

Algorithms Feel Like Science, but Are Full of Human ErrorBecause algorithms are created by hu-mans, they can make mistakes, for example, indicating a person is lying when they tell the truth, or showing higher paying jobs to men and not wom-en. This article from Big Think discusses how math and com-puting are not blind. Algorithms can hide useful information from people without our knowing.

Super Mario Maker pulls the curtain back on game design’s promise and perilArs Technica reviews Super Mario Maker, an intuitive game creation tool that makes it easy for non-techni-cal people to learn game design basics.

Coding Appshttps://KidsCodeCS.com/resources/programming/education/

Coding Bookshttps://KidsCodeCS.com/coding-books-2015

21Find lots more to learn and do at https://www.KidsCodeCS.com20 Find lots more to learn and do at https://www.KidsCodeCS.com

You can learn a little software programming and have lots of fun with any number of coding apps available for your phone or tablet computer. Plus there are websites like Tynker where you can build games. And there’s also a fun service, Bitsbox, that delivers every month a bunch of games you can code and play.

Here are a few ideas to investi-gate. There are many more at the link at the top of this article.

BitsboxKids learn to code by making games on the Bitsbox.com website then play them on their phone or tablet. The games are quite clever with fun bright graphics. And it’s easy for kids to adapt the code once they figure out the game, to learn and become comfortable with code. A new box of games arrives each month.. Ages 5 and up. http://bitsbox.com

NOTEBOOK

CodeaIf you are self-sufficient, don’t mind looking up help, and like to take things apart, Codea is an iPad app to create games. You can adapt existing code or create from scratch. The app has lots of game functionality with few limits on what you can create. The experience is similar to coding with a real program-ming language. Indeed, Codea lets you code with Lua, a script-ing language often used in real world games. Ages 10+. http://twolivesleft.com/Codea/

HopscotchThis iPhone and iPad app uses blocks you drag and drop to create effects. Blocks are customized to do different things. It has a strong community of kids who often come up with creative ways to make games and have fun. Ages 5+

http://gethopscotch.com

TynkerMany US kids are familiar with Tynker in their classrooms be-cause it was developed with the help of teachers and school dis-tricts, to meet their curriculum standards. Similar to Scratch and Hopscotch, Tynker is a block language where you drag and drop blocks then configure the blocks to do things. The main virtue of block languages apply here: it’s easy and fun to move blocks around, find sprite images, and make the blocks do things. Ages 5+

https://www.tynker.com/

Move the TurtleGeared towards little kids, this game lets you move a turtle around the screen by setting di-rection and the number of steps to create artwork and solve problems. With a little help to get started, most kids will figure it out. The game teaches basic coding ideas and sets them up nicely for block languages like Scratch, Hopscotch, and Tynker. Ages 5+

http://movetheturtle.com

Swiftie, Touch Lua, Python 3.4For kids ready to code, there are phone and tablet apps that let you learn how to code with Swift (Swiftie), Lua (Touch Lua), and Python (Python for iOS). Prices are under $10 USD. Look them up in the App Store and Google Play.

Paper bound books might appear old school for software programming. However, most programmers use books to look up code snippets and confirm how a language works. Working through a book also can help parents learn programming with their kids. Here are a number of programming books reviewed in the magazine in the past two years.

Automate the Boring Stuff with PythonIf you already know Python, this book probably is not written for you. Instead, the book is written for av-erage non-technical people who want to learn how to free themselves from mundane computer tasks. This book also works great for easily bored kids interested in software and technology. It’s possible for a bright kid to think up an application — email me final scores for games my favorite team plays — then work through this book to write the code and build their application. https://nostarch.com/automatestuff

NOTEBOOK

Teach Your Kids to CodeNo Starch Press has published a book to help parents teach their kids to code. As their sub-title says, it’s a parent-friendly guide to Python programming.

The book begins by making an important point: people shouldn’t learn to code sim-ply to become programmers. Learning how programming languages work, having a little fun making your computer do things, can expose you to how technology works in our daily lives. Learning to code helps people become active consum-ers, and in many cases, creators of technology. https://nostarch.com/teachkids

Python for KidsWhy do gorillas have big nostrils? This book gives you the answer as it teaches Python in a friendly way. I found the book easy-going with the right mix of high and low level details. For example, tuples are not my idea of a kid-friendly topic but the book makes the concept easy to understand and easy to demon-strate. There are tons of examples. And the book includes lots of details about how to work with the many useful Python modules, including modules to create games. https://nostarch.com/pythonforkids

JavaScript for KidsComputers are dumb. They do only what you tell them. This book teaches kids how to use JavaScript to tell computers what to do, from drawing kit-tens to making games. It starts with a neat trick: you can code JavaScript in any Chrome web browser. That makes it easy for anyone to work through JavaS-cript code, from simple to more complicated. Kids familiar with sprites in Scratch will find the JavaScript Canvas familiar. This book is perfect for kids and anyone who wants to graduate from Scratch to a professional language like JavaScript. https://nostarch.com/javascriptforkids

Lauren IpsumNo Starch Press has re-issued a won-derful book, Lauren Ipsum, which explains computer science concepts in a fun and often wacky way similar to Alice in Wonderland. Teachers, parents, and kids will have to stop and re-read the text to realize they’ve learned a key concept used in computer science and computing. https://nostarch.com/laurenipsum

Super Scratch Programming AdventureThis book explores the cre-ative potential of Scratch. If you don’t know, Scratch is a programming language for kids with two major goals, teach kids about programming AND give kids a way to explore their creative side, reason, and work together with others. This book captures both parts of Scratch. https://nostarch.com/scratch

Board Gameshttps://KidsCodeCS.com/coding-board-games-2015

Robotshttps://KidsCodeCS.com/robots-2015

SpheroWhile they have evolved their cute round robots to celebrate Star Wars this fall, all their robots are fun, easy to use, and have a good path for kids (and adults) who want to do more. You’ll need a phone or tablet to connect to your Sphero and direct it. Sphe-ro software also includes OVAL, a C-like language if you want to learn to write code. http://sphero.com

© and ™ Lucasfilm Ltd.

23Find lots more to learn and do at https://www.KidsCodeCS.com22 Find lots more to learn and do at https://www.KidsCodeCS.com

Some of the best ways to learn about programming are through board and card games. You don’t need electricity or a computer. Here are fun games for little kids, bigger kids, and families. Playing these games as a family with younger kids also can help them more quickly un-derstand the games, more than if they were to play the games by themselves.

And don’t forget, in addition to games created to teach pro-gramming and computer sci-ence, look up chess, Go, Back-gammon, and other traditional games which are fun to play and teach problem solving and strategy skills.

Robot TurtlesRobot Turtles is a great board game with some neat extensions like an on-line community where you can create your own game boards. These games sometimes let you replace the object you direct in the game with a person like your child, or a parent, adding an-other level of fun and engagement. http://thinkfun.com/robotturtles/

NOTEBOOK

Code Monkey IslandThis board game is full of programming, mysteries, and fun for kids ages 8 and older. If played as a family, it’s likely younger kids will understand the game and have fun, too. The game uses cards to move a mon-key around the island as kids learn strategic thinking, condi-tional logic, and how to adapt. http://codemonkeyplanet.com/

Code MasterThis single player game, from the makers of Robot Turtles, has 60 levels you work through to learn programming logic. Only one path leads to the crystal and wins the game. http://thinkfun.com/codemaster

Bits and BytesBits & Bytes is a fun card game to teach kids computing skills: logic, problem solving, and critical thinking. The game is absorbing and flexible. And, like the Robot Turtles board game, you can learn the basics of programming and comput-er science without needing a computer. http://bitsandbytes.cards/

littlecodrThis deceptively simple card game for kids 4-8 lets them lay out a series of steps for their siblings and parents to follow. When they master the basic game, you can add more advanced cards. http://littlecodr.com/

codingFarmerCreated by teenagers, this Kickstarter project might be available in time for the 2015 holidays or soon afterwards. The game can be played with or with-out Java. Kids ages 7 or older figure out the game first then graduate to the Java cards. The creators also have a non-profit which teaches kids coding through their local libraries and the game reflects their experiences of what kids understand. http://mathandcoding.org/codingfarmers.html

Notable Women in Computing Card DeckA traditional card deck with the photo, name, and short biography of women who have contributed to technol-ogy instead of the usual roy-alty and pips for the number cards. They can be used to play Fish and other classic card games. The makers also offer a card with women from the Middle East and Africa, as well as posters for both cards. It’s also possible to download the poster and cards to print locally if you can’t pay $10 USD for cards or $25 USD for the posters. http://notabletechnicalwomen.org/

Giggle ChipsA set of highly creative game cards created by a mom and her young doodling daughter that teach computer science concepts in a fun visual way. http://gigglechips.bigcartel.com/

Robots are fun to build for many kids. These robots also can be programmed to move around rooms, perhaps through an obstacle course, as a fun way for kids to learn programming. They’re also fun for parents to try with their kids or for older kids to master on their own.

Dash and DotThese cute round robots from the Wonder Workshop are for kids elemen-tary school age. Kids play with them to have fun and learn about technol-ogy. The Dash and Dot robots can be programmed with Blockly, a fairly easy language to master like Scratch. With Blockly you create a step, for example, play a sound, then define the sound as a lion roar. The combina-tion of steps determines how the robot will move, when it will move, and what it will do. https://www.makewonder.com/robots/dashanddot

NOTEBOOK

KIBOA simple roll along kids toy with blocks that can be pushed into the top of the toy to control its behavior. The blocks represent simple con-cepts such as on and off. Kids use their hands to make the robot work. http://kinderlabrobotics.com/

FinchCreated by the Carnegie Mellon’s CREATE lab, this bird shaped robot is designed for computer science education. Supports a dozen pro-gramming languages so kids from Kindergarten and older can code to direct the robot. http://www.finchrobot.com/

LEGO MindstormsTake the LEGO idea — easy to snap together parts to build things — and add icon based programming, wheels, legs, and other mobile pieces and you have LEGO Mindstorms. While you can build simple robots, it’s more fun to build more complicated robots to do things and perform tasks. They can respond to touch and be controlled by a remote control. Mind-storms also includes an active online community with lots of ideas to try. http://mindstorms.lego.com

25Find lots more to learn and do at https://www.KidsCodeCS.com24 Find lots more to learn and do at https://www.KidsCodeCS.com

Nicky Ringland

By the time you read this, Australian Nicky Ringland will have added a well-earned

PhD to her list of many achievements. She is a Linguistics major who learned cod-

ing skills to further her research. I met Nicky while walking around the summer 2015

ISTE convention floor in Philadelphia. She and her friends had a busy booth for

their online programming school, Grok Learning. I asked Nicky about how she got

to where she is today, what she thinks about programming, how it fits into her pro-

fessional life, and what she thinks about women in programming. And cricket, which

is like baseball but, as Nicky points out, much less about luck and more about

consistency and persistence. Both of which happen to be key programming skills.

Tim How did you get involved in computing?

Nicky I’ve always liked computers, but didn’t really get involved in com-puting until I had finished my undergraduate university degree. Armed with an Arts Languages degree majoring in Linguistics, I decided I wanted to fix automatic translation programs like Google Translate and BabelFish. All I needed to do was learn this pesky programming thing, or so I thought! One (almost complete) PhD later, and it turns out that machine translation, and natural lan-guage processing in general, is actually quite difficult!

Tim What do you like about computing?

Nicky I really enjoy being able to solve problems with code, whatever those problems may be. Whether it’s writing a script to rename a bunch of photos automatically, writing a ‘shared shopping list’ app or an annotation tool that I can use in my research, having the abil-ity to solve problems that affect me is really rewarding. I feel like a bit of a superhero when I can create a tool that solves a problem.

I also find a lot of programming is a bit like problem solving. I’ve always loved logic puzzles, and writing code is a little bit similar. You think about a problem; try to figure out the best way to ap-proach it; simplify it down, abstract away certain features. There’s

PEOPLE

Interviewed by Tim Slavin

27Find lots more to learn and do at https://www.KidsCodeCS.com26 Find lots more to learn and do at https://www.KidsCodeCS.com

a lot of creativity that goes into crafting a beautiful, simple solution to complex problems.

Tim How did the Grok Learning booth at ISTE come about?

Nicky As a company, we’re based in Sydney, Australia, and are really involved in the Australian education com-munity. All four founders run lots of outreach ac-tivities for the University of Sydney, including the National Computer Science School, and various work-shops for ICTENSW, our local computing teachers association. This all means we’ve got our ear to the ground in terms of Aus-tralian education, which is incredibly valuable. Com-ing to ISTE was a way of talking to educators from all across the US and be-yond, and really getting a feel for whether they were facing the same challenges that educators are at home. We found the answer to that question to be a re-sounding ‘Yes’ — that deliv-ering engaging experiences with computer science is both really quite challeng-ing in a classroom setting, but also incredibly import-ant in encouraging students

to pursue further study in a computing related field.

It was also wonderful to receive an ISTE “Making IT Happen” award and get to know a few people from the global community! Australia is a little out of the way, so that was a great opportunity.

Tim What do you see as the big-gest opportunities and bar-riers to kids in general and girls in particular learning about computing?

Nicky The biggest barrier to get-ting students excited about computing is ensuring they have fun and engag-ing, authentic experiences with computer science. It’s hard to be excited about computing when all you’ve experienced is making Pow-erpoint presentations, or excel spreadsheets. But it’s a very different story when-you’ve written your very own game from scratch, or created a “Fakespeare”chat-terbot that makes up Fake Shakespeare quotes, or when you’ve written a program to solve sudo-kus, or simulate a Zombie apocalypse, or write music! We need to make sure that every student realises that computing is more than just word processing, and

NotesWhere did you grow up?I’m from Sydney, born and bred. I grew up in the city, though my parents have since moved to a small farm just north of Sydney. I’ve now become a key provider of farm eggs and fresh vegeta-bles for my friends!

Biggest MomentI’d like to think this is yet to come! I’m really proud of a lot of things I’ve accomplished, especially the ones I’ve found hardest. I have a feeling handing in my PhD will be right up there.

Favorite Programming LanguageI really like Python. It’s quick and easy to throw a script together, and I’ve written every-thing from websites to games to face recognition systems in it. In fact, a lot of my PhD code is in Python. Plus, from a teaching perspective, I love its simplicity: students can understand what every single word means, and I don’t have to say “ignore this ‘static void main’ bit here for now; it’s magic.” There’s no mag-ic, and no pesky semicolons!

URLshttps://groklearning.com/

http://it.usyd.edu.au/~nicky

http://ncss.edu.au/

that learning to code is a really important (and lucrative!) skill, whether you want to uncover the mysteries of the universe, solve global warming, or cure cancer!

As for opportunities, they really are limitless. Want to work in finance? They need a lot of software engineers! Music or film industry? Absolutely. From medical science to marine biology to robotics and beyond, every industry is becoming more and more impacted by technology. And these are just jobs that already exist! Entrepre-neurship is an amazing opportunity: to write the next killer app or become the next Zuckerberg, all you need is a computer.

Another thing worth noting is how lucrative a career in computing can be. In an Aus-tralian 2014 study, ‘Computer Science’ topped the list of graduate students who are in demand. In both the big names of technology, Google, Facebook and Apple, and small startups, top CS grads and engineers are treated like rock stars. From free food to mas-sages, ski-trips and gifts of mobile phones — not to mention stock options — the perks of being a software engineer are lavish.

But without knowing that these important, exciting, lucrative career options even exist, it’s no wonder that students, disproportionately girls and minorities, opt-out of what is a truly amazing field.

Tim How did Grok Learning happen?

Nicky Grok came about because of years of outreach activities. The four of us, two academics from the University of Sydney and two PhD students, had been running workshops, teacher training programs, on-line competitions, and other activities for several years. Teachers and students loved our programs; they just wanted more of them! So we took the plunge, two of us put our PhDs on (temporary) hold, and founded Grok, with the goal of providing high quality computer science resources that are fun, exciting, and classroom-ready. Our resources had to accessible to as many students as possible: inner city, rural, students from non-English speaking back-grounds, students who didn’t have their own computers. There are a lot of technical hurdles to allowing students to write code on machine — phones, iPads, borrowed laptops, or computers in the local library, but solving technical challenges are part of what we do!

Another big challenge has been getting our name recognised beyond Australia. We’re quite well-known in the CS education community here in Australia and New Zealand, as a result of the outreach activities we’ve run for a decade, but that reputation, and the trust our Aus-tralian teachers have in us, is quite difficult to instill in teachers who aren’t familiar with our work. Something seems to be working, though, and we’ve got more and more schools from the UK, US and even as far away as Oman signing up to use our resources.

Tim How did the Grok team happen? How did you find people?

Nicky The four of us had already been working together for several years on both aca-demic and outreach pursuits, so we were already quite good friends. We’re a great mix of strengths and skills: all with technical and education background and experience.

28 Find lots more to learn and do at https://www.KidsCodeCS.com

We’re also are all quite stubborn, somewhat perfec-tionists, and truly passion-ate about CS outreach. That mix serves us well. We’re not willing to compromise on the quality of our re-sources, and we’re all more than willing to put in the hard yards and learn new skills (e.g. accounting and finance) necessary to run a successful startup. Plus, of course, we’re all keen to live, breathe, eat and sleep com-puter science education!

Our first few employees have had the same qualities: software engineers who are passionate about computer science education, driven perfectionists who we are very lucky to happen to also call our friends.

Tim What is special about Grok Learning?

Nicky I would sum up our strengths to be threefold: our passion, our techni-cal dominance and our pedagogical background. Whenever you meet any member of the team, it’s impossible to miss how much we really do think that programming and computer science is really worth teaching, and worth teaching well. We really want to make our resources useful for teachers and stu-dents, so we’re constantly innovating from a technol-ogy standpoint, tweaking things from an education point of view, and, per-

haps most importantly, we actively seek out feedback and act on it. We work with teachers to make sure our resources are working well for them, and we use our own resources teaching school aged students to code, so we get a good feel for what works well and what we can improve on.

As for where we’ll be in a year, or three years, the sky’s the limit! We’re working with primary schools, middle and high schools and even a few different universities in Australia. We’ve got big plans for maths curric-ulum-aligned resources (because demonstrating practical uses for mathe-matical concepts taught in schools is worth doing!) and bigger “project” style courses where students learn to make stand-alone, real-world, useful projects. We really want students to move from consuming technology to creating it, and solving problems with code is a great way to start!

Tim Do you have a life beyond Grok?

Nicky At the moment, all of my spare time (and then some!) is spent writing up my PhD. When I’m not doing that, I help run the Girls’ Pro-gramming Network, run var-ious workshops at teacher professional development sessions, give talks at local geek events, compete in

hackathons, and hack on my own projects. I’m also a fan of board-games (Race for the Galaxy, Dominion and Agricola are three of my favourites) and also partial to the odd computer game.

As far as cricket goes, I was co-captain of my school’s cricket team, several years ago. My cricket coach was actually also my computer teacher, so perhaps there’s some link there! I wouldn’t say I was necessarily very good at it, though. I would prefer to go skiing any day.

Tim How would you explain cricket to Americans?

Nicky Cricket isn’t about high-risk action. It’s not a “cross your fingers and hope you’re lucky” kind of sport. It’s more an “in it for the long run” style of sport, where dedication and con-sistency of play is critical. There’s a lot of teamwork, as well. And oranges at half-time. Very important, that. For me, backyard cricket and beach crick-et are excellent variants. Remember the house rules, though: if you hit it over the fence into the neigh-bour’s yard, it’s 6 runs and you’re out!

Another fun sport is Austra-lian Rules Football (think: rugby mixed with high-jump). Failing that, there’s always the beach, and — if the weather’s not so good, there’s always coding to be done!

Read the full interview online with links to more information: https://www.KidsCodeCS.com/an-interview-with-nicky-ringland

ALGORITHMS

CODERDOJO

COMPUTORS

DRY

ENIAC

IOT

JAVASCRIPT

KIT TENS

PY THON

ROBOTS

RUST

J O P U R A O G I A

C A J E S C V F L X

O U V O C T P G I C

M Z E A D W O C I U

P A Z N S R X B T P

U F Q R I C E M O D

T S G T U A R D R R

O A H I I S C I O Y

R M X N O H T Y P C

S N E T T I K H W T

Match the Word with Its DefinitionIoT Don’t Repeat YourselfOS System programming languageRust Electronic Numeric Integrator and ComputerDRY Internet of ThingsENIAC Operating System

Find the WordsThere are lots of words in this issue. Try to find each word spelled forwards, backwards, vertically, or on a diagonal. Hint: there are lots of diagonals in this particular puzzle.

Puzzles

Do you like making your own puzzles? You can make neat ones here online: http://www.discoveryeducation.com/free-puzzlemaker/

Find lots more to learn and do at https://www.KidsCodeCS.com

“If you want truly to understand something, try to change it.”

— Kurt Lewin