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.