Algorithmics: The Spirit of Computing (2nd Edition)