/Programming-Merit-Badge

PowerPoint and Code Resources for BSA Programming Merit Badge

Primary LanguageHTMLGNU General Public License v3.0GPL-3.0

Programming Merit Badge


This repository (repo) contains everything a Counselor needs to teach a Merit Badge class except your own flare and expertise. Please feel free to edit my PowerPoint as you wish, but please keep my attribution on the title screen.

Also, please link back to this original repository https://github.com/rbaker26/Programming-Merit-Badge so users can receive up-to-date content and I get credit for the work I put into this project.

Who am I?

My name is Bob Baker, Troop 787, Orange County Council, CA. I am a current (as of 2018) Computer Science student at Saddleback College. In 2007 I joined the Scouts and earned my Eagle in 2014. Since 2010, I have been working with the Council's NYLT program while trying to help build permanent programs across the Council including this Programming Merit Badge material. My hope is this material helps lower the barrier to teaching the Programming Merit Badge, so more scouts can be introduced to the world of programming.

Who is this for?

This repo is intended for Programming Merit Badge counselors and scouts trying to earn their Badge. Contained in this repo are example programs, "Hello Worlds" and a PowerPoint outlining the requirements and key concepts of the Programming Merit Badge.

How to use this material

PowerPoints are great communication tools, but can be ineffective for small groups, under 6 scouts. If you are dealing with smaller groups, it may be a good idea to develop a more hands-on approach focused on the individual rather than the group.
Also, be cognizant of the age of your group. Programming can be tailored to the age of scouts to better communicate the message. The easiest way to do this is by tailoring the languages used. I would suggest using the following teaching rubric broken down by age...

Ages 10 - 11 (group 1)

  • Python - Hello World
  • Scratch - Temp Conversion
  • HTML + JavaScript - Name Output

Ages 11 - 14 (group 2)

  • C++ - Hello World
  • HTML + JavaScript - Temp Conversion
  • Java - Calculate Area of Shapes

Ages 14 - 16 (group 3)

  • HTML + JavaScript - String Concatenation + Temp Conversion
  • C++ - USD to MXN Conversion
  • Java - Calculate Area of Advanced Shapes

Ages 16 - 17 (group 4)

  • HTML + CSS + JavaScript - Advanced Temp Conversion
  • C++ - USD to multiple currencies
  • C# - Calculate Area of Advanced Shapes w/ Menu

Not every counselor will be knowledgeable in all these languages and that is fine. If you are not knowledgeable in these languages, using you experience, try to substitute languages and problems to match difficulty and complexity outlined above. The goal here is not inhibit the scout's learning with a language that is too complex or a problem that is too hard. On the other hand, older scouts may be bored by simpler languages and problem sets.
It is important to tailor the material to match the scouts or else the scouts will not have a enjoyable experience.

Topics to avoid

The hardest part for me when teaching this Merit Badge is teaching Programming, not Computer Science. The purpose of the Badge is not to make our scouts CS Majors overnight. They don't need to know data structures, optimization techniques, advanced language features or IEEE Floating-Point format. The scouts are simply here to get an introduction into a career in programming.

Need Help?

If you are a Merit Badge Councilor and want some help tailoring this material into a lesson for your group of scouts, please reach out to me. I am willing to help with some aspects of planning and problem solving (I am not available to teach the class remotely).

My contact info can be found on my GitHub Profile Page:
https://github.com/rbaker26