Communication-Avoiding Algorithms - Part I of II