computer science algorithms theory and machines