|
Personally, I think there is far too much focus on 'which language', rather than on the fundamentals of how to think/reason about a program, troubleshooting, and exposure to the actual documentation. Once you have a solid grasp of one language, picking up others becomes much easier. So someone who only has Javascript experience would likely be able to at least grok the basic structure of a c++ program. I feel the main problem with all the intro courses I have ever taken was too much reliance on textbooks/tutorials, and too much desire to over-simplify. I remember multiple people I took CS101 (Java) with who had no idea how to do anything outside of eclipse, and when they wanted to expand their skills through self-study had no idea how to use the documentation in a helpful manner. They knew how to write a class diagram, but all functions & classes had been introduced piecemeal, so they got overwhelmed looking at the official docs & just gave up out of frustration. That said, I don't think something like haskell or straight assembler is a good choice, but any of the C-likes or Python would be fine, the differences just aren't great enough to matter much for the absolute beginner. A strong case could be made for Javascript, simply for ease of development, since any computer is almost guaranteed to have the basic software for writing, executing, & debugging. It is far from my favorite language, but for early intro courses I think pedagogy is far more important than language or tooling. And personally, I feel that the only 'CS' that should be required for all students is keyboarding. Does someone who wants to go into the trades (excepting trades like machining) really have any urgent need for programming? However, almost any job will require typing skills. Students have limited time, and I think it's foolish to force everyone to learn to program. Those classes have their benefits, but so do music classes. But, given avaliable time and resources, should we also require all students to learn an instrument? |