Foundations of Computer Science