Introduction 1
About This Book 1
Foolish Assumptions 2
Icons Used in This Book 3
Where to Go from Here 3
Part 1: Getting Started with Coding 5
Chapter 1: Welcome To (Or Back To) Coding 7
Why Kids Are Coding 8
What are they learning? 8
How are they learning? 9
What does it mean down the road? 10
Why You Need to Know Coding 11
Fear and loathing (of coding) 11
You may already know more than you think 12
Where Do You Come In? 13
In the classroom 13
Camp or after-school coach 15
Mentor 16
Working with Young Coders 18
Chapter 2: Understanding the Big Ideas 19
Seeing the Big Picture in Coding 19
Acting Out the Big Picture, Unplugged 20
Dramatizing a noncoding process 21
Walking through some daily tasks 22
Creating an Algorithm 23
Turning a picture into words 23
One possible vacuuming algorithm in code 24
Representing Algorithms 26
Acting it out 27
Drawing a picture 27
Creating a storyboard 28
Building a flowchart 28
Writing pseudocode 30
Commenting the bones 31
Organizing with Sequence, Selection, and Repetition 33
Sequence 34
Selection 35
Repetition 36
Including Randomness in Your Coding 38
Chapter 3: Figuring Out Programming Languages 41
What You Want in a Language 42
Free Languages for Tots and Kids 42
The Foos 42
Think & Learn Code-a-Pillar 43
Daisy the Dinosaur 43
Scratch Jr 44
Free Languages for Youth and Tweens 45
Scratch 45
Hopscotch 47
Kodu 47
Languages for Teens and Older 48
Alice 48
MIT App Inventor 2 49
Python 50
JavaScript 53
Java 55
Other Awesome (Not-So-Free) Languages 58
MicroWorlds EX 58
Tynker 58
GameSalad 58
Part 2: Getting Your Hands on Code 61
Chapter 4: Working with Words 63
Communicating with Text 63
Showing Text Onscreen 64
Using pseudocode 64
Using Scratch 64
Using Python 65
Using HTML 66
Using JavaScript in an app 66
Using Java 68
Words In, Words Out 69
Using Scratch 70
Using Python 71
Using HTML and JavaScript 71
Using JavaScript in an app 72
Combining Text Onscreen 74
Using pseudocode 75
Using Scratch 75
Using Python and other languages 75
Formatting Text Onscreen 77
A Mad Libs Example 78
Chapter 5: Knowing Where You Are and Where You’re Going 81
Acting Out Position, Unplugged 82
Setting and Finding Position 85
Using pseudocode 85
Using Scratch to set position 86
Using Scratch to find position 87
Using JavaScript 87
Positioning Objects Randomly 93
Using Scratch 93
Using JavaScript 94
Setting and Finding Direction 95
Using pseudocode 95
Using Scratch 96
Setting Object Direction Randomly 97
Using Scratch 97
Turning 98
Using pseudocode 98
Using Scratch 98
Acting Out Motion, Unplugged 99
Making an Object Move 100
Using pseudocode 100
Using Scratch 101
Using JavaScript 103
Asteroid Blaster 104
Chapter 6: Getting Fancy with Graphics and Sound 107
Sizes of Images and Sounds, Unplugged 108
Activities surrounding images and sounds 108
Knowing your sizes 109
Using Graphics in Your Programs 109
Image file types 109
Creating images 110
Finding images on the web 111
Importing a JPEG or PNG in Scratch 114
Importing a GIF in Scratch 116
Importing a JPEG, PNG, or GIF in JavaScript 117
Adding Sound to Your Programs 117
Sound file types 118
Creating original sounds 118
Finding sounds on the web 119
Importing sounds into Scratch 120
Importing audio into JavaScript 121
Creating a Sound Board 122
Part 3: There is Math on This Test! 125
Chapter 7: Tackling These Ever-Changing Variables 127
Acting Out Variables, Unplugged 127
Variable parts 128
Dramatizing variables 130
I Do Declare (And Initialize) 132
Using pseudocode 132
Using Scratch 133
Using Python 134
Using JavaScript 135
Using Java 136
Checking on Variable Values 137
Using Scratch 138
Using Python 138
Using JavaScript 138
Using Java 140
Incrementing and Decrementing Variables 140
Using pseudocode 140
Using Scratch 141
Using Python 141
Using JavaScript 142
Using Java 142
Creating a Stock Ticker 142
Chapter 8: Computing Using Math 145
Acting Out Math, Unplugged 145
Number types 146
Dramatizing math 146
Doing Simple Math 149
Using pseudocode 149
Using Scratch 149
Using Python 150
Doing Advanced Math Operations 150
Using pseudocode 151
Using Scratch 152
Using Python 153
Oh So Mod — Using the Mod Operation 156
Using pseudocode 157
Using Scratch 157
Using Python 157
Ordering Those Operations (PEMDAS) 157
Using Scratch 158
Using Python 158
Rounding 159
Rounding via casting in Java 160
Rounding decimals to integers via methods 160
Generating and Using Random Numbers 162
Using pseudocode 162
Using Scratch 162
Using Python 163
Coding a Crypto Code Maker 163
Chapter 9: Helping with Logic Operations 167
Simple Logic, Unplugged 167
Programming Simple Conditionals 169
In pseudocode 169
In Scratch 169
In Python 170
In JavaScript 170
In Java 172
Advanced Logic, Unplugged 174
Coding Compound Conditionals (aka, AND, NOT, and OR Will Get You Pretty Far!) 176
In pseudocode 177
Compound conditionals in Scratch 177
In Python 179
In JavaScript 181
In Java 181
Rock, Paper, Scissors 182
Chapter 10: Getting Loopy 185
Loops, Unplugged 185
Repeat fun, unplugged 186
Random loop conditions, unplugged 186
Loop Types and Structures 187
Infinite loops 188
Actions repeated in loops 188
Conditions of loops 188
Using pseudocode 189
Using Scratch 191
Using Python 193
Nesting Loops 196
Using pseudocode 196
Using Scratch 197
Using Python 198
Coding the Classic Fibonacci Sequence 199
Chapter 11: Adding Lists 201
Lists, Unplugged 201
Introducing Lists 203
Using pseudocode 203
Using Scratch 205
Using Java 208
Sorting Lists 215
Selection sort: An easy sorting algorithm 215
Common application: Arranging numbers in order 216
Searching Lists 217
Linear versus binary searching algorithms 217
Common application: Finding a phone number 218
Chapter 12: Coding Subprograms 221
Subprograms, Unplugged 221
Starting with Pseudocode 223
Creating a Spirograph with Subprograms 224
Pseudocode 225
Scratch 225
JavaScript 227
Java 228
Coding Subprograms with Parameters 230
Scratch code block with parameters 230
JavaScript, with parameters 233
Java, with parameters 234
Part 4: Applying What You Know 237
Chapter 13: Fixing Problems by Debugging 239
Debugging, Unplugged 240
Finding Common Syntax Errors 242
Scoping errors 242
Typing errors 243
Incorrect data types 244
Finding Common Semantic Errors 245
Infinite loops 245
Off by one 246
Strategies for Debugging 248
Turning sections on and off 248
Testing sample data 251
Adding output messages 251
Walking Away 253
Chapter 14: Creating a Webpage 255
Getting Set Up 255
Creating a Basic Webpage Layout 261
The skeleton: HTML basics 262
The aesthetics: CSS 265
Getting Fancy with Color and Graphics 272
Adding color to your page 272
Introducing graphics 276
Adding Hyperlinks 278
Going Interactive with JavaScript 280
Adding buttons 280
Changing your page with buttons 282
Combining HTML, CSS, and JavaScript 283
Chapter 15: Building a Mobile Game 289
Getting Started with MIT App Inventor 289
Community and support within MIT App Inventor 291
The layout of MIT App Inventor 292
Using an Emulator versus a Real Device 294
Using the Android Emulator 294
Using a real Android device 295
Testing on the emulator and Android device 295
Designing Mobile Apps 302
Adding the Components in Design View 303
Coding Your Mobile App 306
Getting your puppy moving 306
Setting up your start screen and variables 308
Coding random placement of items 309
Coding collision with items 311
Levels, timers, and final score 312
Distributing Your Apps 315
Chapter 16: Programming Simple Electronics 317
Gathering Your Hardware 317
The micro:bit board 318
Buying the board and components 318
Accessing the Software 320
Navigating the interface 320
Writing and using a program 321
Don’t Wake Baby Gadget 324
Flowcharting the program 324
Writing the code 326
Downloading code to the micro:bit 333
Connecting hardware components 333
Testing the device 334
Trying Wacky and Fun Variations 335
Part 5: The Part of Tens 337
Chapter 17: Ten Do’s and Don’ts for Selecting a Kids Coding Curriculum 339
DO Find the Right Entry Level 340
Getting started in elementary grades 340
Getting started in the middle grades 341
Getting started in high school grades 341
DON’T Assume Cost Equals Quality 343
DO Balance Lessons with Free Exploration 344
DON’T Instantly Dismiss Teaching Languages 344
DO Consult CSTA for Guidance 346
DON’T Buy “Coding” Toys for Babies 346
DO Emphasize the Soft Skills 346
DON’T Let Kids Get Stuck in a Loop 347
DO Present the Bigger Picture 347
DON’T Stereotype Coders 347
Chapter 18: Ten Ways to Keep the Coding Learning Going 349
Unplugged 349
Research Pioneers of Computing 350
Go Lateral from Code 351
Language Tracking 351
Smart Home Projects 352
Include Outside Passions 352
Open-Source Projects 353
Group Projects 354
Community Support 354
Portfolios 355
Index 357