Cake
  • Log In
  • Sign Up
    • Coming from the maths world, I’m very aware of the debate over teaching algorithms versus teaching problem solving skills. This is a great article on the creative problem solving process and the art of coding, which programming books for kids fail to teach.

      This is why I don’t want my kids to learn syntax. I want them to learn to solve problems, to dive deep into an issue, to be creative. So how do we teach that?

      @mazed70

    • I’m nodding “yes!” over here. My degree is in chemistry and my favorite class in college was probably a chemical engineering class I took on creative problem solving. It was just a single credit class and it’s really stayed relevant as my life has changed in the fifteen years since.

      As a homeschooling parent, I can see how taking the time to make sugar cookies (or do any process you value) and including your kids in that instills values more rare and enduring than syntax.

      On a related note I’m becoming more and more convinced that the liberal arts, which teach you how to discern truth and ask excellent questions, are an essential and oft overlooked foundation for being successful in the STEM realm. I think we are so focused on the end goal (creating engineers and scientists!) that we’ve lost touch with how excellent engineers and scientists are made. It’s far more often in tinkering with stools. My kids and I loved to hear about some of Isaac Newton’s early efforts at play and problem solving. :)

    • Interesting. My favorite classes on science were about the history of science — how the greatest discoveries were made. My favorite books on writing are about how to solve the problems of telling stories, not about the syntax of sentence structure.

      Isn't programming is just a language to solve problems just like English is just a language to tell stories? And the most important thing is to understand problem solving and storytelling?

      As a real-world example, one of my sons loved programming so we used it for his science fair project. The question was why do some buildings fall in certain earthquakes and different buildings fall in other earthquakes in the same area? The hypothesis was that beyond reinforced concrete, individual earthquakes have their own dominant frequencies. If that frequency happens to be close to the resonant frequency of a building, then the building will sway at 10x what it would at another frequency. Damage could then be severe.

      So we constructed a shaker table interfaced to an electric motor, controlled by software so we could shake the table at different frequencies. Then we placed "buildings" on the table. We could choose which building to damage based on the frequency we chose.

      For math geeks, there is a linear relationship between the resonant frequency of a building and its width, but a squared relationship with its height. Since earthquakes usually have a dominant frequency around 13 hertz, it's the 4 and 5-story buildings that are most at risk in common earthquakes, not the taller or shorter ones. But very small differences in height can make a big difference with any particular earthquake.

      So learning to code wasn't the end-all, but it was very helpful for our bigger problem-solving goal.

    • Coding is just a means to an end. I think the question shouldn't be whether to teach kids to code or not - but how to integrate this skill of basically "talking to a computer" with the much more important skill of "being aware of what I actually want the computer to do".

      Back in the day, I was so happy when I was first allowed to choose a "computer sciences" course in school, because I already had dabbled with BASIC on my Amiga 500, trying to do things like 3D vector animations without really knowing what I was doing. The course turned out to be pretty boring, not because CS is boring, but because we were just taught a programming language but not the actual science of creating algorithms, discussing their performance, and trying to find a data structure that does what it needs to do without too much overhead.

      Our teacher was a maths teacher who got the job of CS teacher because someone had to do it, not because he was especially skilled. He often tasked us with mundane stuff like prompting the user and writing their answers to disk for later use, or sorting an array of a dozen elements - basically just repetitive stuff to use the latest language feature we learned about - but we never ever discussed a bunch of different sorting algorithms to find out why one is better than the other, or anything along those lines.

      Only much later I learned about stuff like Big O notation:

      or random examples of "creative" data structures like a ring buffer:

      Even spending some time researching and trying to build a Pseudo-random number generator:

      to learn about its pitfalls and the creativity that goes into creating a deterministic algorithm that has an output looking as non-deterministic as it gets, would have been a real eye-opener to me at the time.

      So, just telling someone which keywords to type into a word processor to make the computer light some or another pixel is not helpful on its own - in the proper context, though, it can be the best thing in the world, and just not telling kids about coding at all is not a solution. :)