By Laker N., age 14

CodeWars is an online collection of programming challenges ranked by difficulty. It’s community driven, meaning that, though the problems require thinking, they are satisfying to complete. One problem on CodeWars that caught my attention was “Mine Sweeper” by the user myjinxin2015, a prolific creator and the second highest holder of honor, gained by solving and making the site’s code challenges. “Mine Sweeper” is a kyu 1 code challenge, the hardest on the site. (Kyu, or difficulty, ranges from 1 to 8, with 8 as the easiest and 1 as the hardest.)

Despite its ranking, I’ve always liked the idea of Minesweeper. “Mine Sweeper,” however, didn’t involve programming the game; “Mine Sweeper” is kyu 1, because the task is to program an algorithm to solve Minesweeper. Specifically, given a board configuration with a number of the squares identified, fill in the rest.

Though the problem intrigued me, I was at a loss for how to attack it. After some brainstorming, however, I came up with a rule my algorithm could apply to a board configuration to solve unknown squares. If a square has as many empty tiles around it as it needs mines to fulfill its number, then all surrounding squares are mines. If a square needs no more mines, then all unknown surrounding tiles are safe. In code, I assigned each tile the number of mines needed to satisfy its number minus the number of mines already flagged around it. This number I called the tile’s working number. For example, a tile with the number three and two flagged mines around has a working number of one: any unknown tiles around it can act as though it only needs one mine. With working numbers, a tile with number five, three mines flagged around it, and two remaining unknown tiles knows to flag all surrounding unknown tiles. I call the first rule Easy Logic, because most Minesweeper players rely on it before thinking harder.

In a collaboration with Chicago public schools and Northwestern University, Apple decided to offer free professional learning to teachers in Chicago. This will allow educators a way to bring coding and computer science into the classroom.

“Teachers make a world of difference in their students’ lives, and we owe so much of our own success to their creativity, hard work and dedication,” said Tim Cook, Apple’s CEO. “At Apple, we believe every student should have the opportunity to learn to code and we are thrilled to help provide new learning opportunities for Chicago-area teachers so they can bring coding into their classrooms.”

If you haven’t been trained yet in something like App Development, teachers can be trained with Swift course to address the national shortage of high school computer science teachers. Through citywide expansion of Apple’s Code program, there will be coding opportunities for up to 500,000 students. Chicago is ahead of the curve with computer science making it a graduation requirement.

As you know, most of the biggest companies in the world got to that point by leveraging their technology. Each company, such as Apple, is essentially a giant community of engineers and big thinkers with marketing, sales, and HR departments sprinkled in.

With all the money that Apple makes (and will continue to make), it’s important for them to invest in building this community beyond their own company. By collaborating with Chicago public schools, they will be able to hand pick the very best talent that comes out of these programs.

The Coder school is also building a community where it’s easier than ever to learn how to code. While online tutorials are great, they aren’t as impactful as having a Code Coach™ right there by your side guiding you every step of the way.

https://www.apple.com/newsroom/2018/03/apple-announces-new-effort-to-bring-coding-to-chicago-teachers/

If you’re spending time at theCoderSchool or in and around the dreamers of the tech world you’ll no doubt have heard of Augmented Reality. Snapchat may have started it in a sense while Facebook went out of the way to steal the idea but there are thousands of other companies fighting to get a piece of the action.

Snapchat and Facebook isn’t where this “story” ends but hats off to Evan Spiegal and Mark Zuckerberg for recognizing the value of it all before a lot of others. Imagine if your favorite video game played itself out off screen and in your living room and you’ll start to get a sense of what augmented reality can do.

 Pokemon Go, Augmented Reality at its finest!

Pokemon Go, Augmented Reality at its finest!

One company we’re especially excited about is Magic Leap, which started as a road trip to Austin with the question “what if computing could spill outside the computer?” This is a simple thought that a lot of us have had at some point in our lives but Magic Leap is working to make it happen.

Now the company is at the forefront of the augmented reality boom having raised $2.3 billion in funding so far. One of their recent partnerships is with the NBA and Turner with a goal of helping us move entertainment viewing from a “flat, two-dimensional experience into a vivid, three-dimensional experience.”

Imagine having a life-size Shaquille O’Neal talking in your living room (if he could fit, of course!) and that’s the type of entertainment augmented reality can bring to the table. We’re all familiar with the dancing hot dog that that captivated us through Snapchat. It won’t be too long before our entire entertainment experience is off of a two-dimensional screen and right in front of us no matter where we are.

You too can be a part of this revolution by joining theCoderSchool! Remember, coding is about more than just learning to code–it’s about changing the world for the better while advancing your skill set!

While Elon Musk is anti-Artificial Intelligence for fear it may one day turn against us, it isn’t a direct threat just yet. Right now, we’re still figuring out what it can do for the better while making exciting new discoveries along the way.

Take Google’s DeepMind, for example, which aims to “Solve Intelligence. Use it to make the world a better place.”

There are several interesting projects that DeepMind is currently working on. For example, “teaching itself parkour” for the purpose of understanding the “Emergence of Locomotion Behaviours in Rich Environments.”

What does that even mean? You’ll have to watch the video to get a good visual but to put it bluntly, you’re watching artificial intelligence learn how to run and jump!

Another way DeepMind is helping is in games. The best Go player in the world was defeated by the DeepMind AI powered “AlphaGo” which forced him to re-think his approach.

“After my match against AlphaGo, I fundamentally reconsidered the game, and now I can see that this reflection has helped me greatly,” he said. “I hope all Go players can contemplate AlphaGo’s understanding of the game and style of thinking, all of which is deeply meaningful. Although I lost, I discovered that the possibilities of Go are immense and that the game has continued to progress.”

By getting beat by AlphaGo Ke Jie, who is a master of the game, could potentially develop new strategies along the way that he never thought of. The first time a machine beat someone at their own game was when Gary Kasparov was defeated by Deep Blue in 1997. Go, they say, is much more difficult to solve than Chess and most people thought that A.I. was at least 10-years away from accomplishing this feat.

If AlphaGo can help Ke Jie think differently or more efficiently, it could help us do the same with wide scale problems such as global warming or healthcare systems. By relying on A.I. to think through situations, we’ll find new solutions to age old problems.

These simple yet eye-opening experiments will only build over time until we’re able to apply them effectively to large scale societal problems. Here at coder school we’re all about changing the world for the better. By engaging in our after school programs you’ll lay the foundation for a long, lucrative career in an exciting field such as A.I.

By Noah S., age 16

Hi! Today I’m going to be explaining graph theory, a complex algorithm used almost exclusively in object oriented languages that shines when you want to know the shortest path from something to another thing. Some applications include finding the shortest route to a location, the smallest number of moves to win a chess game, and the fastest way to solve a Rubik’s cube. Overall, graph theory has a lot of potential when applied to something large, and can really be utilized in many amazing ways. Without further ado, let’s jump right in.

Let’s try to visualize the graphs that are mainly used in graph theory. Imagine a bunch of points, with every single point connected to one or two other points. These are called nodes. Nodes are used in many other types of searching algorithms, such as linked lists and trees. Since there are two types of graphs used in graph theory, imagine these two scenarios. First imagine the same points and connections as stated above. This is an undirected graph. An undirected graph is when every line between the points is unmarked. To contrast, now imagine the same graph, but every line between the points has a direction, marked with an arrow. This shows how one node connects to another. Undirected graphs use unmarked lines to indicate that information flows both ways, while directed graphs use marked arrows to indicate information that flows only one way.

Now that we have understood what kinds of graphs exist, let’s discuss the ways they can be utilized. Commonly known as simple graphs, any graph without a clear pattern or shape, and doesn’t loop whatsoever is deemed so. Most graphs used in graph theory are simple graphs. Other types of graphs are non-simple graphs, which can be identified with their use of loops (for example, three nodes all pointing to the next node to form a triangle shape). Another type of graph is an isomorphic graph. These graphs are just simplified versions of the non-simple graph. Since many non-simple graphs end up showing some kind of pattern, usually it can be arranged to form a particular shape. Imagine a bunch of nodes all pointing to each other to form a pentagram or such.

There is one type of graph that stands out, however. It is the weighted graph. A weighted graph is just a normal graph with a catch: Every line that connects two nodes has a weight, usually an integer, of how much it “costs” to use this line. As a result, a path that connects two nodes might end up being longer than a path that goes through 4 or 5 nodes. Knowing the weight allows the algorithm to show signs of sophistication. For example, maybe you see a lot of traffic going to your destination. Weighted graphs allow you to determine the fastest route, and you may end up arriving there a few minutes earlier. Of all the graphs mentioned in this post, weighted graphs are the most complex, but the most fundamental in properly understanding and utilizing this code.

Now let’s talk about how to actually make this code work. If you have experience with linked lists or trees, or basically anything with nodes, it’s pretty simple to understand. You traverse through the graph, starting with node 1, you traverse through the graph (test out every option) until you hit your destination. Then, it calculates the fastest possible route. If weights are not present, it is simply the path with the least amount of lines. If weights are present, however, it will calculate which path has the least weight.

This is graph theory in a nutshell. There are some other small nuances and such, but knowing the stuff that I have written will set you pretty well off. Understanding graph theory will help you understand other object oriented algorithms, like trees and linked-lists (although I would start there if you have no coding experience with nodes).

Did you know you could make money as a “Bug” Bounty Hunter? Sounding like something out of a Disney movie, this role actually exists in the land of coding and programming. What is Bug Bounty Hunter?’

Bug Bounty Hunters are paid cold, hard cash to find vulnerabilities in software, web applications, and websites. Security teams at large corporations hardly have the time or man hours to find all the bugs that they have to. Instead, they reach out to private contractors for help.

A Bug Bounty Hunter spends their time breaking into and hacking things and then writing up a vulnerability report to the company. You can make thousands of dollars a year in addition to your day job finding bugs and writing reports on them.  The harder the vulnerability is to find, the more you get paid.

How do you become a Bug Bounty Hunter? Well, the first step is to learn to code of course! Hunting bugs is like finding a defect in a big old pile of pretty complex technology, so while it’s not easy, it can be rewarding.  You’ll need to understand some fairly advanced cyber security topics, but if you do and you’re finding real-world defects, you can bet that you’re going to be towards the top of the coder-chain of sought-after talent!

Often times we hear news stories about how middle class jobs are slowly disappearing and making way for the tech revolution. Automated jobs are said to be leaving workers without a way to make ends meet as they suddenly won’t be needed anymore.

This, of course, is an extreme scenario and chances are that this won’t happen and if it did, it wouldn’t be sudden or over night.

We believe that coding teaches you way more than just how to code. It teaches you how to think! It teaches you that there’s always a solution to a problem and that collaboration for the sake of one end goal can result in extraordinary creations.

With all that being said, we believe that learning to code will create more jobs instead of taking them away. An article on WIRED titled “The Next Big Blue-Collar Job is Coding” seems to agree.

“When I ask people to picture a coder, they usually imagine someone like Mark Zuckerberg: a hoodied college dropout who builds an app in a feverish 72-hour programming jag—with the goal of getting insanely rich and, as they say, “changing the world.”

It goes on to say that this isn’t entirely accurate and that “The Valley employs only 8 percent of the nation’s coders.”

The reality is, with all the new technologies, courses, and ways to learn how to code (such as after school, in-person programs), that coding is becoming more accessible for people to learn.

It’s as simple as surrounding yourself with the right people. The environment around you has a much bigger impact than you think and surrounding yourself with people who have the same goal likely will accelerate the learning process.

In Kentucky, where you hear about a loss of mining jobs, Rusty Justice cofounded Bit Source, which is a code shop that retrains coal miners into programmers. 10-years ago, no one would have ever thought that a predominantly labor focused workforce could learn how to program but they are.

“Coal miners are really technology workers who get dirty,” Justice says. In due time, there will no doubt be more examples of this across other industries. Coding is a bridge to a new lifestyle and career. Don’t believe the media hype! Coding will only create more jobs, not take them away.

This article will discuss ways to give parents and students some good ideas of how to continue making progress even when they’re not in their coaching sessions as well as helping them to make their sessions more productive. We all know what goes on during a coding session when a student is working closely with their Code Coach® learning, asking questions, and building. We’re not going to discuss those things, but instead are going to focus on what students should be doing outside of their sessions. We do understand that today’s kids are inundated with so many after school activities that sometimes it’s very difficult to do much else other than attend their actual sessions. This is fine so we’re not condemning these kids for being super busy and active. However, if a student does have time we want to make sure they’re aware of things they can do before and after their sessions.We asked a bunch of our Code Coaches® for some of their best recommendations for their students and here’s a summarized list of the top ones. 

Come Prepared

Spend time thinking about what you want to accomplish in your upcoming session. This way you won’t waste the first few minutes of your next session trying to figure out what you want to accomplish.
It will also keep your project work fresh in your mind so that you will have at the top of your mind allowing you to get right into your lesson. Don’t worry about there being a minimum amount of time you have to spend thinking about it. The more the merrier of course, but even 15 minutes prior to your lesson will help.

Pick a new project

When you’re close to completing a project and will be transitioning to a new one, spend time during the week online browsing other projects in the language that you’re working in. Look for some cool projects that would be engaging to you. This is generally a fun exercise anyway, but it will also save you quite a bit of time having to do this with your Code Coach®. There’s better ways to spend your time with your Code Coach® since you can browse projects on your own outside of your lesson. 

Practice Syntax

Syntax is certainly something that you don’t need your Code Coach® to practice. There’s plenty of online sites that have exercises for you to improve your coding syntax. It’s more guided so you can focus on your syntax more and spend more time on your logic and design while with your Code Coach®. An exmple of one of these sites is Khan Academy (www.khanacademy.org).

set goals

Always set goals. This is actually just good advice in general. Without goals, it’s always easy to lose focus. This goes for life in general, but especially when learning to code. If you set a goal, you’re more focused and your tasks at hand become more clear. It keeps you on an upward and more narrow path towards your goal. Once you achieve your goal, rinse and repeat and set another goal to accomplish.

visualize and write things down

To help you in achieving your goals, one helpful tip is to visualize it and write them down. Visualization helps you get comfortable and gives you confidence that you can do it. The exercise of writing it down gives you more commitment towards achieving it. So use both of these to your advantage. Each are simple to do and doesn’t take much time at all and we promise they will help you reach your goals much faster.

 

 

Build fundamental skills and Project Prep

No matter how good you are, there’s always room to improve in your fundamentals. A great example is if you’re younger and not yet proficient at typing, work on your typing skills. There’s plenty of online typing sites which you can do for free. If improving your fundamentals is too boring for you, work on some of the extra-curricular items for your project such as the images and sprites. Browse for some fun images or use online editors to build your sprites.

Summary

In Summary, always try and use your time wisely. If you have some spare time in between your lessons there’s so many things that you can be doing to continue your progress and to allow for your Code Coach® to focus on more critical things during your lessons. And remember, even if it’s just 15 minutes of free time that you have, you can still use it to your advantage.

By Camille D, age 16

Create comprehensive websites simply by dragging and dropping, using Anvil – a Python-based service that takes a multifaceted approach to full-stack web development.  Even with other platforms such as Squarespace and Weebly dominating the ecosystem of drag and drop-based web development, Anvil provides a direct path for users to not only master the art of website creation, but also actively learn the Python language.

Anvil was built by Meredydd Luff and Ian Davies with simplicity and efficiency in mind—using Anvil, all the time it takes to learn the cornucopia of languages typically employed in web development (HTML, CSS, PHP, SQL, etc.) can be eliminated.  Anvil was also designed for users of any level of experience with Python—aspiring developers may learn Python concurrently while using the service.

With its abundance of resources and manuals, Anvil’s teaching algorithm passes all tests.  Anvil’s video tutorials1 each give comprehensive procedures on how to use their features, from their multi-user app capabilities to business analytics.  For those like myself, however, who believe in the worked-example effect, the service also introduces an array of premade templates2 with which users can experiment and learn the ropes of building web features with Python.  An Anvil-specific code documentation3 is also accessible through the main page, pictured below, and is structured with an introduction on using Python for the site and a brief set of instructions for each module, component, and function.

UI design in Anvil both starts and ends in its online IDE, whose facilities streamline the workflow of both front and back-end development.  Among the most convenient features of this IDE is its toolbox from which all the fundamental web components such as links, calendars, and text, are dragged and dropped.

Learning to code can open up a lot more doors for you than a lot of other careers. Because of that, you’ll have way more options than you would in many other careers. Companies will pay more and you’ll have your pick of where you want to live. Some cities or states pay a lot more than others but where do they pay the most?

 Seattle, WA Seattle, WA

The rankings, courtesy of Glassdoor:

  • Seattle, WA: With a real adjusted salary of $105,735 and 4,205 job openings.
  • San Jose, CA: With a real adjusted salary of $100,989 and 2,017 job openings.
  • San Francisco, CA: With a real adjusted salary of $99,751 and 2,232 job openings.
  • Madison, WI: With a real adjusted salary of $97,236 and 105 job openings.
  • Raleigh, NC: With a real adjusted salary of $94,142 and 416 job openings.

It’s no surprise to see San Francisco and San Jose near the top. Seattle reigns as the highest but isn’t too far ahead of either San Jose or San Francisco. The two biggest surprises are Madison, WI and Raleigh, NC.

Of course, you don’t have to move to those cities. The cost of living is higher and some coders elect instead to live in a city with lower cost of living.  The moral of the story, if you can code, you might have a high paying job waiting for you!