The other thing is that in order to learn, children need to have fun. But they have fun by really being pushed to explore and create and make new things that are personally meaningful. So you need open-ended environments that allow children to explore and express themselves.
(This Inventor Is Molding Tomorrow's Inventors, IEEE Spectrum)
IEEE Spectrum has a (short) sit-down with Marina Umaschi Bers, co-creator of the ScratchJr programming language and the KIBO robotics kits. Both tools are aimed at teaching kids to code and develop STEAM skills from a very young age. Other examples of such tools are the mTiny robot toy and the Micro:bit computer.
Being able to code is a new literacy, remarks Professor Bers, and like with reading and writing, we need to adapt our learning tools to children's developmental ages. One idea here is that of a "coding playground" where it's not about following step-by-step plans, but about inventing games, pretend play and creating anything children can imagine. She is currently working on a project to bring such a playground outside: integrating motors, sensors and other devices in physical playgrounds, "to bolster computational thinking through play".
Given how fast complicated toys are being thrown aside by young children, in contrast to a simple ball -- or a meccano set, for the engineering types -- I have my doubts.
At least one of the tools mentioned above is aimed at toddlers. So put aside your model steam locomotive, oh fellow 'lentil, and advice me: from what age do you think we should try to steer kids into "coding" or "developing", and which tools should or could be used for this?
Feel free to wax nostalgic about toys of days past, of course, in this, one of your favorite playgrounds: the soylentnews comment editor.
(Score: 3, Insightful) by VLM on Thursday October 31 2024, @06:27PM (6 children)
I agree with you more or less but I think you're aiming at the wrong target.
The goal of fake teaching languages is teaching the K-12 Education major kids who became teachers how not to get fired at work, well, at least help them.
The kids who can learn by themselves already outnumber the jobs in the field, so no real need to teach the kids who can't figure it out on their own.
I was messing around with Zephyr which is a C RTOS for microcontrollers and I just read manuals and mess around and generally it eventually works, in fact works pretty well. Kids raised on the idea that a teacher will always be available to teach them and they can take a class and getting a grade means they know what they're doing will be very disappointed when they hit the workforce and the boss is like "I donno either, use Google to figure it out like everyone else"
In the early 80s we took inspiration from "choose your own adventure" books to write BASIC text adventures in school. Some good, some not so good. Add in a couple DnD sourcebooks (cue 1980s "satanic panic" ominous music) and it was a good time. This is just kids playing, not a curriculum. I also learned a lot about math as a kid by figuring out how to draw graphs in basic and finding pages of functions in the BASIC instruction manual and "log(), wtf is a log()? I guess I'll graph it and find out" And I did. Trig also. Oh that's how I can use BASIC and sines and cosines and tangents to find the lengths of sides of triangles and stuff. No idea why I'd want to, but I could. I was about 7 and couldn't think of any reason why I'd ever want to do that, but I knew how.
(Score: 4, Interesting) by JoeMerchant on Thursday October 31 2024, @07:57PM (5 children)
>The kids who can learn by themselves already outnumber the jobs in the field
Maybe, but connecting those kids to the jobs is a significant challenge.
On the interviewing side, I'd run about 10 well screened resumes through the in-person interview for graphics programmer before I'd find one that really had the skills. The other 9 had resume polishing skills, on paper they were indistinguishable from the good ones, but a simple practical test - 15 minutes or less for one skilled in the art - sorted them very well. Never was disappointed with anyone who passed the test, was disappointed 4/5 when we couldn't find a test passer and just took whatever seemed best from the interviews.
🌻🌻🌻🌻✌️ [google.com]
(Score: 2) by VLM on Thursday October 31 2024, @08:09PM (4 children)
LOL let me guess, Bresenham's line drawing algo. So many ways to mess that up which makes some entertaining discussion. Some interesting optimizations if you've got the time.
How bout this for fun: I would ask them to draw a circle and see how many of them are smart enough to understand symmetry. You don't really have to calculate a circle, just a 45 degree arc. Shows who starts typing before they start thinking.
Or if the interview candidates are REALLY weak, "A function that draws a rectangle and fills it in" That'll filter some.
Graphics programming is fun because you can visually see mistakes rather quickly LOL.
As I've gotten older I went thru a phase of not liking fizzbuzz but as I've gotten older I feel its really a test of seeing what they do to avoid panic. Oh you're an expert with C# on Visual Studio looks like we're doing it with Clojure on Emacs or you can use awk and a makefile.
(Score: 3, Interesting) by JoeMerchant on Thursday October 31 2024, @08:45PM (3 children)
Ours wasn't so sadistic. Now, the man who hired me using that test was sadistic in many ways, but the test itself was pretty simple and a little clever:
"Use (insert programming tool of the day) to draw ten cycles of a sine wave on the screen, decaying from 90% to 10% of the screen amplitude."
I impressed him because I used #defines for the screen width and height and computed from there...
Over the years, I had a couple of candidates who insisted on decaying the amplitude exponentially rather than linearly - one even asked, and we readily told anyone who asked: linear decay. Starting at 0.9 * sin(x) and ending at 0.1 * sin(x) was full marks, anything else was a personality test. We didn't hire the one who insisted on making it exponential anyway even after we told him it should be linear.
Had a couple who obsessed over the fact that the first peak of the sine wave would be slightly below 90%, tried to work out how to make it exactly 90% at the peak (and got close, but failed to nail it with the exact formula) - nice attention to detail, but un-necessary and a little sloppy.
Had one who was trying to make it work discretely: one cycle at 0.9, next cycle at 0.8, next cycle at 0.7, ahhh crap, when you get to the 10th cycle that's 0, start over... Discrete thinker, hard worker, maybe not the brightest bulb...
Had one from East Germany, did the test remotely so when he came in person I asked for the plot in polar coordinates, which he whipped off like it was nothing. But... his girlfriend was too scared of the big bad city to move there. Disappointing, we were paying him enough to get an apartment walking distance to South Beach, nice spot on Venetian Causeway - one of our employees moved there after I pointed out how affordable and well located it was for him and his GF.
The failures ranged from immediate rage-quit walk-outs to hours upon hours of effort, but no real progress shown. If they weren't getting some kind of wave on the screen after 20 minutes, it never happened.
Later years, I set them up in Qt Creator with a starter program that drew a box outlining the edges of the display window the sine wave was to be drawn in, still... most of the "Graduated with honors, classes in computer graphics, X years experience in multiple jobs doing computer graphics programming in C++" candidates never could iterate across the screen to draw a time series signal. Even after giving them clues like: try a for loop from left to right...
One was an attractive Chiquita who told us she just had to run back to school real quick, she'd be back... She came back within about 3 hours, both in a lower cut blouse, and with the answer memorized which she typed in quickly. I basically asked her: if I give you this similar problem here and now, will you be able to do that one without asking a friend? Leaning over the table she told me, "no, not really." I told her "ask your friend if they want the job."
🌻🌻🌻🌻✌️ [google.com]
(Score: 2) by VLM on Friday November 01 2024, @02:30PM (2 children)
Ooof brutal filtering the poor EE. You could have trolled him and asked what the Q value would be of a L-C filter if the decay was your 90% after six cycles. I'm sure if you gave them a scribble of what it should roughly look like it would be OK. Unless part of the test was seeing if they'll try to define the problem clearly before starting work, always a good idea. I think verbally you mean draw a sine wave with an amplitude of 0.9 at x=0 and 0.1 at x=width and 6 full waves. You probably don't mean 6 positive and negative peaks in total which would only be 3 full waves to the poor EE dude you filtered.
Waaay too early in the morning for this but if Q is about 2pi*energy stored/energy lost and you're losing 10% per cycle so if it were exponential across six cycles that would be a Q of like "five ish"? Not exactly a crystal filter but ...
If I'm hearing you right you mean in Python using math library (not because Python is good but it is a good lingua franca everyone "knows" or thinks they do anyway) you want something like points for x and y to plot are a for loop for X from 0 to width and Y is something like (0.9-x/width*0.8)*math.sin(6*x*math.pi/width)+height/2, so like amplitude going from 0.9 at the left to 0.1 at the right edge times the sine from 0 to 2pi times six so you get six FULL wave cycles plus half the height because presumably you want that centered. I donno I just woke up and haven't had any tea yet so I probably forgot something obvious that would appear if I ran it. Even if that's wrong maybe its getting across my interpretation of the spec in pseudocode.
Would be hilarious to ask them for a sine wave and draw them a picture of a cosine wave and see how they handle the interpersonal conflict.
There are of course details like you'd probably prefer line segments from previous point to current point, not just slappin unconnected dots on the screen, etc.
vs
Oh now that's a little unfair. Whip out some sines on the screen on an 80s home computer in about 5 minutes but having to write an entire KDE app complete with menus and stuff, that's a lot of work unrelated to graphics and sines and stuff.
(Score: 2) by VLM on Friday November 01 2024, @02:32PM
Oh for goodness sakes I'll come back to this after I wake up but probably
(0.9-x/width*0.8)*math.sin(6*x*2*math.pi/width)+height/2
(Score: 2) by JoeMerchant on Friday November 01 2024, @03:54PM
Well, the "empty box app" in Creator was less than 10 lines of code... all the windowing stuff comes along for the basic project setup as a GUI app. That was the point of drawing the box for them, so they already had the graphics object all set up and line draw examples to "draw on." We were already in Qt4 by then.
>part of the test was seeing if they'll try to define the problem clearly before starting work, always a good idea.
Absolutely. If I were designing the test today, I'd probably include a user input of some sort and see if they sanitize the input or not, or at least ask about input sanitization.
I don't know if I have 15 minutes of patience, but: "10 cycles of a sine wave" - I think I asked: "just to be sure, that's 10 up and 10 down?"
So:
I think during my test the include of math.h didn't work on whatever environment they had me in, possibly a tweaked Turbo C?, so I just replaced 10 with 62.83185
As you said, debugging goes pretty quick when things don't look like you expect.
🌻🌻🌻🌻✌️ [google.com]