{Kids: Code} Issue #26

Tips, Tricks, Tools, & More!

Welcome back to the final edition of {Kids: Code} Weekly! It’s a bit of a sad occasion as we say good-bye to our newsletter, but we wanted to ensure that any aspiring programmers are left with a wonderful assortment of resources to help them on their journey. That’s why we’re dedicating this entire last issue to highlighting plenty of ways to learn and get inspired!

If you have any questions or concerns, you can always reach out to us or get in touch on our Twitter!

To start, one of the best ways to learn anything is to get involved with others who are learning it too. Code Club is one way of doing this by creating a global community of programmers who get to meet one another and share and build their ideas. You can read more about how to get involved with a Code Club by clicking the link above!

As always, you can check out Code.org for a wide variety of ways to learn! With articles and features on just about everything relating to STEM as well as courses to help guide you through different programming languages, this is one of the premiere ways to keep yourself on track.

For anyone who has an iPhone, an iPad, or even a MacBook, Swift Playground is a fun way to test yourself by creating your very own apps! We’ve talked a bit about how to program with the Swift language in the past so we like to always point our readers to this app so that they can keep learning by doing.

Maybe you want to dabble in some books as well, though? We’ve got plenty to share with you today! HTML to React: The Ultimate Guide is a comprehensive guide to web development, illustrations, homework examples, and more.

If you’re ever interested in the field of artificial intelligence (AI) and machine learning (ML), this is a fantastic place to start. Machine Learning for Kids is written by an IBM programmer who worked on Watson, a world-famous AI and is designed to make such a big subject into something very easy-to-understand.

For something more on the engineering side of computers, Scrappy Circuits is a fun way to experiment with electrical circuitry without having to spend a lot of money on expensive gadgets and toys. Definitely check this out if you want something more “hands on” when it comes to machines and computers!

For anyone interested in reading more about women in the fields of STEM you can check out WeAreTechWomen’s list of recommended books that deal with gender bias, social media, and even a little bit of history as well. Some of these books are a bit more mature so take a look at these when you feel that you are ready!

It wouldn’t be a list without including ourselves on it! You can rest easy knowing that you also have full access to the archives of our newsletter, meaning that issues #1 to #26 will be available for your reading pleasure. You can check them out here!

Before we go…

Now that we’re at the end of {Kids: Code}, we want to give a big thanks to anyone and everyone who has read and kept up with our weekly publications. It’s always an exciting feeling to help others find joy and passion in something new and we hope that we were able to do that for someone out there. There are many ways to learn and many things to build, so you can rest assured that one day you’ll see the next thing we’ve built - hopefully, something as educational and accessible as this newsletter.

Until next time!

  • The {Kids: Code} Team

{Kids: Code} Issue #25

Tips, Tricks, Tools, & More!

Welcome back to another edition of {Kids: Code} Weekly! This week we’re going to touch on a topic we’ve covered previously and that’s “accessibility.” What does accessibility mean and how does computer programming play into it? Well, read on to find out! Be sure to also check out our “News & Updates” section below for information on the future of our {Kids: Code} newsletter.

Want to reach out to us? You can contact us here or check us out on Twitter!

For our final tutorial, we wanted to talk about one important piece of coding that can be overlooked some times: accessibility. What's accessibility? It means providing alternative interfaces for users who might need assistance.

You may know someone who has impaired vision or blindness, or who has impaired hearing or deafness. They use technology too, just sometimes with different approaches. For instance, someone with impaired vision might use what's called a screen reader that allows them to listen to a spoken form of content. A person with impaired hearing might need subtitles, which allows them to read the content of a video.

Let's take a look at one easy way we can make our websites easier for visually impaired users.

Alternate Text Content

When you're placing an image on a website, you might use the following tag:

<img src="/path/to/my/image.png" />

That displays an image, with no real styling or changes. The problem is that a screen reader cannot tell what the image is, and so they can't tell a user anything about the image. We can add a special alt attribute to this to enable it:

<img src="/path/to/my/image.png" alt="A description of this image" />

Now a screen reader can tell a user more about the contents of the image! alt is one of the easiest changes you can make to your websites to enable accessibility for users who need it. You can do more with HTML, too (specifying aria attributes will sometimes work even better).

Ultimately, the biggest takeaway here is that technology should work for users, and it should make their lives easier. Some users need a little extra work to make this happen, but with a little bit of alt attribute magic, we can get there.

Some Sad News

We've had to make the unfortunate decision to wind down publication of {Kids: Code}. Next week's issue (#26) will be our last.

Why are we stopping? Well, it hopefully goes without saying that we've loved being invited into your inboxes each week, and we love teaching kids how to code. It's hard to compete with the sea of great tutorials for learning to code - services, books and more - and we were unable to find the level of reader support that would sustain publishing this week over week.

Next week, we'll devote our entire final issue to providing links and pointers to safe, helpful places where kids can safely continue to learn how to code. All of our past issues will remain available in archived form for any readers who found them helpful.

We hope your coding journey continues, and we thank you so much for letting us be a part of it.

  • The {Kids: Code} Team

This Week’s Vocabulary Word

Accessibility

Technology that provides alternative interfaces - audio, video captions, and more - for users who might need assistive technology.

{Kids: Code} Issue #24

Tips, Tricks, Tools, & More!

Welcome back to another edition of {Kids: Code}, the free weekly coding newsletter! Last week we talked a bit about something called “encryption,” and this week we’re going to now get to know the opposite - “decryption.” We also have a bunch of stories from programmers making creative and inspiring works that we hope can inspire you as well.

Want to reach out to us? You can contact us here or check us out on Twitter!

Welcome back to part 2 of our mini encryption breakdown! Last week, we walked through what encryption is - and we built a small script to show you how it works. This week we're going to keep it short and sweet - let's look at how to decrypt (or undo) the encryption we did last week.

What is Decryption?

Decryption is just the inverse (or opposite) of encryption: if encryption means we're hiding something, decryption means we're showing it.

Last week, we built ourselves a mini toy encryption script:

KEY = {     
    "A": "Z",     
    "B": "C" 
}  

text = "BANANA" 
encrypted_text = ""  

for letter in text:     
    uppercase = letter.upper()          
    
    if uppercase in KEY:         
        encrypted_text += KEY[uppercase]     
    else:         
        encrypted_text += uppercase  

print(encrypted_text)

With the above code, BANANA would become CZNZNZ - our cipher (or key) replaces B with C and A with Z. Building a decryption script doesn't actually require too many changes - in fact, for this basic example, we can just invert our key, like so:

KEY = {     
    "Z": "A",     
    "C": "B" 
}  

text = "CZNZNZ" 
decrypted_text = ""  

for letter in text:     
    uppercase = letter.upper()          

    if uppercase in KEY:         
        decrypted_text += KEY[uppercase]     
    else:         
        decrypted_text += uppercase  

print(decrypted_text)

Take a look at our KEY variable - our new script just has to swap the letters back, and then it's good to go!

Your Own Keys
Did you try adding your own letters to KEY? Remember, you can build your own special key to make your own special hidden messages!

This week at {Kids: Code} we wanted to take the opportunity to share some great projects from around the Internet that showcase the creativity that aspiring coders have! For example, check out this solar system app created by a student using Code.org. You can play around with it and even check out the code that was used to build it.

Another project is actually from a student project aiming to make a game! This team built a prototype for an alternative controller - one that a person with physical disabilities would be able to use. You can see it in action below!

And lastly we have a story out of Houston, Texas where a robotics team faced a tense situation that could’ve cost them their competitions due to a missing phone. You can read about the rookie team from Carver High School here and see where they got their beginnings and how they made it out of their unexpected challenge.

Stanford’s A.I Grading Tool

Computer scientists at Stanford University have built an AI (artificial intelligence) tool to make grading students’ homework a whole lot easier. This was done through machine learning where the tool was taught about all the different problems that students receive on their homework, but the problem that professors faced was that homework assignments and tests change all the time. This is where “meta-learning” came into play - the process of a machine learning about a lot of things with little information.

You can read more about this exciting development here!

This Week’s Vocabulary Word

Decryption

The act of revealing some data that was previously encrypted (a message, image, or anything else) with a key or cipher.

{Kids: Code} Issue #23

Tips, Tricks, Tools, & More!

Welcome back to another edition of {Kids: Code}, the free weekly newsletter to help you on your coding journey! This week is a bit of a short one, but that doesn’t mean the it isn’t still important, does it? We’re gonna go over what “encryption” means first before telling you about Code.org’s “App Lab” and a few great and fun games to teach you more about the wonders of CSS.

Want to reach out to us? You can contact us here or check us out on Twitter!

Have you ever watched the news and seen the word encryption thrown around? It's a big topic of discussion these days - and may sound scary at first! However, understanding encryption is easier than you might think. We thought we'd take the next two issues and go over how to build your own basic encryption and decryption code! This way, you can better understand the technology debates happening around you (and maybe pass some coded messages to friends).

What is Encryption?

Encryption is the act of taking some data (such as a message) and encoding it with another piece of data (a cipher, or a key). The extra data means that whoever is receiving the message would need the cipher in order to read it! Encryption algorithms have a long and storied history, but for the sake of an example, we'll build a very basic one ourselves. Ours will do what's called a substitution cipher - swapping letters around so our message isn't readable unless you know what to swap back (using the key).

Encrypting

Let's first build our key for what letters should be swapped. In Python, we can use a Dictionary for this task (in other languages, you'd most likely use a Map or Object):

KEY = {     
    "A": "Z",     
    "B": "C" }

In our Dictionary above, we've set A to be swapped with Z and B to be swapped with C. Now let's take a look at encrypting a message!

KEY = {     
    "A": "Z",     
    "B": "C" 
}  

text = "BANANA" 
encrypted_text = ""  

for letter in text:     
    uppercase = letter.upper()          

    if uppercase in KEY:         
        encrypted_text += KEY[uppercase]     
    else:         
        encrypted_text += uppercase      

print(encrypted_text)

In this code, we step through our word (BANANA) and check to see if our key has a replacement to use. If it does, we add that letter into our encrypted_text. If not, we just use the existing letter.

A fun exercise
Get creative! You can build out the KEY to have more letters. Make your own cipher and have fun!

If we run our code, we'll see the encrypted form of BANANA is CZNZNZ. Curious how we decrypt it? Come back next week and we'll go over the decryption side!

Code.org has put together something called the App Lab - a place where you get to use your Python know-how to build apps! The great thing is that you can choose whether to use block coding or text coding, and even take some sample apps they have and try to “remix” them to make them even better. App Lab works in all modern browsers and is a great way to flex your Python skills at home or in the classroom. [Recommended ages 13+]

Learn CSS by playing games!

Twitter user @heyOnuoha has put together a great list of games that teach you to code in CSS by playing them! Sometimes the best way to learn something is to make your brain think that you’re not actually learning it - you’re just having fun. You can click the link above to see the thread, or check out the Tweets directly below!

This Week’s Vocabulary Word

Encryption

The act of encoding some data (a message, image, or anything else) with a key or cipher.

{Kids: Code} Issue #22

Tips, Tricks, Tools, & More!

Welcome back to another edition of {Kids: Code} Weekly! This week we’re going to take a look at debugging, a topic we talked a little bit about last week. Later on, we have some great new lessons to stretch your Scratch creative limits and test your knowledge about AI. All that and more below!

Want to reach out to us? You can contact us here or check us out on Twitter!

Last week, we took a look at Swift Playgrounds - a new and fun way to code in Swift for iPads, iPhones, and Macs. One of the things we talked about briefly was "debugging", or how we could use the language and editor to better understand when something is wrong. This week, we'll take a quick look at some debugging patterns you can use in other languages. Debugging is a skill that can serve you well both inside and outside of coding, so give it a shot!

Android? Eagle eyed readers may note that we were originally planning to run an Android tutorial that's similar to Swift Playgrounds. Unfortunately, scheduling issues over the past week prevented us from getting to it - but it's still on our list to do, don't worry!

Print Debugging

The first trick we'll go over may sound obvious to some readers, but it's a useful trick that even veteran coders will use: just print something to your screen with each step!

For example, let's say we've got a loop that we want to better understand: we know it's going to have some values, but we may not know what exactly. This is where our print statement comes in handy:

Python:

values = [1, 2, 3, 4, 5]  

for value in values:     
    # Multiply by 10     
    value = value * 10          

    # We want to know when we hit 3, 4, and 5 - so check if     
    we're past 30, since     
    # we're multiplying by 10 above     
    if value >= 30:         
        print('Past 30!')

Here, we put our print function behind an if loop - but you can put as many print statements in your code as you need to debug!

JavaScript If you're writing JavaScript, the common print mechanism in that language is console.log().

Breakpoints

Many editors and coding environments support another type of debugging, known as breakpoints. A breakpoint is often set one of two ways:

In both cases, you get to see your code as it's running. Your browser is capable of this too! If you open an Inspector (right click -> inspect element on any page), and navigate to the Sources tab, you can set breakpoints in most JavaScript files. Give it a shot and reload a page, and see how the code pauses there to inspect further. You can run this with your own code, too!

Some folks at Harvard have put together a special series of lessons for those Scratch users who want to really flex their creative muscles. With “Getting Unstuck” you’ll be going through 10 modules that help you when you hit writer’s block with your code where you just don’t know what to make. You can check out the video above to get an idea of what it’s about - and if you’re still interested, you can get started by going here!

Introducing artificial intelligence and machine learning from Code.org!

Recently, Code.org has put together a brand new module that teaches artificial intelligence (AI) and machine learning (ML) for middle school students! These lessons teach you about how these technologies are important to our world and how they are able to identify and help solve complex problems that are all around us.

You can read more about this new lesson plan here, and if you’re ready you can check out the module for yourself by clicking here.

For the Parents

Back in June, a great article (which you can read here) was submitted to the Journal of the Data Visualization Society that highlighted the author’s experiments with helping her child visualize data with practical, everyday items. Using animal toys, colored candy, and more, she had her son group them based on different categories and map them out accordingly.

In a way, many of the lessons we’ve been featuring in {Kids: Code} deal with data visualization. For example, when we talk about “arrays” and “sorting” we’re talking about certain ways to organize a list of items we have. Sometimes when it comes to wrapping your head around a tough computer science problem, finding a different way to approach it is the key!

This Week’s Vocabulary Word

Debugging

The art of reasoning about why a chunk of code is executing the way it is.

Loading more posts…