How Not to teach a computer language
mikescode.info
mikescode.info
Where I'm from, Computer Science is an applied mathematics discipline. Our introductory courses are topics like Data Structures, Discrete Mathematics and Formal Models of Computation.
There's demand for something that's not your definition of computer science but which teaches a combination of theory and tooling. It would teach you some of the things you're talking about, but also cover practical stuff like SQL and TCP/IP. I think it's reasonable.
A pure networks course that teaches the standard theory without touching TCP/IP would be doing you a disservice for all but a few very academic futures. Same with data and SQL.
The purity you talk about can be taken a lot further. You could concoct arguments for avoiding C and unix throughout the course because you don't want to streamline people into certain ways of thinking.*
People learn lots from considering the practicalities that come from hacking around on existing tools. I took a technical-college unit in VB once and remember learning about the value of standard libraries and interactive debugging from this experience.
* Hmm. This could amazing. Imagine a course where you started by learning how to build hardware, and then learnt how to script it with machine code, and gradually learnt how to recreate lisp in assembly. Plagiarise all you like but if you can't defend your ideas at interview you won't pass. Better still if the course could be assessed by your progress through the stack and assessment by interview rather than on fixed exam periods.
Other courses would cause you to learn languages (for example, one would cause you to learn Scheme, one would cause you to learn Prolog) to demonstrate particular quirks of language design, but that's a means to an end. Most of them were things like "Algorithms", "Foundations of Computer Science", and "Introductory A.I."
(To clarify: I'm talking about schools in São Paulo, Brazil. No names mentioned because I've no first-hand experience — maybe they do have better courses and my friends are the ones picking the language-and-framework–related subjects.)
Also, in programming there seem to be a lot of people who have a good education, even significant experience, but struggle to do the work. I wonder how much this is true of other fields, like accounting, mechanical engineering, or medical. Higher quality education in those fields? (Certainly more education and training in medical.)
The difference was that one teacher could present the material in a way that people understood, and the other could not.
Knowing how to pass a test isn't particularly valuable.
On the contrary; a huge number of job opportunities these days are off-limits to those without a bit of paper saying they passed a certain (set of) test. Whilst the actual knowledge/skills are ultimately far more valuable, you still need the opportunity to use them.
Test-taking is itself a skill, and one that can ultimately provide quite a bit of value.
Has anyone thought to compile a list of schools outside the MIT/CalTech/CMU/... level that still teach something resembling computer science? Or are they all just bad IDE trade schools now?
Students can still study more theoretical topics, but they have to seek out the classes.