3 ms·
It depends on what you want from an "Algorithms" course; you could even split it into levels as follows: 1. Graduates can implement algorithms given a nice and
by NotOscarWilde 10y ago
It depends on what you want from an "Algorithms" course; you could even split it into levels as follows:
1. Graduates can implement algorithms given a nice and thorough description in a textbook or a website.
2. Graduates can implement algorithms given a few minute whiteboard explanation by a colleague or a short answer on a Stack Exchange site. (For a short answer example, look at some at cs.stackexchange or cstheory.stackexchange, where expertise is often assumed.)
3. Graduates can design and implement algorithms that are simple derivatives of those they have seen or implemented before, without any textual advice.
4. Graduates can design non-trivial derivatives of algorithms that they have seen before, given a problem that is not googleable (for example, it came up as a secondary question in your research).
The actual goal depends on the aims of your university or class.
The problem with any level besides 1 is that it seems to require an artificial test environment. You want to give the students easy exercises, say solvable within 60-90 minutes, and you want to give them as much freedom for their implementation environment -- but the reality is, any popular and "time-tested" exercise is fully solved online, most likely in full detail on Stack Overflow. (Speaking from experience, trying to "dress up" the problem in some alternate description doesn't work if the students can Google.)
And, predictably, if you forbid the access to the internet you get upset students, you provide an easy and effective way to cheat, and you give ammunition to the critics who call your testing methods "distant from any actual practice".
I don't know what the "right" answer is, but I am fully convinced that stopping at level 1, the only level where you can realistically allow access to the internet, is not the right way.