I must admit I don't consider learning a programming language something a university is supposed to teach you. They should teach you about concepts, and perhaps offer some optional seminars or workshops interested students could use for learning a programming language of choice.
Frankly, a "programming language" degree from a university would devaluate the value of the degree in my opinion (ie if a student would get points for knowing a programming language). Might as well just go for Microsoft Certification.
I also don't see why they have to agree on a standard programming language for the whole CS department. Why not let each teacher do their own thing, and let the students decide (teacher insists on Pascal -> students won't attend the lecture).
By selecting a language (or a couple of languges) they are trying to make it easier to focus on the concepts. Its hard to focus on the fundamentals when you have too keep looking up basic syntax. By limiting the number of languages they spend less time doing trivial projects, and more time focusing on new content. On the flip side letting students only use their favorite language (as they might if teachers select the language used without guidelines), then you get students who are far from language agnostic (i.e. inflexible).
Many would respond that learning a new language is trivial. And it is trivial to learn most of the syntax of a new language, but it is not necessarily trivial to set up a good programming environment (setting up slime and SBCL the first time threw me for a loop, things kept not quite working and had to be tracked down), nor is learning syntax the hardest part of learning a language. I find that the longest and most difficult component of language learning is learning which libraries contain which functionality, and the language specific idioms.
The problem with most CS courses (and any course in general) is that the class is taught to the lowest common denominator of students. Yes, a class can have pre-requisites, but the first required CS classes for freshmen cannot.
Some colleges don't require any previous computer experience to become a CS major, just as long as you can pay the tuition. In such cases, you can't assume any basic programming knowledge without turning the intro courses into programming language courses in some base language.
But I agree with you on the last part about not having one language for every course in the department.
I agree that it's silly to have a "programming language" degree. However, isn't it a basic requirement to be fluent in the language to think in? English literature major would require fluent English, math major would require fluent to read mathematic notations, etc. Teaching concepts to those who don't know the language well to describe them seems impossible to me.
Neither do the professors. As an undergrad I did as many assignments in Lisp as I was allowed to, but I found that to all but two professors (one specialized in AI, the other in PL), Lisp was just "that weird 70's language with all the parens".
I think academia would generally respond that CS is about the concepts not the syntax.
Universities need to do a better job raising street fighters, but I don't think it needs to be through course load. There needs to be more programming competitions, more open ended assignments, more CS related clubs and projects, etc. Sure not everyone will participate, but if they don't, they are never going to be good programmers anyway.
And lets face it, if universities had more ways to allow students to implement fun things like games or robots (or startups), they would certainly be more willing to spend their extra cycles out of class learning implementation.
I totally agree. As acgourley said, not everyone will participate, but these sorts of programs would give a solid opportunity to develop more practical skills to people who aren't willing to take initiative to learn it entirely on their own. I'm strongly opposed to the idea that the Algorithms or Theory of Computation class should be traded in for a course on .NET GUI Development, Ruby on Rails, or some other API-du-jour.
University is about learning concepts and theory, not just a few programming languages and APIs. The real problem is that trade schools are unfairly stigmatized, and people who want to learn to be a programmer without wading through all the algorithms and theory have to still go to a University for social reasons when they'd be better served by a trade school.
Frankly, a "programming language" degree from a university would devaluate the value of the degree in my opinion (ie if a student would get points for knowing a programming language). Might as well just go for Microsoft Certification.
I also don't see why they have to agree on a standard programming language for the whole CS department. Why not let each teacher do their own thing, and let the students decide (teacher insists on Pascal -> students won't attend the lecture).