3 Data Structures Homogeneous Heterogeneous Arrays Linked Lists Algorithms Sorting Searching Graph Shortest Path Dijkstra Floyd Distributed Shared Memory Message Passing Mobile Computational Geometry Voronoi Convex Hull Theory of Computation Upper Bounds Time Space Lower Bounds