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.
5$\begingroup$ Related: cstheory.stackexchange.com/questions/5188/… $\endgroup$– GopiFeb 24, 2012 at 15:54
2$\begingroup$ Also check inspirational talk for final year high school pupils $\endgroup$– KavehFeb 25, 2012 at 6:40
$\begingroup$ 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? $\endgroup$– arnabFeb 25, 2012 at 8:36
Computer Science Unplugged addresses kids (and teachers) in primary school.
3$\begingroup$ I like that they also have a whole series of youtube videos. $\endgroup$– JoeFeb 24, 2012 at 19:10
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....
7$\begingroup$ +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. $\endgroup$ Feb 24, 2012 at 18:18
6$\begingroup$ Just how hard is it to click and read a bit? Do we really need everything in bite-sized pieces? $\endgroup$ Feb 24, 2012 at 18:54
7$\begingroup$ This seems horribly convoluted.. $\endgroup$– IzkataFeb 24, 2012 at 19:10
16$\begingroup$ @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. $\endgroup$ Feb 24, 2012 at 19:13
11$\begingroup$ 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. $\endgroup$ Feb 24, 2012 at 19:59
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 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 since it is easy to motive by playing games with the audience.
Also check ACM's K-12 CS Curriculum Resources, particularly page 11 and 12 of A Model Curriculum for K–12.
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. there are some free/open source circuit simulators for this purpose. unfortunately I couldnt find any distributed with libraries of components so far. logisim is one popular one.
theres this cool game that runs on different systems incl PC/ps3/etc called Crazy Machines. 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 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. designs for at least one are in a widely available book eg lego mindstorms nxt thinking robots by Daniele Benedettelli. also, recently I saw this many degrees-of-freedom pneumatic robotic hand. see also the First robotics competition 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 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 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. the classic one from Papert with much academic study of its efficacy is Logo
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)
$\begingroup$ +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. $\endgroup$ Feb 24, 2012 at 18:06
1$\begingroup$ 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. $\endgroup$– Bill KFeb 24, 2012 at 22:14
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.
$\begingroup$ +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. $\endgroup$ Feb 24, 2012 at 19:49
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/
I think Planarity 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 , ...)
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.
$\begingroup$ @Saeed, Did I mention primality testing?! $\endgroup$ Mar 18, 2012 at 13:08
$\begingroup$ 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). $\endgroup$– SaeedMar 18, 2012 at 18:20
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.
2$\begingroup$ Yep. See Serge Gaspers' answer. $\endgroup$ Mar 17, 2012 at 20:18
study of the 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.
2$\begingroup$ Fractals are cool, but they aren't really a "concept in theoretical CS". $\endgroup$ Feb 25, 2012 at 19:45
$\begingroup$ still waiting over here for the official list of TCS topics, I define it broadly & this is supported by many others eg even spolsky. to me fractals highly fit in with empirical research. 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. $\endgroup$– vznMar 7, 2012 at 20:18
$\begingroup$ 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 $\endgroup$– vznMar 7, 2012 at 21:15
1$\begingroup$ I agree; this is better discussed in meta. $\endgroup$ Mar 7, 2012 at 21:27