Some Computer Science Principles to Live By

  1. Cache everything.
  2. Make the common case fast (and the rare case correct).
  3. Use randomness to probabilistically avoid the worst case.
  4. If neither approach works really well, try a hybrid approach with a way to decide when to use each technique.
  5. Add a level of indirection.
  6. If you can't solve a hard problem, first transform it to an easy problem, then solve the easy problem, then transform the solution back to the hard domain.
  7. Before you start, do the math, know the best case, and remember Amdahl's Law.

Things They Don't Teach You In Grad School (But I Learned Them Anyway)

Under construction...watch this space.


Principles of System Architecture

From an IEEE Spectrum article (Oct 92?) about systems architecture. For your reading pleasure i have reproduced below a list of heuristics for building a system. This list appears in the article and is reprinted from Systems Architecting: Creating and Building Complex Systems, by Eberhardt Rechtin, Prentice Hall 1991.

The conceptual phase

The build and test phases

The operations phase


fox@cs.stanford.edu