Hacker News new | ask | show | jobs
How Not to teach a computer language (mikescode.info)
25 points by mwgriffith 5344 days ago
7 comments

HTML, SQL and VB.net... as courses in a Computer Science program? I don't understand. You might as well have a course on PowerPoint.

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.

I've seen writing and communication courses scheduled into engineering degrees too.

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.

Indeed. The school I attended had two disjoint (as in, nobody ever took both), non-required introductory "programming language" courses whose goal was to give the students a language in which to complete the assignments for the real CS.

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."

I didn't study CS in university, but my friends who have often mention subjects named after languages and frameworks (remarkably, I remember hearing about a year-long course on COBOL "because most national banks have a backend writen in COBOL").

(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.)

Agreed, sounds like an Information Systems curriculum - a trade vs. a field.
She's currently going for an Associates degree at a technical college and then she's going to go for her Bachelors at another school. She'll get into Data Structures and the rest in another year. That's basically the way I was taught with a couple of languages first and then the real classes later. (Although my languages were very different at the time.)
As someone who has interviewed many programmers (and hired a few) over the passed two years, I find a surprisingly low correlation between education level and competency. An M.S. in C.S. does not impress me the way it used too. :)

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.)

Falls flat on its face as an example of how not to design a website (doesn't display anything in Safara on an iPad).
Yup. Nothing displayed on the iPhone as well.
Odd, works fine on mine. Perhaps the site was just down?
Retracted - working now.
Haha, that was the exact same i was thinking!
Yes, bad teachers can absolutely ruin it. I had a stats prof that just destroyed the class. I failed, along with a great many students. Took it again with someone else, learned the material, and got an A.

The difference was that one teacher could present the material in a way that people understood, and the other could not.

Not that I'm defending a bad teacher, but to say programming vocabulary isn't needed in the real world is a sign of a bad programmer. Being able to communicate exactly what you're doing is as important as actually doing it.
It was a poorly written sentence but I think he's trying to say the tests themselves are irrelevant. That's to say, the students aren't being taught anything they can later use in the real world, only how to pass the test.

Knowing how to pass a test isn't particularly valuable.

That's exactly what I was trying to say. Don't get me wrong knowing the terminology is a good thing to have, but if you don't have the skills, how can you be a programmer?
> 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.

Indeed. The question from there is, does it get you the job you want? If you only have the skill to pass a test, how valuable will the work you get be to you? Just a means to an end maybe?
This should just be called "How Not to Teach." It doesn't matter what subject we're talking about, if these factors are in play (bad teacher, bad book, mostly irrelevant tests), students won't learn.
Nice, it's the embodiment of every negative stereotype of CS programs.

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?

Even MIT's basic undergraduate curriculum seems to be teaching CS less and less. It seems like the modern curriculum is geared towards learning how to use Python / Java in productive ways.

Students can still study more theoretical topics, but they have to seek out the classes.