Theory of Computation Information & Coding Theory Algorithms & Data Structures Programming Language Theory Concurrent, Parallel & Distributed Systems Databases & Information Retrieval Artificial Intelligence Computer Architecture & Engineering Computer Security & Cryptography Computational Science Information Science Software Engineering A Balanced Introduction to Computer Science by David Reed, 2