>
Thereby wiping out shortwave reception for miles around.
I was not aware before your post that HomePlug interfered in HF shortwave. Sorry about that. But from what I can read, "...miles around..." is a bit of hyperbole for my little condo all by itself. The issue seems to become important in places where there is a high degree of adoption or else when used in ACCESS mode -- that is, to deliver broadband over the main lines.
If I ever get the chance, I will of course look into the actual interference to HF in my neighborhood. But until then, if you notice me interfering with your HF CQ, I will be glad to switch to MoCA. But I doubt my neighbors will do the same, so the shortwave community is going to need a regulatory approach to solve this problem.
In the larger world, adults are encouraged to "fit in" and they generally do this by figuring out how to use their strengths to smooth over their weaknesses so they present a fairly balanced image to the outside world. Children have not yet figured this out so they try to avoid things they are not good at.
This effect is really amplified in "gifted" children, so by middle school they often end up with enormous gaps in their knowledge base.
The only solution is to specialize your teaching for the individual students and engage them as much as possible. (Of course, this just defines good teaching in general.)
Warnings aside, there is a particular kind of professional satisfaction that comes from seeing a young child light up with an understanding that you yourself did not get until you were much older. I got that a lot.
My direct answer to your question is that you should use a variety of programming "languages" and that you should focus on the process. My logic here is that the students are liable to have a lot of different learning styles and some will respond to specific languages and thought processes better than others. You need to give them several opportunities to "get it." QuickBasic will appeal to very verbal students, Perl will appeal to more mathematical students, LOGO will appeal to very visual students, etc. I suggest you try teaching at least 2 languages, possibly in parallel.
I know this is probably sacrilege in this forum of zealots, but I believe that the dialect one programs in is irrelevant. The question du jour is: Should functional programming replace OO? But next week, someone may wake up and realize that Fortran compilers have been optimized for parallelization on big iron for decades. If that "news" gets traction on slashdot, we may all flock there. I say: "who cares?" Programming is mostly a thought process verified by thorough testing. The very hardest part of programming in any language is deciding what the program should do and creating a language-independent flow chart.
I would certainly NOT suggest that you use C or java as a first language. Your students are going to need more positive feedback than a hard-to-read language and a persnickety compiler will allow.
My own opinion is that "sloppy" programming is OK in the early years. For most, their programs will be like a poor piece of student art that they learned a lot from. When they get a programming job or take a college class, then they can learn to format properly or die.
Some ideas for you
With a group of really young students (9-12 years old), I created a large human calculator in the hall. Each person only has to consider the past and present state of their neighbor(s). They do not individually see the big picture until the calculations are done.
When I taught a combined Physics/Calculus class (mixed ages), I required a High-School-Standard TI calculator, assigned subroutines to various students and then assembled the routines into a single program for testing. I could tailor the complexity to the ability of the particular student and they were all doing something different which was pivotal to the success of the overall classroom effort. If someone got stuck, we could discuss the individual problem as a class. That was very effective.
Addressing your PS question, whenever I pick up a new language, the first program I write is a Monte-Carlo simulation of Pi: Create a Vector with 2 Random numbers 0-1. (a box) Increment an overall counter. Is the length of this vector less than 1? (an inscribed circle) If so, Increment a test counter. Compute Pi from the ratio of the 2 counters. Loop until desired resolution is reached (or timeout if the randomization routine is not very good). (Optional) Write and test additional randomization routines. (Optional) Display the results so far.
Another one that I really like is the Prime number sieve.
One that I never actually implemented, but thought about a lot was stitching images together. This would require reorienting and testing for a best match, then stretching and blending pixels. A lot of visual stuff.
Finally, I would offer up a random walk visualization for your consideration. (Simulates confined gas molecules.)
Something I suggest you include in your curriculum is recursion, which is not really very natural.
Hope this helped.
Term, holidays, term, holidays, till we leave school, and then work, work, work till we die. -- C.S. Lewis