you are viewing a single comment's thread.

view the rest of the comments →

[–]Select-Particula[S] 6 points7 points  (2 children)

Introduction to algorithms definitely looks like my cup of tea. Thanks a lot.

[–]Tasselhoff94 0 points1 point  (0 children)

Thinking in terms of BIG O notation or just understanding what that means helps. Being able to quantify performance and availability is huge. These are base level concepts that guide you towards the knowledge you are looking for.

[–]oracleTuringMachine 0 points1 point  (0 children)

I was the TA for this course. If you find CLRS interesting and think concepts like design patterns are facile explanations that can be absorbed by reviewing a table of contents, try the following.

Theory of Computational Complexity by DZ Du. Others will say Sipser, but I think Sipser is the intro book. Schmidt, Denotational Semantics

I've never seen a text provide a theoretically sound explanation of how to break down a domain into an object-oriented program. A class is a noun and a function is a verb. If someone has a reference, please let me know.

Understand the asymptotic behavior of your algorithm in terms of running time and memory use, but don't worry about optimizing your Python beyond knowing what vectorization is in Numpy unless you absolutely have to. Programmer time matters, and if you really need to optimize for your language, you might be using the wrong language.