Hacker News new | ask | show | jobs
by LAIFscratch 1618 days ago
There are people working on this rigorously, try going through Prof Krishnamurthi's papers: https://cs.brown.edu/~sk/ he teaches higher-order functions because they've found it helps students understand how an API works, he designed his own learning language from scratch (Pyret) and I went through much of his older CS19 Brown course here: https://learnaifromscratch.github.io/software.html because the course uses a web browser IDE, they were able to take stats of all students to see when they started to write code VS when they wrote examples and tests. The tests he teaches are property-based not typical cs101 style tests just plugging in edge cases and hoping for the best. His goal is to turn the teaching of programming from absolute guesswork and wishful thinking into something proven to work which is admirable, most CS professors that I had just taught whatever they felt was best for them when they first learned, not what is provably best for everyone in a large class.

Of course the answer to everything is 'just be motivated and dig deep into X then you will learn as you go' like building a program from scratch, or how some mathematician's learned by being fascinated with various topics and purely researching them on their own for hours on end. For some people this will work others will just give up when it gets too difficult, I find it's something you can do after 1/2 of a course, you have just enough education to be able to read the documentation and now you can actually teach yourself whereas before that just attempting cryptic docs about types and objects good luck.

Then of course there is getting paid to program, which requires specific skills you would never get doing ad-hoc hacking around for fun. You actually have to go on Kattis or Leetcode and bang out countless tiny algorithms where each one you have to defend your architect choices with analysis of it's complexity to a room of professionals with vastly more experience than you, and this is of course what most people want when they tell you 'teach me how to code' it's really 'teach me to make money from my laptop like you do'.