Computer science is the study of imperative (how to) knowledge, which is at the heart of problem solving. Imperative knowledge is expressed via algorithms, which are descriptions of computational processes that can be encoded as programs written in a programming language. Programs communicate imperative knowledge between people; they can also be executed by computers.
abstraction: capturing common patterns, hiding
information, making specifications (contracts)
modularity: expressing programs as the composition of
mix-and-match parts
problem solving strategies: divide-conquer-glue, recursion,
iteration
models: ways to understand how programs are executed