The study of computers, their underlying principles and use. It comprises topics such as: programming; information structures; software engineering; programming languages; compilers and operating systems; hardware design and testing; computer system architecture; computer networks and distributed systems; systems analysis and design; theories of information, systems, and computation; applicable mathematics and electronics; computing techniques (e.g. graphics, simulation, artificial intelligence, and neural networks); applications; social, economic, organizational, political, legal, and historical aspects of computing.
It is not a science in the strict sense of being a discipline employing scientific method to explain phenomena in nature or society (though it has connections with physics, psychology, and behavioural science), but rather in the looser sense of being a systematic body of knowledge with a foundation of theory. Since however it is ultimately concerned with practical problems concerning the design and construction of useful systems, within constraints of cost and acceptability, it is as much a branch of engineering as it is a science.