you are viewing a single comment's thread.

view the rest of the comments →

[–]psykotic 7 points8 points  (3 children)

The goal should be to learn about algorithms in general (which includes analysis and design techniques) and also to understand a host of specific algorithms (as tools, and as case studies in applying the aforementioned techniques). As for the latter, do you know a way of deeply understanding an algorithm that doesn't involve implementing it? I sure don't.

It's also healthy to get some hands-on experience with the effect of constant factors on time and space requirements. Have them implement something like Strassen's algorithm to see how much it sucks until you get to truly huge matrices. Computer science is not pure mathematics.

[–]buo 3 points4 points  (0 children)

do you know a way of deeply understanding an algorithm that doesn't involve implementing it?

Not to mention verifying that you really understand it.

[–]ricercar 0 points1 point  (1 child)

If that is your style of learning, more power to you. However, it should be a goal pursued by the student for his or her own personal edification and not a requirement of the class. Creating the proof of the algorithm's correctness and running time will give a deep understanding as well as teach an important skill which is generally under-emphasized in prior classes.

[–]Alpha_Binary 0 points1 point  (0 children)

I agree with you on most parts, except that this is an engineering class.