Computer Science is the study of computation – what can and cannot be computed, how computation can be made more efficient, how to build machines that can compute, and which spheres of human activity can benefit from computational approaches. Computer Science is deeply rooted in logic and mathematics. Theoretical Computer Scientists are constantly pushing the frontiers of computability by inventing new computational approaches. Practical Computer Scientists are problem solvers who apply the theory of Computer Science to different application areas like science, finance, medicine, entertainment, education, and communication. In our modern world, applications of Computer Science are ubiquitous – from email and smartphones to online social networks, web banking, and animated movies.
The study of Computer Science requires thinking in both abstract and concrete terms. Humans are intelligent – we perform many actions naturally: weighing a set of decisions to find the best one, recognizing the person in front of us, appreciating art. To instruct a computer to perform these actions involves building an abstract model for the problem and specifying a set of simple, precise operations to be performed on the model. The set of operations is termed an algorithm and machines that can execute algorithms are called computers. Coming up with the model and algorithm are referred to as problem solving which is often aided by a good understanding of mathematics. Computer programming, or coding, encodes the model and algorithm using a programming language into a program which a computer can understand and execute. Generally, programs are referred to as software. Software can get quite large, necessitating Software Engineering principles to design it efficiently and to manage it.