Computer science is the study of computation and information. Computer science deals with theory of computation, algorithms, computational problems, and the design of computer systems hardware, software, and applications.Computer science addresses both human-made and natural information processes, such as communication, control, perception, learning, and intelligence, especially in human-made computing systems and machines.
Its fields can be divided into theoretical and practical disciplines. For example, computational complexity theory describes the amount of resources required to solve computational problems, while computer graphics and computational geometry emphasizes more specific applications. Algorithmics have been called the heart of computer science. Programming language theory considers approaches to the description of computational processes, while software engineering involves the use of programming languages and complex systems.
Computer architecture and computer engineering deals with construction of computer components and computer-controlled equipment. Human–computer interaction considers the challenges in making computers useful, usable, and accessible. Artificial intelligence aims to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, motion planning, learning, and communication found in humans and animals. According to Peter Denning, the fundamental question underlying computer science is, “What can be automated?”