> I was so embarrassed I rushed into his office & demanded how he could make a fool of himself like that.
Why is it shameful to ask for help when you are doing something for the first time? Why such strong emotional reaction to that leading to berating from someone who is not even affected?
Algorithms are a branch of math - it is about proofs and structures and big O. It is about figuring out how to achieve right big O. Especially in their beginning, it was not necessary to know C in order study or teach them. Nowdays, typically they are not taught in C either.
> It is about figuring out how to achieve right big O.
That's hardly the whole story. I'd say the engineering work 'counts' as algorithm work, as much as the computer science.
If you're looking to publish in a top journal and prove how clever you are, an impressive time complexity is fantastic, even if the algorithm is completely impractical for real applications. Case in point at [0].
If you're looking at real-world performance, you don't especially care about time complexity, you care about, well, the real-world performance of your implementation. Maybe you'll improve time complexity too [1] (I suppose that counts as crossing from engineering to science), or maybe you'll just put in the engineering work without making breakthroughs in theoretical terms [2].
Algorithm courses in CS do not teach those real time performance considerations. They are about the math part and pseudo code. And I think they should not teach that. The real world performance issues area is heavily dependent on technology being used and changes over time, algorithm course is about basic platform neutral algorithms.
Those real time considerations should be taught, but in more courses that are focused on coding itself and by people who are focused on that area, are good at it and can explain it in depth.
A single prof does not need to be good everything and every course does not need to teach everything.
I agree that the practical side of things is quite a different specialism - computer architecture and compilers are different topics than the 'pure' study of algorithms. Today's emphasis on concurrency and parallelism does impact the theory, though; the worlds aren't entirely isolated.
I suppose my point is a semantic one: I consider the practical aspects to be a part of the study of algorithms.
> The real world performance issues area is heavily dependent on technology being used and changes over time, algorithm course is about basic platform neutral algorithms.
Well, the Coppersmith-Winograd algorithm will never be practical.
> algorithm course is about basic platform neutral algorithms
There's no such thing. That's why I mentioned Coppersmith-Winograd.
Looking only at the complexity properties of the Coppersmith-Winograd algorithm, you're unlikely to reach the (correct) conclusion that it's entirely useless for any practical application.
> Those real time considerations should be taught, but in more courses that are focused on coding itself and by people who are focused on that area, are good at it and can explain it in depth.
Agree, except to nitpick that it's necessary to develop a solid understanding of computer architecture, which may or may not fall under 'coding'. (That sort of expertise is beyond the knowledge of most coders.) Again, that's just semantics.
> A single prof does not need to be good everything and every course does not need to teach everything.
Agree completely, but it's important not to oversell the theory.
> There's no such thing. That's why I mentioned Coppersmith-Winograd.
Ok, but that is purely theoretical nitpick that has nothing whatsoever with what we are talking about. Algorithm courses dont teach Coppersmith-Winograd unless you are in some very special course that is designed for those few people who want exactly that out of interest and curiosity.
> Agree completely, but it's important not to oversell the theory.
The thread is about whether it was shocking for algo prof to not know C++ few dozen years ago. It is not, regardless of how useful C++ and architecture is.
Why is it shameful to ask for help when you are doing something for the first time? Why such strong emotional reaction to that leading to berating from someone who is not even affected?
Algorithms are a branch of math - it is about proofs and structures and big O. It is about figuring out how to achieve right big O. Especially in their beginning, it was not necessary to know C in order study or teach them. Nowdays, typically they are not taught in C either.
Edit: fixed typos