Ask HN: Do most schools teach programming the wrong way?
I found out that Waterloo CS uses How to Design Programs(HtDP) to teach programming. I have had the same realisation while working through HtDP.
I realised that I was taught programming all wrong. It was always about looping constructs or chunking out sphagetti code into functions in the wrong manner. No one taught me to think about data first and then in functions that the data should go through. Instead I was taught to head first start writing sphagetti code and then seek for repetition to build functions out of it.
I see popular schools using languages like Python or C as their introductory languages in CS departments where students have no background in computer architecture or electronics and teaching them in the first course to do bit manipulation and all low level memory stuff. The students get stuck in syntax and memory manipulation hell. When they come out of the course, very few of them can turn unclear problem descriptions into code until they are given "fill in the blanks" type of instructions. And no one teaches you to read documentation also. That is another biggest flaw.
Of course, systems programming is important. But not as a first course where you have no idea about the underlying electronics. The old school hackers did that because they were much close to the hardware and had idea about electronic circuits and design. Teach C or other low level stuff later on.
I see curriculums of top schools like MIT, CMU, Berkeley. Everyone is participating in the same wrong rat race. I don't know what kind of engineers they are producing.