The Programming Merit Badge: Your Ultimate Guide In 2021


Have you ever wondered how computers process information? I know I have! By earning the Programming merit badge, you’ll be able to increase your knowledge of computers, create some awesome programs, and potentially even jump into an exciting career path!

While not Eagle required, Programming is an extremely fun and informative merit badge that will put you one step closer to becoming the best scout you can be! Plus, great programmers can even make a ton of money in the professional world 😉 (more on that in req.6)!

If you have any Eagle-required merit badges left to earn, you also should check out my Difficulty Ranking Guide to Every Eagle-required Badge. There, you’ll also find the links to my other merit badge guides, as well as a description and summary of each badge’s requirements. I’m certain this resource will be helpful to scouts on their road to Eagle!

Also, remember that ScoutSmarts should just serve as your starting point for merit badge research. In school, we’re taught not to plagiarize, and the same is true for Scouting worksheets. Answer these questions in your own words, do further research, and I promise you’ll gain much more from every merit badge you earn!

Earning Programming will not only get you a nice new badge for your sash but some pretty practical knowledge as well. We live in an age where everything is operated with a computer, and knowing even a little programming can put you far ahead of most other people!

First, take a second to thoroughly read through each of the requirements listed below. Then, in this guide, I’ll be taking you step-by-step through each one so that you can become a programming whiz! Are you ready? Alright then, let’s start learning to program!

What Are The Programming Merit Badge Requirements?

  1. Safety. Do the following:
    1a) Show your counselor your current, up-to-date Cyber Chip.
    1b) Discuss first aid and prevention for potential injuries, such as eyestrain and repetitive stress injuries, that could occur during programming activities.
  2. History. Do the following:
    2a) Give a brief history of programming, including at least three milestones related to the advancement or development of programming.
    2b) Discuss with your counselor the history of programming and the evolution of programming languages.
  3. General knowledge. Do the following:
    3a) Create a list of 10 popular programming languages in use today and describe which industry or industries they are primarily used in and why.
    3b) Describe three different programmed devices you rely on every day.
  4. Intellectual property. Do the following:
    4a) Explain the four types of intellectual property used to protect computer programs.
    4b) Describe the difference between licensing and owning software.
    4c) Describe the differences between freeware, open-source, and commercial software, and why it is important to respect the terms of use of each.
  5. Projects. Do the following:
    5a) With your counselor’s approval, choose a sample program. Modify the code or add a function or subroutine to it. Debug and demonstrate the modified program to your counselor.
    5b) With your counselor’s approval, choose a second programming language and development environment, different from those used for requirement 5a and in a different industry from 5a. Then write, debug, and demonstrate a functioning program to your counselor, using that language and environment.
    5c) With your counselor’s approval, choose a third programming language and development environment, different from those used for requirements 5a and 5b and in a different industry from 5a or 5b. Then write, debug, and demonstrate a functioning program to your counselor, using that language and environment
    5d) Explain how the programs you wrote for requirements 5a, 5b, and 5c process inputs, how they make decisions based on those inputs, and how they provide outputs based on the decision-making.
  6. Careers. Find out about three career opportunities that require knowledge in programming. Pick one and find out the education, training, and experience required. Discuss this with your counselor and explain why this career might be of interest to you.

Safety

1a) Show your counselor your current, up-to-date Cyber Chip.

Since the internet will be your main knowledge resource when learning to program, you’ll definitely need to have a current, up-to-date Cyber Chip before getting started. After all, there are many dangers in the online world that you’ll need to be prepared for. Once you’re ready to surf the internet safely, it’s time to dive into earning your Programming merit badge!

For help earning (or relearning) your Cyber Chip, check out my Guide to the Scouts BSA Cyber Chip (Grades 6-12).

1b) Discuss first aid and prevention for potential injuries, such as eye strain and repetitive stress injuries, that could occur during programming activities.

You might assume that sedentary activities like programming can’t possibly be dangerous. However, programming actually comes with some safety risks! While none of these risks are life-threatening, spending excessive amounts of time in front of the computer can lead to the following health hazards and potential injuries:

  • Back, Neck, and Shoulder Pain: Sitting for long periods of time in front of a computer can lead to poor posture from leaning forward to look at the screen. Staying still and concentrating for long periods can also cause programmers to lock their muscles in place, leading to tension, strain, and soreness.
  • Headaches: Headaches from programming can result from either stress related to programming or from eyestrain. They often result from screen glare, trying to concentrate past a dirty screen, or too much blue-light exposure.
  • Stress: Programming requires intense focus and concentration. This can result in elevated stress levels that can negatively affect mood, sleep, and physical health.
  • Eyestrain: Eyestrain is one of the leading dangers of excessive time spent programming. Straining your eyes from programming can lead to blurry vision, a burning or itching sensation in the eyes, and dry eyes.
  • Repetitive stress injuries: Having poor posture and not taking enough breaks while programming can cause repetitive stress injuries in the hands and wrists. In severe cases, this can lead to Carpal Tunnel Syndrome and other injuries. 

If you start to experience signs of strain while programming like muscle aches, eye strain, and headaches, you can treat them by taking a light painkiller like aspirin or ibuprofen. A warm bath can also help increase circulation and reduce tension. Personally, to reduce eye strain, I wear blue-light blocking glasses (Amazon referral link) when working on these articles! 🙂

The key to avoiding the pain and stress associated with programming is to change the way you work!

Eyestrain and aches can be avoided by taking a ten-minute break for every hour you spend in front of a computer. It’s also a good idea to choose ergonomic equipment that helps you maintain a good, relaxed posture while working. 

Stay active while working too. Get up, do some stretches, or even some push-ups in-between work sessions.

I know these tips might sound obvious, but they’re super important to follow! Poor posture can actually have a huge impact on your health. By keeping these points in mind as you begin earning your Programming merit badge, you’ll be able to develop healthy computer work habits that will benefit you for years to come!

History

2a) Give a brief history of programming, including at least three milestones related to the advancement or development of programming.

Even though it only came into real historical significance towards the second half of the twentieth century, programming will only continue to grow in importance as time goes on. The art of programming ushered in the Information Age: a historical period that shifted human civilization from traditional manufacturing to creating digital products too!

Below, you’ll find a few important milestones marking key contributions to programming over the past century.

A Brief History of Programming:

DateProgramming-Related Milestones In History
January 1939The first electronic calculator is developed by George Stibitz. This laid the groundwork for computing and programming!
December 1943This is when the first electric programmable computer, called the Colossus, was unveiled. It was developed by Tommy Flowers.
October 1958Physicist William Higinbotham programs the first video game at Brookhaven National Laboratory.
April 1977Apple Computer, Inc. introduces the world’s first personal computer, the Apple II.
August 1991The World Wide Web is launched, using programming to connect computers across the world.
February 1996The IBM computer Deep Blue beats the leading world chess champion, Garry Kasparov. This was the first time a computer bested our top player in as complex a game as chess (link is to my guide on the Chess merit badge!).
June 2014First programmed artificial intelligence, called Eugene Goostman, arguably passes the Turing test for replicating human intelligence. To pass the Turing Test, in a computer keyboard conversation an AI must convince at least 30% of judges it is human. The Eugene Goostman program convinced 33% of judges. However, it pretended to be a 13-year-old Ukrainian boy which constrained the conversation.
The FutureOne day, computers may be able to replicate and even surpass human intelligence! When this happens, computers might even be able to pass the Turing test while pretending to be Americans like you and me.

If you found this timeline interesting and would like to learn more, I’d also really encourage you to look through a full timeline of computer history at computerhistory.org. You could even pick out one or two extra events to share with your merit badge counselor!

2b) Discuss with your counselor the history of programming and the evolution of programming languages

Since computing took off in the early 1950s, the languages used by programmers have continued to evolve as computers are tasked with performing more and more complex operations. From the first Short Code developed by John Mauchly in 1949, to the over 700 programming languages in use today, programming languages are used across the world on countless digital devices!

As computers evolved, the programming languages needed to become more specialized. For example:

  • C became the primary language for use in programming hardware.
  • Modern languages such as MATLAB are used for visualizations and algorithms.
  • Later programming languages, such as JavaScript, focus on object-oriented programming and are used extensively in the development of web applications. 

While I can’t get into the whole evolution of programming languages here, I’d highly encourage you to check out the informative video (13:09) below. In it, the speaker does a fantastic job of guiding you through the history and generations of programming languages!

Programming languages are always evolving and being improved upon so that we, as humans, can wield technology more effectively. With greater computing power and more data at our fingertips, only by creating new programming languages can we properly use all the tools at our disposal to positively impact our world!

General Knowledge

3a) Create a list of 10 popular programming languages in use today and describe which industry or industries they are primarily used in and why.   

There are thousands of programming languages out there. Most of them serve specific purposes while others can be written as a fun joke project by some programmers with too much free time (check out Baby Language 😛 ).

Some programming languages are optimized for certain platforms (Swift is for iOS applications) while others are great at handling certain jobs (SQL is great for databases)!

Below is a list of 10 popular programming languages that almost all programmers know about. If you’ve had an interest in programming, you could probably name a few more, but these are the ones I would recommend for you to be familiar with:

  1. MATLAB: MATLAB is an abbreviation of “matrix laboratory”. This programming language was developed by Cleve Moler at the University of New Mexico. Its primary function is numerical computing. 
  2. Objective-C: Objective-C is a programming language that was invented in the 1980s. It was the main programming language used by macOS and iOS applications until the introduction of Swift in 2014. Objective-C was first introduced to add messaging capability to the standard C programming language.
  3. Java: Ahh, good ol’ Java. Java rivals most other programming languages because of its utility. The motto of Java developers is “Write Once, Run Anywhere”. Java was originally designed by programmer James Gosling at Sun Microsystems. Many modern mobile devices run Java.
  4. Python: Here’s another super popular one. Python is a well-known programming language that was invented by Guido van Rossum in 1991. Python can be used for web development, back-end development, data science, and the creation of software applications. Python is often recommended for beginners.
  5. PHP: PHP is considered a general-purpose language for scripting that was developed by the Danish programmer Rasmus Lerdorf in the early 1990s. PHP developed freely until 2014 when the specifications for PHP were officially formalized. Facebook’s website, as well as many other web-based social media, use PHP!
  6. Ruby: Ruby is a programming language that can be used in a variety of ways. It simplifies programming, because everything written in Ruby can be treated as an ‘object’ (meaning it can have its own properties and actions). This programming language was created by programmer Yukihiro “Matz” Matsumoto in the mid-1990s.
  7. Golang: Golang (also known as Go) is the advanced programming language designed by Google programmers Robert Griesemer, Ken Thompson, and Rob Pike. Golang is responsible for running high-performance networking and processing operations. 
  8. Kotlin: Kotlin is one of the newest programming languages in use and was developed to be integrated with Java applications. Kotlin is now the preferred programming language used by developing Android programmers.
  9. Swift: Swift is a new open-source language that was developed for Apple and designed to replace the aging Objective-C programming language. Swift features many programming aspects that allow programmers to catch bugs in the software more easily. 
  10. Rust: The Rust programming language was designed by Mozilla programmer Graydon Hoare. This programming language is primarily used for concurrent cybersecurity applications and safety-critical software components.

In addition to these, there are a ton of popular programming languages like HTML, CSS, JavaScript, R, and more! If you had to learn one though, I’d say that Python (or maybe Javascript… or CSS). Whichever you decide to start on, make sure to learn the fundamentals well — Then, every programming language will be within your grasp!

In my experience, picking up a language that sounds interesting to you and working on tutorials on the internet is easily the best way to get into programming. There are plenty of resources available online (my favorites being W3Schools and CodeAccademy) which will be great for getting you started!

If learning about any of these languages interests you, I highly recommend doing some more research in your free time. Who knows, you might even learn enough to get a job using that programming language later on! There’s a lot of fun things you can build with each one of these languages, which we’ll definitely be getting into soon.

3b) Describe three different programmed devices you rely on every day.

Now that we’re living in the 21st century, almost every device you use is programmed. Besides the ones listed below, you’re interacting with computers almost all the time — even if you’re not aware of it! Nearly everything contains a computer nowadays, whether we like it or not.

The programmed devices listed below are pretty simple examples that you’ve definitely had experience with. There are certainly many more types of devices that rely on programming, but these should get you thinking about the ones that you interact with on a daily basis.

  1. Cars: Conventional automobiles didn’t rely on computers, but you’d have a hard time finding a modern car that doesn’t use computer programming modules to run its integrated drive systems.
    • Computer programming is used in cars for everything: from controlling the engine to sensing tire pressure.  
    • Many new cars use a form of Android, called Android Auto, to run their displays.
    • However, even most older cars (created within the last 20 years) have some sort of computer in them.
  2. Phones: Smartphones are one of the most common uses of computer programming in the 21st century.
    • Today, more than five billion people worldwide use mobile devices such as smartphones and tablets, which are run on advanced computer software.
    • Programming for smartphone applications is one of the fastest-growing computer science fields. 
  3. Laptops: While laptops are one of the newer pieces of technology that depend on computer programming, these devices have become a part of many people’s daily lives.
    • With a large portion of the workforce now working remotely, laptops and the programs that run them have never been more vital to the function of modern society.  

Are there any more devices that you can think of? Even though it’s not required for your badge, I challenge you to brainstorm a few more examples of programed devices that you use on a day-to-day basis!

Intellectual Property

4a) Explain the four types of intellectual property used to protect computer programs.

Intellectual property rights exist so that a programmer’s hard work can’t be freely stolen. Just like how it’s against the rules to plagiarize an essay, it’s also illegal to copy a product/idea and try to sell it yourself. In this requirement, I’ll be teaching you about the 4 main types of intellectual property protections!

If you’ll be programming and using different computer software, intellectual property laws are definitely worth knowing. Especially since violating them can carry some pretty big penalties. Here are four types of intellectual property regulations used to protect computer programs:

  1. Patents: A patent prevents other people from making, using, or selling a type of software (or any other invention) for a limited amount of time.
    • Patent owners must file their invention or technology with a patent office. 
  2. Trademarks: A trademark protects signs and logos that are associated with a product, service, or company.
    • Trademarks are designed to identify a product as a copyrighted product. Trademarks that identify services rather than products are known as service marks.
  3. Copyrights: Unlike a patent, a copyright gives a person the exclusive right to make copies of a product for a limited amount of time.
    • Copyrights are assigned to the creator of a product and are not extended to those who purchase that product.
    • You’d be violating copyright if you were to make copies of a copyrighted song, movie, or game, and gave it to your friends so that they didn’t need to buy it themselves.
    • You’ve probably seen warnings before a movie on DVD explaining the penalties if you were to violate copyright.
  4. Trade secrets: Trade secrets encompass any intellectual property that is kept secret from other companies due to their economic worth.
    • Rather than patenting a specific design or product, trade secrets protect intellectual properties that are processes (for example: formulas, patterns, instruments, and industrial practices). 

If you have any interest in law, intellectual property is an in-depth and useful subject to do some research on. People have built their entire careers around patents, copyrights, and trademarks! 🙂

4b) Describe the difference between licensing and owning software. 

There’s a big difference between licensing and owning software. When you buy a copy of a computer program, what you’ve purchased is the license to use the software. However, you don’t own it or the copyright to it (meaning that you can’t distribute it). 

In almost every case, the possession of the software’s copyright still belongs to the original developer or company who released the software. This means that whenever you buy a piece of software, you’re almost always just buying a license to use it — you don’t ‘own’ it. This allows companies to continue to license the software out to other operators. 

With a lot of software released today, you must purchase license keys in order to use the software. Those are the long strings of numbers and letters associated with nearly every piece of software. Software buyers most commonly saw this when buying physical copies of the software they used (like those on CDs/discs).

4c) Describe the differences between freeware, open-source, and commercial software, and why it is important to respect the terms of each. 

While the terms freeware and open-source software are sometimes used interchangeably, in programming, these two terms mean very different things. Unless a piece of programming software is freeware or open-source, using it without paying for it is a violation of copyright law. Those who violate copyright can be subjected to fines and even jail time under intellectual property law! :O

  • Freeware is software that is offered for operators without cost. However, it can’t be revised or reprogrammed.
  • Open-source software is another free form of software that can be openly changed by anyone.
  • Commercial software is software that is privatized and licensed out to the public. Commercial software can’t be used freely or tweaked by users without violating copyright.

Projects

5a) With your counselor’s approval, choose a sample program. Modify the code or add a function or subroutine to it. Debug and demonstrate the modified program to your counselor.

Now it’s time to actually start programming! Thankfully, sample programs aren’t hard to come by. I’d recommend talking with your counselor first and asking them what they’d suggest in terms of what program you should try out first.

If you’re interested in finding a sample program of your own and getting started, there’s no better resource than the Programming merit badge section of Scout Life (previously called Boy’s life). First though, watch this quick video (3:27) below to learn how to navigate Scout Life’s list of programming languages. After that, you’re ready to get started!

If you’re looking for my recommendation on the best programming language to get starting running your sample program with, I’d recommend Python. Python is a great beginner language because of its simple syntax. The programming language itself is pretty easily readable, even if you don’t really understand what it’s doing. 🙂

Python can run on nearly every device as well, making it extremely versatile! Below is a great video (12:36) with some sample programs in the description:

This video has a pretty good explanation of each program’s code, which should help out a lot. To make modifications in Python, simply add a few lines of code to change a function. It’s actually pretty straightforward! Even changing just a few variables can drastically impact how your program will run!

5b) With your counselor’s approval, choose a second programming language and development environment, different from those used for requirement 5a and in a different industry from 5a. Then write, debug, and demonstrate a functioning program to your counselor, using that language and environment.

I’d suggest you take a look at the programming section of Scout Life (The one I linked to in the last requirement) and select a second language that interests you. Then, take about half an hour to do a deep dive on the language and learn all you can! This will be the language you’ll use to code your second project! 🙂

If you need a bit of inspiration, consider learning Java. The video below (7:58) walks you through programming a simple Java-based dice rolling program. This is an easy program to start with since it doesn’t really take too long to code. Plus, it’s pretty straightforward to debug Java visually, which is a huge plus.

This tutorial is short and sweet, giving you an easy overview of Java and how it works on a basic level. Java is a fun language to learn, and it can do a lot. Minecraft, the original PC release, was even programmed using Java!

5c) With your counselor’s approval, choose a third programming language and development environment, different from those used for requirements 5a and 5b and in a different industry from 5a or 5b. Then write, debug, and demonstrate a functioning program to your counselor, using that language and environment.

5d) Explain how the programs you wrote for requirements 5a, 5b, and 5c process inputs, how they make decisions based on those inputs, and how they provide outputs based on the decision-making.

Alright! I don’t want to spoil all the fun, so I’ll leave these last requirements to you. 😉 Pick one more language and then it’ll be time to get your mini-project up and running!

I’d recommend trying something with CSS, or Ruby, but feel free to use whatever you’d like. Part of programming is having the initiative to learn new things whenever something interests you!

Careers

6) Find out about three career opportunities that require knowledge in programming. Pick one and find out about the education, training, and experience required. Discuss this with your counselor and explain why this career might be of interest to you. 

1. App Developer

App developers work together with technology companies to make sure that their applications run seamlessly. This involves improving apps so that they can utilize existing and upcoming technologies. In most cases, app developers will be working on phone apps.

Typically, app developers work alongside graphic designers, data engineers, and other specialists within their company to create the best possible application. They’re also often in charge of finding flaws in the app’s code. Most app developers program in C++, Python, Java, or Objective C.

2. Network Systems Administrator

A network systems administrator is responsible for setting up and managing computer networks, usually within a company framework. Network systems administrators are required to both install computer networks and monitor them for cybersecurity threats. 

Much of the coding you would do in this career would be in a command line. This isn’t necessarily the same as programming an app, as command lines tell a specific computer or system what to run. This is commonly done in Linux systems (using Bash) but Windows supports PowerShell, which is similar.

3. Software Developer/Programmer

‘Programmer’ is a very vague job title but, to this day, plenty of companies still use it. Often though, being a programmer involves a lot of coding and debugging. Programmers are responsible for building the source code used to create software applications, and are also responsible for testing and revising those codes too.

Most computer programmers have a college degree in computer science or software development. However, a degree isn’t necessary for those who are willing to learn programming languages on their own. If you can lean to code well and build an impressive portfolio of work, plenty of companies will be willing to hire you for an entry position earning over $100,000 a year!

Programming is also one of the largest growing careers with a growth rate of 17%, so there is plenty of job security in the field. 

There are a few major pros and cons to becoming a programmer:
  • Con: Programmers often have work hours and may be subjected to “crunch” overtime periods, especially in software industries with strict deadlines (like the video game industry).
  • Pro: Programmers are also able to work from home and have a better work-life balance than workers in many other fields. Plus, you have the potential to make a TON of money if you’re good.

Like any career, programming does have some downfalls. However, if you enjoy the thrill of creating something new through just your coding knowledge and imagination, this career path might be perfect for you! And, in our current digital world (link is my guide to the Digital Technology merit badge 😉 ), you’ll never be out of a job!

If you’d like to become a programmer, the options are nearly limitless! So, if programming is something that interests you, I’d encourage you to do some research on your own. Maybe even talk to your merit badge counselor or a professional about their experience in the field of programming!

Congrats on Finishing the Programming Merit Badge!

Great work making it this far! Programming is an extremely important skill, and even knowing a little bit puts you ahead of most people. You should take a second to feel proud of yourself for taking on such a challenging and rewarding merit badge!

If you found this post helpful, I’ve also written guides to many of the other Eagle-required merit badges. I’d definitely recommend checking out my complete difficulty rankings for every Eagle-required merit badge if you haven’t seen it already. 

Hope this resource helped you to learn a ton about programming and answer every requirement on your merit badge worksheet! I’m looking forward to having you back at ScoutSmarts soon because I’m constantly uploading new content to help scouts like yourself. Until next time, best of luck on your Scouting journey! 🙂

Cole

I'm constantly writing new content because I believe in Scouts like you! Thanks so much for reading, and for making our world a better place. Until next time, I'm wishing you all the best on your journey to Eagle and beyond!

Recent Content