Answers.Body: <h1>Introduction</h1>
  <blockquote>
  <p>Read the question; these Educational Materials are for Children under age 16.</p>
  <p>Do use overly sophisticated in overly-technical language when editing this particular wiki</p>
  </blockquote>
  <hr />
  <p>The question was:</p>
  <blockquote>
  <p>&quot;What is Quick and easy intro to computer science for kids for an Engineering Field Day&quot; It might be best to divide the kids into groups.</p>
  </blockquote>
  <p>My packet of educational materials below is mostly only for teaching kids who can read big kid books (or even books for adults).</p>
  <p>Instructions on how to print this packet of educational materials is provided at the end of this post.</p>
  <hr />
  <h1>A Packet for Kids &amp; Adults on How to Write Code</h1>
  <p>In this packet, we will learn about a language used to write computer programs known as <em><strong>python</strong></em></p>
  <h1>Installing an IDE</h1>
  <p>I recommend something called an <strong>IDE</strong>.</p>
  <p>I recommend installing something called &quot;PyCharm&quot;.</p>
  <p>Google &quot;PyCharm&quot; to find it.</p>
  <h1>Your First Computer Program</h1>
  <pre class="lang-python prettyprint-override"><code>print(&quot;hello world&quot;)
  </code></pre>
  <p>When I first installed pyCharm many years ago I could not figure out how to get it to run the program.</p>
  <p><a href="https://i.sstatic.net/D6Kyh.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/D6Kyh.png" alt="enter image description here" /></a></p>
  <p>Click the green triangle-shaped button in the upper-right corner of PyCharm to run your program.</p>
  <p>In my day, the green triangle shaped button was a lot smaller and more difficult to see.</p>
  <h1>What are Strings?</h1>
  <p>Computer scientists sometimes write code which translates English into Spanish.</p>
  <p>For example, we might have:</p>
  <blockquote>
  <p>INPUT:  the English phrase <code>Blue Fish</code>.</p>
  <p>OUTPUT: the Spanish phrase <code>Pez Azul</code>.</p>
  </blockquote>
  <p><a href="https://i.sstatic.net/mbADBm.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/mbADBm.jpg" alt="a picture of a blue fish with both Spanish and English words. I drew it in the GNU image manipulation program" /></a></p>
  <p>If you want to write code, then you need to be familiar with something which computer scientists and programmers call &quot;<strong>strings</strong>&quot;</p>
  <p>In order to store text and translate text from one language to another on a computer, then you need to store your text inside of a <strong>string</strong>.</p>
  <p>Let us talk about three different types of strings:</p>
  <blockquote>
  <ol>
  <li>Binary Strings</li>
  <li>ASCII Strings</li>
  <li>Unicode Strings.</li>
  </ol>
  </blockquote>
  <p>When a <strong>string</strong> contains only ones and zeros, it is known as a <strong>binary string</strong>. An example of a <strong>binary string</strong> is shown below:</p>
  <pre class="lang-non prettyprint-override"><code>001010101010111111000100101000101010101
  </code></pre>
  <p>Nothing but ones and zeros is difficult for people to understand.</p>
  <p>Therefore, <strong>ASCII encoding</strong> was invented.</p>
  <p>To oversimplify things, <strong>ASCII encoding</strong> is a set of rules for converting for converting letters, such as the letter <code>A</code>, into 1s and 0s.</p>
  <p>If you use <strong>ASCII encoding</strong> to translate <code>A</code> into a binary string, the result is <code>01000001</code>.</p>
  <p>An <strong>ASCII string</strong> can store text written English, French, German, or other languages from Western Europe.</p>
  <p>A lot of people use something called <strong>unicode</strong> to represent letters written in several of the worlds alphabets.</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th></th>
  <th></th>
  <th></th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td>Greek Letters (Ελληνικά)</td>
  <td>Oriya</td>
  <td>Korean Letters (한글)</td>
  </tr>
  <tr>
  <td>Russian Letters (ру́сский)</td>
  <td>Tamil</td>
  <td>Ethiopian Letters (ግዕዝ)</td>
  </tr>
  <tr>
  <td>Armenian Letters  (Հայոց գրեր)</td>
  <td>Telugu (తెలుగు)</td>
  <td>Cherokee Letters (ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ)</td>
  </tr>
  <tr>
  <td></td>
  <td>Kannada (ಕನ್ನಡ)</td>
  <td>Plains Cree (ᓀᐦᐃᔭᐍᐏᐣ)</td>
  </tr>
  <tr>
  <td>Hebrew (אלפבית)</td>
  <td>Malayalam (മലയാളം)</td>
  <td>Khmer (ភាសាខ្មែរ / ខេមរភាសា)</td>
  </tr>
  <tr>
  <td>Arabic (الْأَبْجَدِيَّة الْعَرَبِيَّة)</td>
  <td>Sinhala (සිංහල අක්ෂර මාලාව)</td>
  <td>Mongolian</td>
  </tr>
  <tr>
  <td>Syriac (ܐܠܦ ܒܝܬ ܣܘܪܝܝܐ)</td>
  <td>Thai  (อักษรไทย)</td>
  <td>Japanese Kanji and Kana  (漢字仮名)</td>
  </tr>
  <tr>
  <td>Thaana   (ތާނަ )</td>
  <td>Lao (ອັກສອນລາວ)</td>
  <td>Manderin Chinese ( 官话 )</td>
  </tr>
  <tr>
  <td>Devanagari (नागरी)</td>
  <td>Tibetan  (བོད་སྐད་)</td>
  <td>Korean ()</td>
  </tr>
  <tr>
  <td>Bengali (বাংলা বর্ণমালা বা লিপি)</td>
  <td>Myanmar</td>
  <td>Japanese Hiragana  (平仮名, ひらがな)</td>
  </tr>
  <tr>
  <td>Gurmukhi (ਗੁਰਮੁਖੀ)</td>
  <td>Georgian</td>
  <td>Katakana  (片仮名、カタカナ)</td>
  </tr>
  </tbody>
  </table>
  </div>
  <p>In this packet, we will show strings in <strong>ASCII</strong> instead of <strong>unicode</strong> because <strong>unicode</strong> is complicated for some Americans and Europeans.</p>
  <p>If you want to, you can put only one or two words inside of a <em><strong>text string</strong></em> . If you want to, write two or three words in the space below:</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th></th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td><br /><br /> <br /><br /> <br /><br /></td>
  </tr>
  </tbody>
  </table>
  </div><hr />
  <p>A name for someone's favorite food might be an example of a <em><strong>text string</strong></em>.</p>
  <p>A text string can also be the title of of a book, such a book you like.</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th></th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td><br /><br /> <br /><br /> <br /><br /></td>
  </tr>
  </tbody>
  </table>
  </div>
  <p>A text string can also be the entire contents of a book, such as  <strong>One fish, two fish, red fish, blue fish</strong> by <a href="https://en.wikipedia.org/wiki/Dr._Seuss" rel="nofollow noreferrer">Dr. Seuss</a>.</p>
  <pre class="lang-none prettyprint-override"><code>One fish, Two fish, Red fish, Blue fish,
  Black fish, Blue fish, Old fish, New fish.
  This one has a little car.
  This one has a little star.
  [...SNIP...]
  Where do they come from? I can't say.
  But I bet they have come a long, long way.
  we see them come, we see them go.
  Some are fast. Some are slow.
  Some are high. Some are low.
  Not one of them is like another.
  Don't ask us why, go ask your mother. 
  </code></pre>
  <p>The Collected Works of William Shakespeare would be an example of a very long <em><strong>text string</strong></em>.</p>
  <p>The simplest <em><strong>text strings</strong></em> contain only one letter.</p>
  <h2>The text string Containing the letter <code>A</code></h2>
  <pre class="lang-python prettyprint-override"><code>A
  </code></pre>
  <h2>The text string Containing the letter <code>B</code></h2>
  <pre class="lang-python prettyprint-override"><code>B
  </code></pre>
  <h2>The text string Containing the letter <code>B</code></h2>
  <pre class="lang-python prettyprint-override"><code>C
  </code></pre>
  <p>Most people want to have things inside of their text strings other than <em><strong>letters</strong></em> such as <code>A</code> and <code>Z</code>.</p>
  <p>Most people like having space characters.</p>
  <p>Otherwise, we have have:</p>
  <p>Mostpeoplelikehavingspacecharacters.</p>
  <p>As a second example we have <strong>The Little Car String</strong> :</p>
  <h1>The Little Car String with Spaces</h1>
  <pre class="lang-python prettyprint-override"><code>This one has a little car.
  </code></pre>
  <h1>The Little Car String without Spaces</h1>
  <pre class="lang-python prettyprint-override"><code>Thisonehasalittlecar.    
  </code></pre>
  <p>In general, each of the <em>things</em> contained in a text string is known as a <strong>character</strong>.</p>
  <p>Space-characters might not be letters, but they are <strong>characters</strong></p>
  <p>Without line-feed *<strong>characters</strong> everything would all be all be on one very long line going off to the right.</p>
  <pre class="lang-none prettyprint-override"><code>One fish Two fish Red fish Blue fish Black fish Blue fish Old fish New fish. This one has a little car. 
  </code></pre>
  <p>We can insert some line-feeds to have a text string appear on multiple lines</p>
  <pre class="lang-none prettyprint-override"><code>One fish
  Two fish
  Red fish
  Blue fish
  Black fish
  Blue fish
  Old fish
  New fish.
  This one
  has a
  little car. 
  </code></pre>
  <p>All of the letters and other things inside of an ASCII string are called &quot;<strong>characters</strong>&quot;.</p>
  <p><code>CAT.DOG</code> is a text string.</p>
  <p>The letter <code>C</code> in <code>CAT.DOG</code> is a character.</p>
  <p>The period dot in <code>CAT.DOG</code> is also a character.</p>
  <p>&quot;<strong>characters</strong>&quot;
  Otherwise, <code>CAT DOG</code> would be just <code>CAT DOG</code></p>
  <hr />
  <h1>Additional Notes</h1>
  <h2>How to Print This Stuff Out on Paper</h2>
  <blockquote>
  <ol>
  <li><p>Select all of the text in this post.</p>
  </li>
  <li><p>Copy the text</p>
  <ul>
  <li>to copy text on Windows press the control-key Ctrl&lt;\kbd&gt; and  C &lt;\kbd&gt; at the same time.</li>
  <li>to copy text on Apple Mac/iOS press  ⌘ Command &lt;\kbd&gt; and  C &lt;\kbd&gt;</li>
  </ul>
  </li>
  <li><p>Paste the text into a word processor such as Microsoft Word, <a href="https://ubuntu.com/download/desktop" rel="nofollow noreferrer">office libre</a>, or <em>Pages</em> on Apple Macintosh iOS</p>
  <ul>
  <li>to past text on Windows press the control-key Ctrl&lt;\kbd&gt; and  V &lt;\kbd&gt; at the same time.</li>
  <li>to paste text on Apple Mac/iOS press  ⌘ Command &lt;\kbd&gt; and  V &lt;\kbd&gt;</li>
  </ul>
  </li>
  <li><p>Print it as ink on a sheet of physical paper</p>
  </li>
  </ol>
  </blockquote>
  <h2>Where to Get Cheap Used Laptop Computer</h2>
  <p>I recommend buying used laptops off of <a href="https://www.ebay.com/" rel="nofollow noreferrer">eBay</a> for less than 30 USD each.</p>
  <p>If you are worried about a used laptop being infected with a virus or having pornography on it, then google &quot;how to install ubuntu os<a href="https://ubuntu.com/download/desktop" rel="nofollow noreferrer">2</a>&quot;.</p>
  <p>If you re-install the operating system (OS), the viruses will be inert and the pornography will outside of the index for in-use hard-drive space.</p>
  <p>Make sure that the laptop you buy has more than 16GB of RAM.</p>
  <p>The number one reason a computer is too slow is not enough RAM (random access memory).</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-03-27T01:27:57.963Z
Answers.LastActivityDate: 2023-03-27T01:27:57.963Z
Answers.UserDisplayName: Samuel Muldoon
Answers.Body: <p>As a quick introduction to some programming lessons, I highly recommend <a href="http://csunplugged.org/" rel="nofollow noreferrer">CS Unplugged</a>. They have a number of great lessons introducing many core programming ideas without needing a computer.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-21T19:36:46.163Z
Answers.LastActivityDate: 2017-12-21T19:36:46.163Z
Answers.UserDisplayName: WalkerLJ
Answers.Body: <p>I created a couple of demo programs recently which can run unattended, be explained simply, are familiar, and one can be interacted with.</p>
  
  <p>The first is a simple maze generation method, which draws a maze on the screen with character graphics. It does not produce ideal or optimal mazes, or use any of the recognized algorithms, just weighted random choice and forcing. Still, it is interesting to watch. I have not completed the part that displays the shortest path. It would be a good addition.</p>
  
  <p>The other example is Tic-Tac-Toe. The game is set up so that two humans can play, or a human against one of five different strategies, or the strategies against each other. There is also a 'tournament' display, which shows the results of each strategy playing the others 10,000 times.</p>
  
  <p>The five strategies are:</p>
  
  <ul>
  <li>Idiot, picks a move at random</li>
  <li>Naive, tries for center square, then corners, then sides</li>
  <li>Blocker, chooses a move that prevents the opponent from winning</li>
  <li>Winner, chooses a move that will win</li>
  <li>(one superior to that, but I forget the details just now)</li>
  </ul>
  
  <p>These strategies are implemented using inheritance, as a hierarchy, so you can explain that. The game board and turn-taking and scoring and so on are implemented using OOP principles, so that fits easily also. There is something here to engage children of varying ages and understanding. Just the idea of "playing against the computer" is interesting. The program is not very complex. I think it could be expanded easily to checkers. Chess would be more ambitious, and probably lose most of your audience anyway.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-20T14:21:45.107Z
Answers.Text: Perhaps you could share your code for these. Or at least a minimal framework.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-20T15:01:48.657Z
Answers.Text: I agree with @Buffy that a link would be helpful.  But the ideas here are a nice contributions.  Welcome to [cseducators.se], and I hope we hear more from you!
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-20T14:17:16.453Z
Answers.LastActivityDate: 2017-12-20T14:17:16.453Z
Answers.UserDisplayName: user3770
Answers.Body: <p>Since Logo was intended for this age group you might explore something there. My quick idea would require two or three screens with some sophisticated and time consuming simulation running on one and the kids/adults exploring simpler exercises that might (or not) build up to the one running. You can run, for example, a space filler (Sierpinski) program and have the students explore turning, etc. With lots of trial and mostly error. </p>
  
  <p>In Karel J Robot, the recursive graphical solution to the Eight Queens problem takes a bit of time and is built up from only a few primitives that can be combined and extended. So that would do for the running demo and the students can explore simpler aspects, such as a robot backing up, for example. The advantage of Eight Queens is that it is easy to explain, unlike, say, sorting. </p>
  
  <p>You can do this sort of thing in most languages - a complex graphic simulation built up from simple parts. The students explore only a bit of it. They can even modify some of the code of the running sim and run it to see what happens. It can lead to a lot of laughter, and some insight. If you sit with them you can suggest things that do something fun/weird/good/bad and ask why that happened. Lots of possibilities. </p>
  
  <p>But the running sim gives an unattainable target in the time frame. Like playing on the beach after professional teams of sand-castle builders have shown their skill. </p>
  
  <hr>
  
  <p>The suggestion is that if the simulation is built with something like Model-View-Controller that the students only modify parts of the model. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T15:34:34.190Z
Answers.LastActivityDate: 2017-12-19T15:34:34.190Z
Answers.UserDisplayName: Buffy
Answers.Body: <p>There is another model program that is designed for youngsters. <a href="http://csunplugged.org/activities/" rel="nofollow noreferrer">CSUnplugged</a> provides a collection of activities that don't involve actual computers but prepare young students for <a href="https://www.cs.cmu.edu/%7ECompThink/resources/education.html" rel="nofollow noreferrer">Computational Thinking</a> and algorithmics. </p>
  
  <p>Some of the examples are surprisingly sophisticated and collectively cover, if somewhat shallowly, the range of topics that would later be covered by in a college major in CS. Each of the (more than 30) activities they suggest are accompanied with teacher instructions. These activities have been successfully used in a number of elementary schools. In my opinion, they provide a great way to instill insight into youngsters in topics that they might study later in depth, but which they will also necessarily encounter throughout their lives. </p>
  
  <p>For your Engineering Day you could prepare a few of these for the students to do. Some of the resources are also group activities, so that you might get a larger group engaged simultaneously. </p>
  
  <p>The same materials, by the way, can be adapted for teaching the underlying concepts to adults, by providing a set of analogies and metaphors for the topics being studied. They might also provide ideas for programming exercises for beginning students in a CS program. </p>
  
  <p>The main categories follow, with several activities available for each:  </p>
  
  <blockquote>
    <ol>
    <li>Data: Representing Information  </li>
    <li>Algorithms: Putting Computers to Work  </li>
    <li>Procedures: Telling Computers What to Do  </li>
    <li>Intractability: Really Hard Problems  </li>
    <li>Cryptography: Sharing Secrets  </li>
    <li>The Human Face of Computing: Interacting with Computers  </li>
    <li>Community Activities  </li>
    </ol>
  </blockquote>
  
  <hr>
  
  <p>One of my doctoral students explored this area in her dissertation and found it to be valuable. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-20T13:13:26.253Z
Answers.LastActivityDate: 2017-12-20T13:13:26.253Z
Answers.UserDisplayName: Buffy
Body: <p>We have a large engineering day that hundreds of kids (ages 6-12) and their parents will attend. </p>
  
  <p>The setup is as follows: local engineering groups/societies will have stations and they will have short activities for these kids to introduce them to engineering concepts. We are looking for 1-2 activities for one of these stations. There will be internet connection and we have a small budget (~<code>$100</code>) for getting supplies. We can borrow computers/tablets. Ideally we will have two activities that build on each other and ideally the activities can be scaled so both younger crowds and older students can enjoy and get hooked. It would be a big plus to engage and educate parents as well. It would also be a plus if the activity did not require lots of hardware ($$$) so it is not too hard for students to continue learning at home.</p>
  
  <p>I wanted to do something programming/CS related but I am having a hard time coming up with activities that introduce them to the subject in a <strong>couple of minutes</strong>. Are there such activities or should I focus on something else? </p>
  
  <p>The help and ideas are much appreciated!</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-19T14:01:31.447Z
Comments.Text: A very easy CTF question might be a lot of fun, though 6 is still a bit young.  Human Resource Machine is a great game, and the first few levels are accessible to any age.  A few questions: will you have internet there? Is there some sort of budget for devices (like Arduinos)?  Is there some particular direction you're considering heading off in?
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-19T14:05:54.383Z
Comments.Text: This question is likely to generate a big list. Perhaps you should provide some criteria by which the suggestions can be assessed and judged.
Comments.UserDisplayName: ItamarG3
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-19T14:14:01.803Z
Comments.Text: Edited question :)
Comments.UserDisplayName: c_maker
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-19T14:19:05.243Z
Comments.Text: @BenI. No particular direction... we can do simple coding, robotics, circuits etc... anything that would get a kid hooked :)
Comments.UserDisplayName: c_maker
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-19T19:30:01.440Z
Comments.Text: You may also be gain some inspiration from this question: https://cseducators.stackexchange.com/questions/2540/what-would-be-reasonable-to-include-in-an-introduction-to-ai-class-for-a-7th-8th
Comments.UserDisplayName: Ben I.
Tags: <lesson-ideas><active-learning><k-5>
Title: Quick and easy intro to computer science for kids for an Engineering Field Day
ThreadText: # Quick and easy intro to computer science for kids for an Engineering Field Day
  
  (Asked by: username_0 on 2017-12-19)
  
  We have a large engineering day that hundreds of kids (ages 6-12) and their parents will attend.
  
  The setup is as follows: local engineering groups/societies will have stations and they will have short activities for these kids to introduce them to engineering concepts. We are looking for 1-2 activities for one of these stations. There will be internet connection and we have a small budget (~`$100`) for getting supplies. We can borrow computers/tablets. Ideally we will have two activities that build on each other and ideally the activities can be scaled so both younger crowds and older students can enjoy and get hooked. It would be a big plus to engage and educate parents as well. It would also be a plus if the activity did not require lots of hardware ($$$) so it is not too hard for students to continue learning at home.
  
  I wanted to do something programming/CS related but I am having a hard time coming up with activities that introduce them to the subject in a **couple of minutes**. Are there such activities or should I focus on something else?
  
  The help and ideas are much appreciated!
  
  **Tags:** lesson-ideas, active-learning, k-5
  
  > **Comments:**
  > **username_1**: A very easy CTF question might be a lot of fun, though 6 is still a bit young.  Human Resource Machine is a great game, and the first few levels are accessible to any age.  A few questions: will you have internet there? Is there some sort of budget for devices (like Arduinos)?  Is there some particular direction you're considering heading off in?  
  > **username_2**: This question is likely to generate a big list. Perhaps you should provide some criteria by which the suggestions can be assessed and judged.  
  > **username_0**: Edited question :)  
  > **username_0**: @BenI. No particular direction... we can do simple coding, robotics, circuits etc... anything that would get a kid hooked :)  
  > **username_1**: You may also be gain some inspiration from this question: https://cseducators.stackexchange.com/questions/2540/what-would-be-reasonable-to-include-in-an-introduction-to-ai-class-for-a-7th-8th  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_5 on 2017-12-20. Score: 3
  
  I created a couple of demo programs recently which can run unattended, be explained simply, are familiar, and one can be interacted with.
  
  The first is a simple maze generation method, which draws a maze on the screen with character graphics. It does not produce ideal or optimal mazes, or use any of the recognized algorithms, just weighted random choice and forcing. Still, it is interesting to watch. I have not completed the part that displays the shortest path. It would be a good addition.
  
  The other example is Tic-Tac-Toe. The game is set up so that two humans can play, or a human against one of five different strategies, or the strategies against each other. There is also a 'tournament' display, which shows the results of each strategy playing the others 10,000 times.
  
  The five strategies are:
  
  * Idiot, picks a move at random
  * Naive, tries for center square, then corners, then sides
  * Blocker, chooses a move that prevents the opponent from winning
  * Winner, chooses a move that will win
  * (one superior to that, but I forget the details just now)
  
  These strategies are implemented using inheritance, as a hierarchy, so you can explain that. The game board and turn-taking and scoring and so on are implemented using OOP principles, so that fits easily also. There is something here to engage children of varying ages and understanding. Just the idea of "playing against the computer" is interesting. The program is not very complex. I think it could be expanded easily to checkers. Chess would be more ambitious, and probably lose most of your audience anyway.
  
  > **Comments:**
  > **username_6**: Perhaps you could share your code for these. Or at least a minimal framework.  
  > **username_1**: I agree with @username_6 that a link would be helpful.  But the ideas here are a nice contributions.  Welcome to [cseducators.se], and I hope we hear more from you!  
  
  ---
  
  ### Answer by username_6 on 2017-12-19. Score: 2
  
  Since Logo was intended for this age group you might explore something there. My quick idea would require two or three screens with some sophisticated and time consuming simulation running on one and the kids/adults exploring simpler exercises that might (or not) build up to the one running. You can run, for example, a space filler (Sierpinski) program and have the students explore turning, etc. With lots of trial and mostly error.
  
  In Karel J Robot, the recursive graphical solution to the Eight Queens problem takes a bit of time and is built up from only a few primitives that can be combined and extended. So that would do for the running demo and the students can explore simpler aspects, such as a robot backing up, for example. The advantage of Eight Queens is that it is easy to explain, unlike, say, sorting.
  
  You can do this sort of thing in most languages - a complex graphic simulation built up from simple parts. The students explore only a bit of it. They can even modify some of the code of the running sim and run it to see what happens. It can lead to a lot of laughter, and some insight. If you sit with them you can suggest things that do something fun/weird/good/bad and ask why that happened. Lots of possibilities.
  
  But the running sim gives an unattainable target in the time frame. Like playing on the beach after professional teams of sand-castle builders have shown their skill.
  
  ---
  
  The suggestion is that if the simulation is built with something like Model-View-Controller that the students only modify parts of the model.
  
  
  ---
  
  ### Answer by username_6 on 2017-12-20. Score: 2
  
  There is another model program that is designed for youngsters. [CSUnplugged](http://csunplugged.org/activities/) provides a collection of activities that don't involve actual computers but prepare young students for [Computational Thinking](https://www.cs.cmu.edu/%7ECompThink/resources/education.html) and algorithmics.
  
  Some of the examples are surprisingly sophisticated and collectively cover, if somewhat shallowly, the range of topics that would later be covered by in a college major in CS. Each of the (more than 30) activities they suggest are accompanied with teacher instructions. These activities have been successfully used in a number of elementary schools. In my opinion, they provide a great way to instill insight into youngsters in topics that they might study later in depth, but which they will also necessarily encounter throughout their lives.
  
  For your Engineering Day you could prepare a few of these for the students to do. Some of the resources are also group activities, so that you might get a larger group engaged simultaneously.
  
  The same materials, by the way, can be adapted for teaching the underlying concepts to adults, by providing a set of analogies and metaphors for the topics being studied. They might also provide ideas for programming exercises for beginning students in a CS program.
  
  The main categories follow, with several activities available for each:
  
  > 1. Data: Representing Information
  > 2. Algorithms: Putting Computers to Work
  > 3. Procedures: Telling Computers What to Do
  > 4. Intractability: Really Hard Problems
  > 5. Cryptography: Sharing Secrets
  > 6. The Human Face of Computing: Interacting with Computers
  > 7. Community Activities
  
  ---
  
  One of my doctoral students explored this area in her dissertation and found it to be valuable.
  
  
  ---
  
  ### Answer by username_3 on 2023-03-27. Score: 1
  
  # Introduction
  
  > Read the question; these Educational Materials are for Children under age 16.
  >
  > Do use overly sophisticated in overly-technical language when editing this particular wiki
  
  ---
  
  The question was:
  
  > "What is Quick and easy intro to computer science for kids for an Engineering Field Day" It might be best to divide the kids into groups.
  
  My packet of educational materials below is mostly only for teaching kids who can read big kid books (or even books for adults).
  
  Instructions on how to print this packet of educational materials is provided at the end of this post.
  
  ---
  
  # A Packet for Kids & Adults on How to Write Code
  
  In this packet, we will learn about a language used to write computer programs known as ***python***
  
  # Installing an IDE
  
  I recommend something called an **IDE**.
  
  I recommend installing something called "PyCharm".
  
  Google "PyCharm" to find it.
  
  # Your First Computer Program
  
  ```python
  print("hello world")
  
  ```
  
  When I first installed pyCharm many years ago I could not figure out how to get it to run the program.
  
  [![enter image description here](https://i.sstatic.net/D6Kyh.png)](https://i.sstatic.net/D6Kyh.png)
  
  Click the green triangle-shaped button in the upper-right corner of PyCharm to run your program.
  
  In my day, the green triangle shaped button was a lot smaller and more difficult to see.
  
  # What are Strings?
  
  Computer scientists sometimes write code which translates English into Spanish.
  
  For example, we might have:
  
  > INPUT: the English phrase `Blue Fish`.
  >
  > OUTPUT: the Spanish phrase `Pez Azul`.
  
  [![a picture of a blue fish with both Spanish and English words. I drew it in the GNU image manipulation program](https://i.sstatic.net/mbADBm.jpg)](https://i.sstatic.net/mbADBm.jpg)
  
  If you want to write code, then you need to be familiar with something which computer scientists and programmers call "**strings**"
  
  In order to store text and translate text from one language to another on a computer, then you need to store your text inside of a **string**.
  
  Let us talk about three different types of strings:
  
  > 1. Binary Strings
  > 2. ASCII Strings
  > 3. Unicode Strings.
  
  When a **string** contains only ones and zeros, it is known as a **binary string**. An example of a **binary string** is shown below:
  
  ```non
  001010101010111111000100101000101010101
  
  ```
  
  Nothing but ones and zeros is difficult for people to understand.
  
  Therefore, **ASCII encoding** was invented.
  
  To oversimplify things, **ASCII encoding** is a set of rules for converting for converting letters, such as the letter `A`, into 1s and 0s.
  
  If you use **ASCII encoding** to translate `A` into a binary string, the result is `01000001`.
  
  An **ASCII string** can store text written English, French, German, or other languages from Western Europe.
  
  A lot of people use something called **unicode** to represent letters written in several of the worlds alphabets.
  
  |  |  |  |
  | --- | --- | --- |
  | Greek Letters (Ελληνικά) | Oriya | Korean Letters (한글) |
  | Russian Letters (ру́сский) | Tamil | Ethiopian Letters (ግዕዝ) |
  | Armenian Letters (Հայոց գրեր) | Telugu (తెలుగు) | Cherokee Letters (ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ) |
  |  | Kannada (ಕನ್ನಡ) | Plains Cree (ᓀᐦᐃᔭᐍᐏᐣ) |
  | Hebrew (אלפבית) | Malayalam (മലയാളം) | Khmer (ភាសាខ្មែរ / ខេមរភាសា) |
  | Arabic (الْأَبْجَدِيَّة الْعَرَبِيَّة) | Sinhala (සිංහල අක්ෂර මාලාව) | Mongolian |
  | Syriac (ܐܠܦ ܒܝܬ ܣܘܪܝܝܐ) | Thai (อักษรไทย) | Japanese Kanji and Kana (漢字仮名) |
  | Thaana (ތާނަ ) | Lao (ອັກສອນລາວ) | Manderin Chinese ( 官话 ) |
  | Devanagari (नागरी) | Tibetan (བོད་སྐད་) | Korean () |
  | Bengali (বাংলা বর্ণমালা বা লিপি) | Myanmar | Japanese Hiragana (平仮名, ひらがな) |
  | Gurmukhi (ਗੁਰਮੁਖੀ) | Georgian | Katakana (片仮名、カタカナ) |
  
  In this packet, we will show strings in **ASCII** instead of **unicode** because **unicode** is complicated for some Americans and Europeans.
  
  If you want to, you can put only one or two words inside of a ***text string*** . If you want to, write two or three words in the space below:
  
  |  |
  | --- |
  |  |
  
  ---
  
  A name for someone's favorite food might be an example of a ***text string***.
  
  A text string can also be the title of of a book, such a book you like.
  
  |  |
  | --- |
  |  |
  
  A text string can also be the entire contents of a book, such as **One fish, two fish, red fish, blue fish** by [Dr. Seuss](https://en.wikipedia.org/wiki/Dr._Seuss).
  
  ```none
  One fish, Two fish, Red fish, Blue fish,
  Black fish, Blue fish, Old fish, New fish.
  This one has a little car.
  This one has a little star.
  [...SNIP...]
  Where do they come from? I can't say.
  But I bet they have come a long, long way.
  we see them come, we see them go.
  Some are fast. Some are slow.
  Some are high. Some are low.
  Not one of them is like another.
  Don't ask us why, go ask your mother. 
  
  ```
  
  The Collected Works of William Shakespeare would be an example of a very long ***text string***.
  
  The simplest ***text strings*** contain only one letter.
  
  ## The text string Containing the letter `A`
  
  ```python
  A
  
  ```
  
  ## The text string Containing the letter `B`
  
  ```python
  B
  
  ```
  
  ## The text string Containing the letter `B`
  
  ```python
  C
  
  ```
  
  Most people want to have things inside of their text strings other than ***letters*** such as `A` and `Z`.
  
  Most people like having space characters.
  
  Otherwise, we have have:
  
  Mostpeoplelikehavingspacecharacters.
  
  As a second example we have **The Little Car String** :
  
  # The Little Car String with Spaces
  
  ```python
  This one has a little car.
  
  ```
  
  # The Little Car String without Spaces
  
  ```python
  Thisonehasalittlecar.    
  
  ```
  
  In general, each of the *things* contained in a text string is known as a **character**.
  
  Space-characters might not be letters, but they are **characters**
  
  Without line-feed \***characters** everything would all be all be on one very long line going off to the right.
  
  ```none
  One fish Two fish Red fish Blue fish Black fish Blue fish Old fish New fish. This one has a little car. 
  
  ```
  
  We can insert some line-feeds to have a text string appear on multiple lines
  
  ```none
  One fish
  Two fish
  Red fish
  Blue fish
  Black fish
  Blue fish
  Old fish
  New fish.
  This one
  has a
  little car. 
  
  ```
  
  All of the letters and other things inside of an ASCII string are called "**characters**".
  
  `CAT.DOG` is a text string.
  
  The letter `C` in `CAT.DOG` is a character.
  
  The period dot in `CAT.DOG` is also a character.
  
  "**characters**"
  Otherwise, `CAT DOG` would be just `CAT DOG`
  
  ---
  
  # Additional Notes
  
  ## How to Print This Stuff Out on Paper
  
  > 1. Select all of the text in this post.
  > 2. Copy the text
  >
  >    * to copy text on Windows press the control-key Ctrl<\kbd> and C <\kbd> at the same time.
  >    * to copy text on Apple Mac/iOS press ⌘ Command <\kbd> and C <\kbd>
  > 3. Paste the text into a word processor such as Microsoft Word, [office libre](https://ubuntu.com/download/desktop), or *Pages* on Apple Macintosh iOS
  >
  >    * to past text on Windows press the control-key Ctrl<\kbd> and V <\kbd> at the same time.
  >    * to paste text on Apple Mac/iOS press ⌘ Command <\kbd> and V <\kbd>
  > 4. Print it as ink on a sheet of physical paper
  
  ## Where to Get Cheap Used Laptop Computer
  
  I recommend buying used laptops off of [eBay](https://www.ebay.com/) for less than 30 USD each.
  
  If you are worried about a used laptop being infected with a virus or having pornography on it, then google "how to install ubuntu os[2](https://ubuntu.com/download/desktop)".
  
  If you re-install the operating system (OS), the viruses will be inert and the pornography will outside of the index for in-use hard-drive space.
  
  Make sure that the laptop you buy has more than 16GB of RAM.
  
  The number one reason a computer is too slow is not enough RAM (random access memory).
  
  
  ---
  
  ### Answer by username_4 on 2017-12-21. Score: 0
  
  As a quick introduction to some programming lessons, I highly recommend [CS Unplugged](http://csunplugged.org/). They have a number of great lessons introducing many core programming ideas without needing a computer.
  
  
  ---
  
  