
Know Your Algorithms – Stop using hardware to solve software problems - denzil_correa
https://queue.acm.org/detail.cfm?id=3310152
======
dlkf
This is great. I think that the state of computer science education is partly
to blame. When I was a student, a disproportionate amount of time was spent on
advanced topics that will almost never arise in the course of a typical
programmer's day to day work (e.g. the Ackermann function, skip lists,
b-trees). By contrast, very little time was spent on common sense reasoning
about the sort of programs that most software engineers spend most of their
time working on (e.g. noticing that you can use a set rather than a list, that
you can cheaply cache all outcomes rather than computing them on the fly,
etc).

The consequence is that students get proficient enough at the advanced topics
to pass their, but don't acquire skills that they can carry forward. (They
probably also forget what the Ackermann function is the minute they walk out
the door.) I suspect the impetus is that the status quo naturally gives rise
to the kind of grade distribution that we expect, and serves as an effective
filter for FAANG companies and grad school admissions committees. But you're
not adequately training the next generation of software engineers.

I am _not_ saying that schools should omit advanced algorithms and data
structures from the curriculum. But I think they could get more creative about
how they teach students to apply the basics.

