# Quick and easy intro to computer science for kids for an Engineering Field Day

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!

• 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?
– Ben I.
Dec 19 '17 at 14:01
• This question is likely to generate a big list. Perhaps you should provide some criteria by which the suggestions can be assessed and judged. Dec 19 '17 at 14:05
• Edited question :) Dec 19 '17 at 14:14
• @BenI. No particular direction... we can do simple coding, robotics, circuits etc... anything that would get a kid hooked :) Dec 19 '17 at 14:19
• You may also be gain some inspiration from this question: cseducators.stackexchange.com/questions/2540/…
– Ben I.
Dec 19 '17 at 19:30

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.

There is another model program that is designed for youngsters. CSUnplugged provides a collection of activities that don't involve actual computers but prepare young students for Computational Thinking 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.

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.

• Perhaps you could share your code for these. Or at least a minimal framework. Dec 20 '17 at 14:21
• I agree with @Buffy that a link would be helpful. But the ideas here are a nice contributions. Welcome to Computer Science Educators, and I hope we hear more from you!
– Ben I.
Dec 20 '17 at 15:01

As a quick introduction to some programming lessons, I highly recommend CS Unplugged. They have a number of great lessons introducing many core programming ideas without needing a computer.