<p><a href="http://worrydream.com/AlligatorEggs/" rel="nofollow noreferrer"><img src="https://i.sstatic.net/WP4bo.png" alt="lambda calculus"></a></p>

<p>Fun way to learn $\lambda$-calculus:</p>

<blockquote>
  <p>...This game represents the untyped lambda calculus. A hungry alligator is a lambda abstraction, an old alligator is parentheses, and eggs are variables. The eating rule corresponds to beta-reduction. The color rule corresponds to (over-cautious) alpha-conversion. The old age rule says that if a pair of parentheses contains a single term, the parentheses can be removed....</p>
</blockquote>

<p><a href="http://www.youtube.com/watch?v=K-p3ddhwVrg" rel="nofollow noreferrer">video link</a></p>

CC BY-SA 3.0
2012-02-24T18:18:01.247Z
+1 @Pratik Deoghare: Interesting answer, though would it be possible at least in a comment to explain why your answer is relevant without having to click the link and dig through the content on that page to find the answer.
blunders
CC BY-SA 3.0
2012-02-24T18:54:31.423Z
Just how hard is it to *click* and *read* a bit? Do we really need everything in bite-sized pieces?
Andrej Bauer
CC BY-SA 3.0
2012-02-24T19:10:08.637Z
This seems horribly convoluted..
Izkata
CC BY-SA 3.0
2012-02-24T19:13:37.137Z
@Andrej Bauer: Yes, in fact SE requests that answers summarize their relevance, and do not just link to material based as a response to a question.
blunders
CC BY-SA 3.0
2012-02-24T19:59:36.163Z
I got horribly confused halfway through and had to re-read the rules several times.  There is no way an 8-year-old will have the attention span for this.
BlueRaja - Danny Pflughoeft
CC BY-SA 3.0
2012-02-24T20:18:12.647Z
i found it quite neat, but a little confusing myself. Maybe it's because I was never "lambda-enabled" properly :)
Suresh Venkat
CC BY-SA 3.0
2012-02-24T20:45:15.813Z
@blunder: I see. Thanks for the explanation.
Andrej Bauer
CC BY-SA 3.0
2012-02-25T00:38:57.830Z
I feel that this is also appropriate for undergrad program language course. :-)
Dai Le
CC BY-SA 3.0
2012-02-25T03:51:40.787Z
agreed that this is awfully complicated for kids but they might watch a video of it happening & might find it interesting for some particular computation or algorithm thats useful to them [but what?]
vzn
CC BY-SA 3.0
2012-02-25T05:08:24.150Z
@vzn Some guy developed this [video link](http://www.youtube.com/watch?v=K-p3ddhwVrg)
Pratik Deoghare
CC BY-SA 3.0
2012-02-24T18:11:59.210Z
2012-02-25T05:11:33.010Z
2012-02-25T05:11:33.010Z
Pratik Deoghare
<p>In my experience, it is not difficult to teach basic topics in combinatorics, graph theory, programming, algorithms and similar topics. </p>

<p>You may want to look up topics covered in <a href="http://en.wikipedia.org/wiki/International_Olympiad_in_Informatics">IOI</a> competitions and national competitions. There are  summer schools and workshops related to IOI competitions starting at quite early age.</p>

<p>My personal favorite topic for such workshops is <a href="http://en.wikipedia.org/wiki/Combinatorial_game_theory">combinatorial game theory</a> since it is easy to motive by playing games with the audience.</p>

<p>Also check ACM's <a href="http://en.wikipedia.org/wiki/K%E2%80%9312_%28education%29">K-12</a> CS <a href="http://csta.acm.org/Curriculum/sub/CurrResources.html">Curriculum Resources</a>, particularly page 11 and 12 of <a href="http://www.acm.org/education/education/curric_vols/k12final1022.pdf">A Model Curriculum for K–12</a>.</p>

CC BY-SA 3.0
2012-02-25T06:57:21.310Z
2012-02-25T06:57:21.310Z
Kaveh
<p>Depends on the person you are teaching and the area of that range.</p>

<p>A 12-14 year old that WANTS to should be able to handle just about anything, but he has to pull it in his own time, you can't really push complicated concepts to young people (or for the most part anyone).</p>

<p>I'm listening to iWoz at this point (which seems to be targeted at that age group and would be quite inspirational), by that age he was putting together some pretty advanced circuitry--but his father only ever answered questions, never handed him new concepts he wasn't ready for)</p>

<p>Or he may be completely disinterested and there is nothing you will be able to do about it.</p>

<p>Kids can be really impressed with something simple though.  If you found some game he liked and helped him recreate it (even on a very superficial yet still graphically similar level) you may really get him going.</p>

<p>Or, even better yet, if you found an existing open source game he might like, let him play it then show him how to make little modifications you might be able to get him excited. (Modifications always seem to be the best way to get started)</p>

CC BY-SA 3.0
2012-02-24T18:06:36.257Z
+1 @Bill K: When you say "[you're] listening to iWoz at this point", do you mean an audio version of his book, or something else; a link would be nice, even if it's to pay content, just to give reference to what you mean.
blunders
CC BY-SA 3.0
2012-02-24T22:14:01.277Z
Sorry, iWoz is his autobiography--it's on Audible and it seems to be perfect for a teen curious about technology--he goes slow but gets into quite a bit of detail about the different things he created and the process of learning. Strangely although I've always felt much closer to Wozniak in ideals and actually dislike Jobs personality, I found Jobs biography amazingly compelling and insightful, I'm listening to iWoz as a counterpoint.
Bill K
CC BY-SA 3.0
2012-02-24T17:55:35.077Z
2012-02-24T17:55:35.077Z
Bill K
<p>some ideas. it seems to me there has been an explosion of high quality yet low cost options for kids with an interest in computer science. note the strong link with STEM, so called Science Technology Engineering Mathematics education. (Ive been thinking that maybe the CS side could be emphasized/advocated with a new keyword STEAM where the A stands for Algorithmics.)</p>

<ul>
<li><p>try the concept of boolean logic to represent mathematical operations. stuff like converting binary to decimal, decimal to binary, and multistage adders with carry from EE. building arbitrary functions out of CNF or DNF. even a young kid can understand the concept of functional completeness with AND,OR,NOT. some radioshack kits for stuff like this incl inexpensive microcontrollers. see eg <a href="http://www.parallax.com/tabid/295/Default.aspx">basic stamp kit.</a> there are some free/open source circuit simulators for this purpose.  unfortunately I couldnt find any distributed with libraries of components so far. <a href="http://ozark.hendrix.edu/~burch/logisim/">logisim</a> is one popular one.</p></li>
<li><p>theres this cool game that runs on different systems incl PC/ps3/etc called <a href="http://www.crazymachinesgame.com/">Crazy Machines.</a> this can be used to understand physics simulation in software and get the kid to think of systems of interacting components and chain reactions. the new ps3 version has a bunch of electrical and logic components including switches and gates.</p></li>
<li><p>robotics. try <a href="http://lego.mindstorms.com">lego mindstorms robotics</a> in particular. sophisticated software that allows stuff like loops, conditionals, subroutines. the subroutines are contained in graphical blocks ie its a visual programming system which years ago was very cutting edge (now its a toy). for inspiration, there are many rubiks cube robotic solver videos on youtube such as this state of the art one <a href="http://www.youtube.com/watch?v=_d0LfkIut2M">cubestormer II</a>. designs for at least one are in a widely available book eg <a href="http://rads.stackoverflow.com/amzn/click/1593272162">lego mindstorms nxt thinking robots</a> by Daniele Benedettelli. also, recently I saw this many degrees-of-freedom pneumatic <a href="http://www.youtube.com/watch?v=KR3IiXvzrds">robotic hand</a>. see also the <a href="http://www.usfirst.org/">First robotics competition</a> league.</p></li>
<li><p>writing basic code for some simple stuff. eg sorting. doing empirical studies of different sort algorithms and watching/graphing the results (eg graph the performance of a bubble sort vs qsort for increasing input sizes-- see eg the <a href="http://en.wikipedia.org/wiki/Insertion_sort">animation</a> on this wikipedia page for insertion sort). sort animations. a neat graphical analog is to sort a deck of cards instead of integers or strings. also many graphics or geometric operations such as drawing figures in code are excellent exercises.</p></li>
<li><p>game programming. this can be done in some excellent games. for example <a href="http://www.littlebigplanet.com/">Little Big Planet</a> has some sophisticated subsystems where kids can actually create their own games with the complex built-in construction system and components. can even study interacting/emergent phenomena this way. they can be uploaded to the internet and shared. another language for this purpose is called <a href="http://scratch.mit.edu/">scratch</a>. the classic one from Papert with much academic study of its efficacy is <a href="http://en.wikipedia.org/wiki/Logo_%28programming_language%29">Logo</a></p></li>
<li><p>using turing machine simulators &amp; building programs in them. there are a few. they come with some programs. the more graphical the better. some written by professors for classes. heres one written in <a href="http://www.turing.org.uk/turing/scrapbook/tmjava.html">javascript</a>. actually would like to know of the best ones in this area [maybe another question for that]</p></li>
</ul>

CC BY-SA 3.0
2012-02-24T16:40:09.057Z
2012-02-24T16:49:51.650Z
2012-02-24T16:49:51.650Z
vzn
<p>I actually taught a summer camp mostly containing 4th, 5th graders, though I had one 2nd and one 3rd grader (your target age group). The camps were week long and I taught XNA showing them basics of if, else if and a simple for statement along with photoshop. The issue with XNA was I had to help them program quite a bit til the end of the week, the other camps we had going on included lego robotics and GameMaker, both still having the very root CS theory and kids love it.</p>

CC BY-SA 3.0
2012-02-24T19:49:45.857Z
+1 @Suiko6272: Guess my main thing is that I see computer science, computer engineering, and software engineering as different, yet related topics.  Guess I was interested in concepts that were purely related to theoretical CS; in part to teach the difference between computer science, computer engineering, and software engineering.
blunders
CC BY-SA 3.0
2012-02-24T19:35:24.137Z
2012-02-24T19:35:24.137Z
Suiko6272
<p>There is a videogame called SpaceChem which is based on principles of programming. You can read more about it here: <a href="http://gangles.ca/2011/06/19/programming-in-spacechem/" rel="nofollow">http://gangles.ca/2011/06/19/programming-in-spacechem/</a></p>

CC BY-SA 3.0
2012-03-17T16:17:30.817Z
2012-03-17T16:17:30.817Z
Fameros
<p>I think <a href="http://www.planarity.net/" rel="nofollow">Planarity</a> is good game. It gives some idea about planar graphs, and introduces elementary concepts of graph theory (like graph made by node and edges, and degree of nodes, what are planar graphs , ...)</p>

CC BY-SA 3.0
2012-03-18T12:09:00.390Z
2012-03-18T18:21:37.373Z
2012-03-18T18:21:37.373Z
Saeed
<p>It is surprising that no one mentioned using multiplication to explain the concept of computational intractability. We state that multiplication is easy since we have the standard textbook fast algorithm for multiplication while the reverse function of finding prime factors is hard since there are no known fast algorithms and the best known algorithm is not significantly faster than exhaustive search.</p>

CC BY-SA 3.0
2012-03-18T13:08:22.813Z
@Saeed, Did I mention primality testing?!
Mohammad Al-Turkistany
CC BY-SA 3.0
2012-03-18T18:20:53.100Z
Sorry my mistake, I misread (I read: "finding prime numbers ...", In fact by reverse I thought you want talk about prime numbers, and with this bias I read your sentence).
Saeed
CC BY-SA 3.0
2012-03-17T21:49:35.210Z
2012-03-17T22:17:08.217Z
2012-03-17T22:17:08.217Z
Mohammad Al-Turkistany
<p>A good source of problems to get youngsters thinking about theory in CS, and solving the problems themselves, is the "Computer Science Unplugged" <a href="http://csunplugged.org/" rel="nofollow">http://csunplugged.org/</a> series. We go to schools and do the activities with children, or they come to Uni to do them with us. </p>

<p>It's been going for years and years, has been translated into many languages---and the articles give info on how to run the sessions, what materials are needed and tips form people who have run them before.</p>

<p>Highly recommended!</p>

CC BY-SA 3.0
2012-03-17T20:18:24.127Z
Yep.  See Serge Gaspers' answer.
Jeffε
CC BY-SA 3.0
2012-03-17T19:42:23.480Z
2012-03-17T19:42:23.480Z
Steve Reeves
<p>study of the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set" rel="nofollow">mandelbrot set</a> &amp; fractals via visual/graphical explorations. the simple formula $z \leftarrow z^2 + c$ can be understood by kids who have learned complex numbers or even by kids who havent by replacing it with the formula written with reals only. also another case of complex or emergent phenomena arising from simple equations.</p>

CC BY-SA 3.0
2012-03-07T20:18:36.137Z
still waiting over here for the official list of TCS topics, I define it broadly & this is supported by many others eg even [spolsky](http://meta.cstheory.stackexchange.com/questions/947/is-theoretical-computer-science-too-narrow). to me fractals highly fit in with [empirical research](http://cstheory.stackexchange.com/questions/5080/empirical-results-in-cs-papers). many elite CS researchers have studied them in many important papers (sorry dont have a list or survey, maybe foremost would be Wolfram). its an old debate going back to their origins, although guess its a legitimate debate.
vzn
CC BY-SA 3.0
2012-03-07T20:52:37.170Z
Please see the first section of the [faq] for a reasonable definition of "theoretical computer science".  (Also, Joel was arguing for expanding the scope of the site _beyond_ theoretical computer science; the community disagreed.)
Jeffε
CC BY-SA 3.0
2012-03-07T21:15:05.117Z
guess its a meta discussion but I interpret spolskys post differently. he listed many std areas of computer science & imho every one of those areas has a theoretical side. thinking of asking about fractals & seeing what happens
vzn
CC BY-SA 3.0
2012-03-07T21:20:17.403Z
looking at the FAQ you referred, Id say fractals fit into the following categories: algorithms, computational complexity, parallel & distributed computation, probabilisitic computation, computational geometry-- & even [information theory](http://scienceblogs.com/goodmath/2007/07/fractal_dust_and_noise_1.php). too bad though, maybe nobody's done a great survey about widespread appearance of fractals in TCS
vzn
CC BY-SA 3.0
2012-03-07T21:27:48.063Z
I agree; this is better discussed in meta.
Jeffε
CC BY-SA 3.0
2012-03-20T22:18:40.787Z
see [important TCS work in fractals](http://cstheory.stackexchange.com/questions/10617/what-is-some-important-work-in-fractals)
vzn
CC BY-SA 3.0
2012-02-25T19:45:46.003Z
Fractals are cool, but they aren't really a "concept in theoretical CS".
Jeffε
CC BY-SA 3.0
2012-02-25T04:00:35.337Z
2012-02-25T04:00:35.337Z
vzn
<p><a href="http://csunplugged.org/">Computer Science Unplugged</a> addresses kids (and teachers) in primary school.</p>

CC BY-SA 3.0
2012-02-24T19:10:47.100Z
I like that they also have a whole series of youtube videos.
Joe
CC BY-SA 3.0
2012-02-24T16:04:17.743Z
2012-02-24T16:04:17.743Z
Serge Gaspers
<p>Guessing it's unlikely a common question, but wondering if anyone has seen material that was clearly made to address this audience in a meaningful way.</p>

CC BY-SA 3.0
2012-02-24T15:54:41.760Z
Related: http://cstheory.stackexchange.com/questions/5188/explain-p-np-problem-to-10-year-old
Gopi
CC BY-SA 3.0
2012-02-25T06:40:20.317Z
Also check [inspirational talk for final year high school pupils](http://cstheory.stackexchange.com/questions/2386/inspirational-talk-for-final-year-high-school-pupils)
Kaveh
CC BY-SA 3.0
2012-02-25T08:36:54.447Z
I often tell kids this age the classic von Neumann puzzle: given a biased coin that turns up heads 70% of the time, what's a way to find an unbiased bit?
arnab
<soft-question><teaching>
Concepts in theoretical CS that would be approachable ages 8-14
blunders
# Concepts in theoretical CS that would be approachable ages 8-14

(Asked by: username_0 on 2012-02-24)

Guessing it's unlikely a common question, but wondering if anyone has seen material that was clearly made to address this audience in a meaningful way.

**Tags:** soft-question, teaching

> **Comments:**
> **username_1**: Related: http://cstheory.stackexchange.com/questions/5188/explain-p-np-problem-to-10-year-old  
> **username_2**: Also check [inspirational talk for final year high school pupils](http://cstheory.stackexchange.com/questions/2386/inspirational-talk-for-final-year-high-school-pupils)  
> **username_3**: I often tell kids this age the classic von Neumann puzzle: given a biased coin that turns up heads 70% of the time, what's a way to find an unbiased bit?  

---

## 11 answers

### Answer by username_18 on 2012-02-24. Score: 24 | Accepted answer

[Computer Science Unplugged](http://csunplugged.org/) addresses kids (and teachers) in primary school.

> **Comments:**
> **username_19**: I like that they also have a whole series of youtube videos.  

---

### Answer by username_4 on 2012-02-24. Score: 21

[![lambda calculus](https://i.sstatic.net/WP4bo.png)](http://worrydream.com/AlligatorEggs/)

Fun way to learn $\lambda$-calculus:

> ...This game represents the untyped lambda calculus. A hungry alligator is a lambda abstraction, an old alligator is parentheses, and eggs are variables. The eating rule corresponds to beta-reduction. The color rule corresponds to (over-cautious) alpha-conversion. The old age rule says that if a pair of parentheses contains a single term, the parentheses can be removed....

[video link](http://www.youtube.com/watch?v=K-p3ddhwVrg)

> **Comments:**
> **username_0**: +1 @username_4: Interesting answer, though would it be possible at least in a comment to explain why your answer is relevant without having to click the link and dig through the content on that page to find the answer.  
> **username_5**: Just how hard is it to *click* and *read* a bit? Do we really need everything in bite-sized pieces?  
> **username_6**: This seems horribly convoluted..  
> **username_0**: @username_5: Yes, in fact SE requests that answers summarize their relevance, and do not just link to material based as a response to a question.  
> **username_7**: I got horribly confused halfway through and had to re-read the rules several times.  There is no way an 8-year-old will have the attention span for this.  
> **username_8**: i found it quite neat, but a little confusing myself. Maybe it's because I was never "lambda-enabled" properly :)  
> **username_5**: @blunder: I see. Thanks for the explanation.  
> **username_9**: I feel that this is also appropriate for undergrad program language course. :-)  
> **username_10**: agreed that this is awfully complicated for kids but they might watch a video of it happening & might find it interesting for some particular computation or algorithm thats useful to them [but what?]  
> **username_4**: @username_10 Some guy developed this [video link](http://www.youtube.com/watch?v=K-p3ddhwVrg)  

---

### Answer by username_2 on 2012-02-25. Score: 8

In my experience, it is not difficult to teach basic topics in combinatorics, graph theory, programming, algorithms and similar topics.

You may want to look up topics covered in [IOI](http://en.wikipedia.org/wiki/International_Olympiad_in_Informatics) competitions and national competitions. There are summer schools and workshops related to IOI competitions starting at quite early age.

My personal favorite topic for such workshops is [combinatorial game theory](http://en.wikipedia.org/wiki/Combinatorial_game_theory) since it is easy to motive by playing games with the audience.

Also check ACM's [K-12](http://en.wikipedia.org/wiki/K%E2%80%9312_%28education%29) CS [Curriculum Resources](http://csta.acm.org/Curriculum/sub/CurrResources.html), particularly page 11 and 12 of [A Model Curriculum for K–12](http://www.acm.org/education/education/curric_vols/k12final1022.pdf).


---

### Answer by username_11 on 2012-02-24. Score: 6

Depends on the person you are teaching and the area of that range.

A 12-14 year old that WANTS to should be able to handle just about anything, but he has to pull it in his own time, you can't really push complicated concepts to young people (or for the most part anyone).

I'm listening to iWoz at this point (which seems to be targeted at that age group and would be quite inspirational), by that age he was putting together some pretty advanced circuitry--but his father only ever answered questions, never handed him new concepts he wasn't ready for)

Or he may be completely disinterested and there is nothing you will be able to do about it.

Kids can be really impressed with something simple though. If you found some game he liked and helped him recreate it (even on a very superficial yet still graphically similar level) you may really get him going.

Or, even better yet, if you found an existing open source game he might like, let him play it then show him how to make little modifications you might be able to get him excited. (Modifications always seem to be the best way to get started)

> **Comments:**
> **username_0**: +1 @username_11: When you say "[you're] listening to iWoz at this point", do you mean an audio version of his book, or something else; a link would be nice, even if it's to pay content, just to give reference to what you mean.  
> **username_11**: Sorry, iWoz is his autobiography--it's on Audible and it seems to be perfect for a teen curious about technology--he goes slow but gets into quite a bit of detail about the different things he created and the process of learning. Strangely although I've always felt much closer to Wozniak in ideals and actually dislike Jobs personality, I found Jobs biography amazingly compelling and insightful, I'm listening to iWoz as a counterpoint.  

---

### Answer by username_10 on 2012-02-24. Score: 6

some ideas. it seems to me there has been an explosion of high quality yet low cost options for kids with an interest in computer science. note the strong link with STEM, so called Science Technology Engineering Mathematics education. (Ive been thinking that maybe the CS side could be emphasized/advocated with a new keyword STEAM where the A stands for Algorithmics.)

* try the concept of boolean logic to represent mathematical operations. stuff like converting binary to decimal, decimal to binary, and multistage adders with carry from EE. building arbitrary functions out of CNF or DNF. even a young kid can understand the concept of functional completeness with AND,OR,NOT. some radioshack kits for stuff like this incl inexpensive microcontrollers. see eg [basic stamp kit.](http://www.parallax.com/tabid/295/Default.aspx) there are some free/open source circuit simulators for this purpose. unfortunately I couldnt find any distributed with libraries of components so far. [logisim](http://ozark.hendrix.edu/~burch/logisim/) is one popular one.
* theres this cool game that runs on different systems incl PC/ps3/etc called [Crazy Machines.](http://www.crazymachinesgame.com/) this can be used to understand physics simulation in software and get the kid to think of systems of interacting components and chain reactions. the new ps3 version has a bunch of electrical and logic components including switches and gates.
* robotics. try [lego mindstorms robotics](http://lego.mindstorms.com) in particular. sophisticated software that allows stuff like loops, conditionals, subroutines. the subroutines are contained in graphical blocks ie its a visual programming system which years ago was very cutting edge (now its a toy). for inspiration, there are many rubiks cube robotic solver videos on youtube such as this state of the art one [cubestormer II](http://www.youtube.com/watch?v=_d0LfkIut2M). designs for at least one are in a widely available book eg [lego mindstorms nxt thinking robots](http://rads.stackoverflow.com/amzn/click/1593272162) by Daniele Benedettelli. also, recently I saw this many degrees-of-freedom pneumatic [robotic hand](http://www.youtube.com/watch?v=KR3IiXvzrds). see also the [First robotics competition](http://www.usfirst.org/) league.
* writing basic code for some simple stuff. eg sorting. doing empirical studies of different sort algorithms and watching/graphing the results (eg graph the performance of a bubble sort vs qsort for increasing input sizes-- see eg the [animation](http://en.wikipedia.org/wiki/Insertion_sort) on this wikipedia page for insertion sort). sort animations. a neat graphical analog is to sort a deck of cards instead of integers or strings. also many graphics or geometric operations such as drawing figures in code are excellent exercises.
* game programming. this can be done in some excellent games. for example [Little Big Planet](http://www.littlebigplanet.com/) has some sophisticated subsystems where kids can actually create their own games with the complex built-in construction system and components. can even study interacting/emergent phenomena this way. they can be uploaded to the internet and shared. another language for this purpose is called [scratch](http://scratch.mit.edu/). the classic one from Papert with much academic study of its efficacy is [Logo](http://en.wikipedia.org/wiki/Logo_%28programming_language%29)
* using turing machine simulators & building programs in them. there are a few. they come with some programs. the more graphical the better. some written by professors for classes. heres one written in [javascript](http://www.turing.org.uk/turing/scrapbook/tmjava.html). actually would like to know of the best ones in this area [maybe another question for that]


---

### Answer by username_12 on 2012-02-24. Score: 5

I actually taught a summer camp mostly containing 4th, 5th graders, though I had one 2nd and one 3rd grader (your target age group). The camps were week long and I taught XNA showing them basics of if, else if and a simple for statement along with photoshop. The issue with XNA was I had to help them program quite a bit til the end of the week, the other camps we had going on included lego robotics and GameMaker, both still having the very root CS theory and kids love it.

> **Comments:**
> **username_0**: +1 @username_12: Guess my main thing is that I see computer science, computer engineering, and software engineering as different, yet related topics.  Guess I was interested in concepts that were purely related to theoretical CS; in part to teach the difference between computer science, computer engineering, and software engineering.  

---

### Answer by username_13 on 2012-03-17. Score: 2

There is a videogame called SpaceChem which is based on principles of programming. You can read more about it here: <http://gangles.ca/2011/06/19/programming-in-spacechem/>


---

### Answer by username_14 on 2012-03-18. Score: 2

I think [Planarity](http://www.planarity.net/) is good game. It gives some idea about planar graphs, and introduces elementary concepts of graph theory (like graph made by node and edges, and degree of nodes, what are planar graphs , ...)


---

### Answer by username_15 on 2012-03-17. Score: 1

It is surprising that no one mentioned using multiplication to explain the concept of computational intractability. We state that multiplication is easy since we have the standard textbook fast algorithm for multiplication while the reverse function of finding prime factors is hard since there are no known fast algorithms and the best known algorithm is not significantly faster than exhaustive search.

> **Comments:**
> **username_15**: @username_14, Did I mention primality testing?!  
> **username_14**: Sorry my mistake, I misread (I read: "finding prime numbers ...", In fact by reverse I thought you want talk about prime numbers, and with this bias I read your sentence).  

---

### Answer by username_16 on 2012-03-17. Score: 0

A good source of problems to get youngsters thinking about theory in CS, and solving the problems themselves, is the "Computer Science Unplugged" <http://csunplugged.org/> series. We go to schools and do the activities with children, or they come to Uni to do them with us.

It's been going for years and years, has been translated into many languages---and the articles give info on how to run the sessions, what materials are needed and tips form people who have run them before.

Highly recommended!

> **Comments:**
> **username_17**: Yep.  See username_18' answer.  

---

### Answer by username_10 on 2012-02-25. Score: -1

study of the [mandelbrot set](http://en.wikipedia.org/wiki/Mandelbrot_set) & fractals via visual/graphical explorations. the simple formula $z \leftarrow z^2 + c$ can be understood by kids who have learned complex numbers or even by kids who havent by replacing it with the formula written with reals only. also another case of complex or emergent phenomena arising from simple equations.

> **Comments:**
> **username_17**: Fractals are cool, but they aren't really a "concept in theoretical CS".  
> **username_10**: still waiting over here for the official list of TCS topics, I define it broadly & this is supported by many others eg even [spolsky](http://meta.cstheory.stackexchange.com/questions/947/is-theoretical-computer-science-too-narrow). to me fractals highly fit in with [empirical research](http://cstheory.stackexchange.com/questions/5080/empirical-results-in-cs-papers). many elite CS researchers have studied them in many important papers (sorry dont have a list or survey, maybe foremost would be Wolfram). its an old debate going back to their origins, although guess its a legitimate debate.  
> **username_17**: Please see the first section of the [faq] for a reasonable definition of "theoretical computer science".  (Also, username_19l was arguing for expanding the scope of the site _beyond_ theoretical computer science; the community disagreed.)  
> **username_10**: guess its a meta discussion but I interpret spolskys post differently. he listed many std areas of computer science & imho every one of those areas has a theoretical side. thinking of asking about fractals & seeing what happens  
> **username_10**: looking at the FAQ you referred, Id say fractals fit into the following categories: algorithms, computational complexity, parallel & distributed computation, probabilisitic computation, computational geometry-- & even [information theory](http://scienceblogs.com/goodmath/2007/07/fractal_dust_and_noise_1.php). too bad though, maybe nobody's done a great survey about widespread appearance of fractals in TCS  
> **username_17**: I agree; this is better discussed in meta.  
> **username_10**: see [important TCS work in fractals](http://cstheory.stackexchange.com/questions/10617/what-is-some-important-work-in-fractals)  

---

