Welcome to Nova – Hello World

Welcome to Hello World

This Nova award explores the world of coding or computer programming. Once you know how to code, you can teach a computer to perform programs that help you in many ways.

Tip

Is Computer Programming Hard? Not if You Have These 6 Characteristics

  1. A passion for computers

  2. Patience

  3. An interest for problem solving

  4. A desire to put things in order

  5. A love of learning

  6. A desire for efficiency

This tip is adapted from the excellent article of Lauren Elrick from Rasmussen College (the image below is also borrowed from that article).

alternate text

Warning

When completing this Award both the youth and involved adult leaders must obey all rules of Safe Scouting. This includes (1) Completing Cyber Chip training prior to starting this activity and (2) ALWAYS involve at least 2 adults in all your communications with a leader, including online. If you send an email to your counselor, always add the address of another adult leader or a parent/guardian. Never reply to a message sent by an adult leader unless another adult has been copied on the email. Report any issue to your parents/guardians!

Instructions

  1. Identify a Nova Counselor either within your unit, district, or council.

  2. This site provides you a platform for learning and you can easily follow all requirements using the navigation menu on the left.

  3. Once you have identified a Counselor, you can start working on requirements.

  4. The most important aspect in any scientific endeavor is to properly document progress. This will be done, here, using a google sheet as described in more details below.

Documenting your progress

  1. You can use the template below to report completion. To work on this Nova Award, you can also use a detailed worksheet provided by the BSA. Click here to have access. The file below is used to record approval.

  2. A template worksheet can be found here. This is a Google document. You will not be able to modify it until you make your own copy as I will now describe for you.

  3. Once you have opened the file on google doc, go to File \(\rightarrow\) Make a Copy.

  4. Save the file with the following name: Nova_designed_to_crunch_FIRSTNAME_LASTNAME

  5. You will use that file to enter your progress and share with your counselor.

  6. You can share your own copy of the worksheet with your counselor using the following procedure.
    1. Click on the SHARE button on the top-right.

    2. Click on “get link”.

    3. Send the link to your counselor.

Note

This document provides you a guide to complete the Nova award! All requirements are marked with the following symbol: \(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\). In addition, a number of fun Additional Challenges are provided in boxes for your entertainment.

If you have any question

Contact your counselor or your scoutmaster! If you have questions about the program, contact Vincent Meunier by email (as usual, make sure you copy an additional adult to all your communications with a leader!).

Requirement #1: Research and Reading

Fun fact: why is this Nova module called “Hello World”?

Answer: because writing a code that outputs “Hello World” is usually the first thing any budding programmer starts with!

Example, in Python:

print ("Hello World\n")

And the output on the screen is:

Hello World

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) Choose A or B or C and complete ALL the requirements.

  1. Watch (not less than three hours total) computer-related shows or documentaries that involve computers, coding, and/or computer-related careers. Then do the following: (1) Make a list of at least five questions or ideas from the shows you watched. (2) Discuss two of the questions or ideas with your counselor.

  2. Read (not less than three hours total) about computers, coding, and careers that involve computers. Then do the following: (1) Make a list of at least five questions or ideas from the articles you read. (2) Discuss two of the questions or ideas with your counselor.

  3. Do a combination of reading and watching (not less than three hours total). Then do the following: (1) Make a list of at least five questions or ideas from the articles you read or the shows you watched. (2) Discuss two of the questions or ideas with your counselor.

Tip

  1. Suggested reading and watching material might include the following.

  2. Movies about Programming

  3. Articles on Computer Programming

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #2: Merit Badge

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) Complete ONE merit badge from the following list. (Choose one that you have not already used for another Nova award.) Discuss with your counselor how the merit badge you earned uses coding.

  • Programming

  • Robotics

  • Digital Technology

alternate text

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #3: Basic Concepts

Tip

Getting started!

Just like for any language, you need to learn some basic vocabulary before attempting to write sentences! This is the same for computer programming. Some teachers (including me) believe in pushing this metaphor further by adopting the following procedure: (1) Learn some basic vocabulary so you can start understanding some simple commands (2) Learn by mimicking (that is: study a simple piece of existing code and modify it) (3) Learn more commands and start writing your own codes

When I teach computational sciences, I often tell my students: a good programmer is not a person who writes good codes! Rather, it is a person who can edit their codes to make them work! So, be patient and do not depair if things don’t work out the way they are supposed to at first!

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) Explore different concepts in computer programming. Discuss these programming concepts with your counselor:

  1. What is the difference between a local and global variable?

  2. What are integer, Boolean, floating point, and character data types and what values can each of these data types hold?

  3. What is a scalar variable versus an array or list variable?

  4. What are these types of control flow instructions, and how do they work?

    1. A While Loop

    2. A Do-While Loop

    3. For loop which performs a fixed number of iterations (i.e. For Loop)

    4. An If statement

  5. What is a function and when is it used?

  6. What is a parameter to a function?

  7. What is a key/value pair in a database?

  8. What is a Universal Resource Locator (URL) and where is it used??

Tip

A basic lexicon (adapted from resources from usscouts.org)

  1. Types of variables

    1. A local variable is only defined and used within one routine. A global variable is defined for the entire program

    2. Integer — a variable that holds only whole numbers (e.g. 56, 7, -4, 23)

    3. Boolean — a variable that can hold only TRUE or FALSE

    4. Floating Point — a variable that can hold any real number (e.g. 71.045)

    5. Character variable — a variable that can hold only an alphanumeric character (e.g. “A”, “G”, “&”)

    6. A Scalar variable can only hold one value. An array or list variable can hold multiple values and each value can be selected using an index. (e.g. 5, 4, 10, -3 can be held in an integer array of size 4 called X. X[3] can refer to the 3rd element of the array)

  2. Basic construct

    1. A while loop continuously executes the code held in the loop while a condition that is checked at the beginning of the loop is TRUE and it exits the loop when the condition checked at the beginning of the loop becomes FALSE

    2. A Repeat loop continuously executes the code held in the loop while a condition checked at the end of the loop is TRUE and it exits the loop when the condition checked at the end of the loop becomes FALSE.

    3. A For Loop executes the code held in the loop a fixed number of times.

    4. An If statement executes a given computer instruction or a block of instructions if a condition is TRUE. It can also execute a different instruction or block of instructions if the condition is FALSE.

    5. A function is a block of instructions which computes a result and returns the result to the calling program. A program can branch to (or call) the function and then return back to where the function was called when the function completes. A function typically computes equations needed in multiple places in the program. (e.g. a function to calculate a polynomial given an input X value.)

  3. Other concepts

    1. A parameter is an input to a function used in the computation of the result.

    2. A Key/Value pair in database programming is a set of two linked data elements which allow the programmer to use a first key data element to find a result value based on the key (e.g. FirstName -> Joan, Lastname -> Smith)

    3. A Universal Resource Locator (URL) is a set of characters which identify a resource such as a webpage or a file on the internet so a program or user may access the webpage or file.

alternate text

Programming Coding Key Vocabulary Literacy and Definitions Poster. This image obtained from the https://images.app.goo.gl/cxsi1Ne6SJE5iWgm6.

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #4: Learning to program

Note

You can easily learn the basic of programming using free online resources! For example,

  • Kahn academy is a terrific resource to learn basic programming

  • Free learning platform offered by codeacademy.

alternate text

(image obtained from this site)

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) In a programming language of your choosing, do the following:

  1. Write a program that determines if an input string of characters is a palindrome.

  2. Write a program of your choice from the following list.

    1. A program that calculates the sum of a set of input numbers

    2. A program to report the largest and the smallest numbers from a set of input numbers.

    3. A program that calculates the average of a set of input numbers.

    4. A program that calculates the factorial of an input number.

    5. A program that calculates the sum of all numbers from a user input starting number to a user input ending number.

Tip

So many programing languages! You may be surprised by the very large number of prgramming languages that exist out there. What are the most popular? Why are there different languages?

  1. Java

    • Portability: Java can run on nearly every system. Java is also the most popular Android language, so the vast majority of Android apps are built in Java.

    • Scalability: Java was built with scalability in mind

    • It has a large community

  2. The C programming language

    • C is one of the oldest, most popular programming languages, thanks to its near universal portability and early adoption by Tech’s biggest brands

    • C is also the most popular language for embedded systems in cars, electronics, and other devices

  3. Python

    • The popularity of Python has risen steadily over the past 15 years

    • Machine learning, artificial intelligence (AI), Big Data, and Robotics all rely heavily on Python

    • Python is very easy to learn and it is one of the most popular introductory language to learn!

  4. Javascript

    • Web developers love JS as it allows them to add interactive effects to web pages.

    • It is simple and quite fast as well and many web apps are completely written in JS

  5. Ruby

    • Ruby has an incredibly simple syntax that allows a developer to do more with less code.

    • Getting a web application up-and-running takes less time than in other frameworks.

    • However, a downside of Ruby is that is not scalable (that is: it has trouble handling large computing tasks even though it works great for smaller tasks)

This tip is adapted from an article posted on stackify.com. Go to the website to learn more!

alternate text

10 most popular languages in 2019 and the change in popularity compared to the previous year. The rating is called The Tiobe Index: it works like market share; the percentage is the amount of “market share” a language holds, according to stackify.com.

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #5: Writing another program

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) In a programming language that may be the same or different from the programing language used above, write a program selected from the following list. Work with your counselor to define the requirements — input from a user or from a file? Output to the screen or to a file? You may not use a GUI-based programming interface for this requirement, but a language like Python, Small Basic or Lisps (a family of powerful, syntax-light languages including Scheme or Common Lisp) would be appropriate.

  1. A program that generates a random whole number between 1 and 10 and then asks the user to guess the number. When the guess is not correct, the program tells the user that the guess is too high or too low and then asks the user to try again. The program completes when the user correctly guesses the number.

  2. A program that correctly sorts in ascending order, a sequence of at least 15 input numbers.

  3. A program that accepts input, performs a calculation on the input and produces an output based on the input. It must use a function with one or more parameters to perform the calculation.

  4. A program that takes a set of at least 15 characters from a user and then displays the string in reverse order.

  5. A program that displays an interactive webpage that accepts user input and modifies its display based on the input (See Web Lab for example)

  6. A computer game of your choosing which uses interactive characters, requires skill and reports a winner or a loser. (See Game Lab for example)

  7. Any other computer program agreed on by you and your counselor that uses both variables and control flow instructions.

Tip

What is a random number? (answers adapted from random.org)

With the advent of computers, programmers recognized the need for a means of introducing randomness into a computer program. However, surprising as it may seem, it is difficult to get a computer to do something by chance. A computer follows its instructions blindly and is therefore completely predictable. (A computer that doesn’t follow its instructions in this manner is broken.) There are two main approaches to generating random numbers using a computer: Pseudo-Random Number Generators (PRNGs) and True Random Number Generators (TRNGs). The approaches have quite different characteristics and each has its pros and cons.

Random numbers are useful for a variety of purposes, such as generating data encryption keys, simulating and modeling complex phenomena and for selecting random samples from larger data sets. They have also been used aesthetically, for example in literature and music, and are of course ever popular for games and gambling. When discussing single numbers, a random number is one that is drawn from a set of possible values, each of which is equally probable, i.e., a uniform distribution. When discussing a sequence of random numbers, each number drawn must be statistically independent of the others.

alternate text

Example of random numbers that can be generated by a computer (the image was obtained from quora.com)

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #6: Wrapping up coding

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) For the three programs you wrote for requirements 4 and 5, explain to your counselor how each of your programs works and why you chose the particular instructions and variables that you did.

Additional Challenge

Computer programming requires the understanding of the problem (which usualy requires good math knowledge), and programming skills (as we described in the introduction). However, another important aspect of programming is the handling of data. Handling of data includes their storage, organization, and representation on computers. As an additional challenge, learn more about data and how they are represented on a computer.

alternate text

Learn more about binary representation here (Image obtained from https://builtin.com/transportation-tech)https://techterms.com/definition/binary)

Tip

Here is a great article on learning to program!

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #7: Visit

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) Do ALL of the following requirements.

  1. Visit a company/school/institution where computer programs are being developed.

  2. Talk to someone there about how they use coding in their work. Write down at least five questions to ask the person you visit and review the answers with your counselor

  3. Discuss with your counselor how coding is being used at the destination you visited.

Note

What is a supercomputer?

A supercomputer is a computer with a high level of performance as compared to a general-purpose computer. The performance of a supercomputer is commonly measured in floating-point operations per second (FLOPS) instead of million instructions per second (MIPS). Since 2017, there are supercomputers which can perform over 1017 FLOPS (a hundred quadrillion FLOPS, 100 petaFLOPS or 100 PFLOPS). Since November 2017, all of the world’s fastest 500 supercomputers run Linux-based operating systems. Additional research is being conducted in the United States, the European Union, Taiwan, Japan, and China to build faster, more powerful and technologically superior exascale supercomputers (text adapted from wikipedia).

alternate text

AiMOS, one of most powerful supercomputers at a private university, built to focus on AI (artifical intelligence) research (Image obtained from Rensselaer Polytechnic Institute).

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Requirement #8: Coding @ life

\(\boxed{\mathbb{REQ}\Large \rightsquigarrow}\) Discuss with your counselor how coding affects your everyday life, and what you have learned while working on this Nova.

Note

What is quantum computing?

Computing as we know it today is based on classical physics, with data storage using a binary system as described elsewhere in this module. However, the world is really governed by the laws of quantum physics and classical physics is just a good approximation of how things work in everyday’s life. Scientists have realized that by exploiting the properties of quantum mechanics, a new ear of computing (known as quantum computing) will allow for solving much harder problems much faster. This is a topic of intense development and a nice introduction is provided below with IBM scientists.

Attention

Once you have completed this requirement, make sure you document it in your worksheet!

Other Nova modules in this series

Science

_images/logo-shoot_black.png _images/logo-lig_black.png _images/logo-splash_black.png _images/logo-minions_B.png

Technology

_images/logo-engines_B.png _images/logo-world_B.png

Engineering

_images/logo-whoosh_B.png _images/logo-upandaway_B.png _images/logo-next_B.png

Math

_images/logo-dtc2_black.png

About the author

These pages were written by Vincent Meunier, the Chair of the STEM committee of Twin Rivers Council in New York State.

Vincent Meunier is a Professor of physics at Rensselaer Polytechnic Institute. If you have any questions, feel free to contact him by email.

Note

Most of the material used here was obtained from a number of external scouting sources, including scouting.org

Note

What is this Nova module all about?

Computer programming is a way of giving computers instructions about what they should do next. These instructions are known as code, and computer programmers write code to solve problems or perform a task.

The end goal is to create something: that could mean anything from a web page, or a piece of software, or even just a pretty picture. That’s why computer programming is often described as a mix between art and science; it’s technical and analytical, yet creative at the same time. This text was adapted from What is Computer Programming?. Check out the link to learn more!

alternate text

A programmer working on developing a computer code (Image obtained from https://www.gcu.edu/blog/engineering-technology/computer-programming-importance ). Computer programming has a crucial role in our world. You would not be reading this Nova documentation without it. Without computer programming you would not be able to use your cell phone, gaming console, or smart TV. Learning the fundamentals of programming will give you a competitive edge in this technology-driven world.