Algorithms for Large Data Sets: Theory and Practice