This article is spot-on. It outlines why people like me are former professors, especially the tendency for departments to dial the math way back in favor of attracting students, keeping them happy, and graduating them to show the dean how much growth the department has experienced. When I covered recursion equations and how to solve them in introductory data structures and algorithms classes, most of the class proceeded to bitch and moan about it. When I assigned them exercises to implement associative data structures, the ones who used pre-built Java libraries and received 0 marks complained loudly. It seemed like such a waste of their time and mine.
I didn't like the article at all. The use of sophisticated libraries is progress. Now we can think at a higher level, allowing us to quickly prototype new ideas.
I agree that using sophiscated libraries is progress. That isn't the issue. The issue is that computer science graduates should learn how and why those sophisticated libraries work, not simply that they work. And, the best way to learn it is to do it.
Would you rather have brain surgery performed by a surgeon who learned his skill solely through telerobotics, one who actually cut a few heads open in his lifetime, or one who built the telerobotic system and cut a few heads open in his lifetime? I'll take the third.
Unless you specified that everything must be done by hand giving a 0 for using Java libraries was stupid. The important part about algorithms is not how to code them but how they behave.
IMO a good project for an algorithms class is to sort 20 GB of random floating point numbers. Having someone code a once off solution is of limited value as they will not recall what they did in a few months. However if you make them solve a problem and grade that. And then give them a harsh time constraint your students will learn something.
Strong words based on little details about my assignments. Actually, I had them do both (hand code algorithms and solve problems much more substantial than sorting random floating numbers). You should find out more before you call me stupid.
From what I have seen 95% of CS graduates don't understand how algorithms mesh with hardware. Sorting 20GB of data requires more RAM than they are going to have access to. So if they want to sort things quickly they are going to have to think about how access times alter an algorithms efficiency. So now we have an "easy" problem that exposes students to real world issues. Hand coding for a specific amount of L1 / L2 cache might have some value based on time constraints as is limiting the number of memory allocations by the OS etc.
IMO machine vision or other "hard" problems don't really help students at the introductory level as they use known methods by rote as apposed to rediscovering classic solutions to reasonable problems.
I have a BS in computer engineering and a MS in computer science... but I've never heard of a "core stack" (a stack trace in a core dump?)... am I one of those "incompetent" graduates?
I don't know. I've had to take a lot of rigorous math, theory, and algorithms classes while trying to get a CS degree. Talking to friends at other universities, it seems to be the same story. I don't get the feeling like I'm a special case. Does this mean I'm a shitty programmer, or are there just a lot of crappy software developers? I just couldn't imagine getting a CS degree without knowing what a compiler was.
Or, It happened in the HR department. Smart, capable coders that didn't get a bingo on the keyword soup get overlooked. Especially in the large "hey you kids get off my lawn" kind of organizations this gentleman is talking about.
The older worker suggested that the young engineer check the core stack to see about a problem, but unfortunately, "he'd never heard of a core stack."
And when you're done with that check the bit overflow on the accumulator register.
"They taught Pascal because it seemed to be pedagogically the best choice," Dewar says.
Err, "seemed" to whom? Say what you want about Java, but the tendency of schools to use Pascal was pure brain-damage. And I find it hard to believe that NYU went straight from Pascal to Java with no C/C++ in between. That's scary.
And when you're done with that check the bit overflow on the accumulator register.
Hell, why stop there? Make sure he checks the dielectric breakdown voltages on the microprocessor mosfet gates the machine code is executing on. These youngins have it too easy these days.