Computer science or computing science (abbreviated CS or CompSci) designates the scientific and mathematical approach in information technology and its applications, notably computer software and sometimes hardware. A computer scientist is a scientist who specialises in the theory of computation and the design of computers.
Its subfields can be divided into practical techniques for its implementation and application in computer systems and purely theoretical areas. Some, such as computational complexity theory, which studies fundamental properties of computational problems, are highly abstract, while others, such as computer graphics, emphasize real-world applications. Still others focus on the challenges in implementing computations. For example, programming language theory studies approaches to description of computations, while the study of computer programming itself investigates various aspects of the use of programming languages and complex systems, and human-computer interaction focuses on the challenges in making computers and computations useful, usable, and universally accessible to humans.