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 According to Peter Denning, the fundamental question underlying computer science is, What can be automated Its fields can be divided into theoretical and practical disciplines. Computational complexity theory is highly abstract, while computer graphics and computational geometry emphasizes real-world applications. Algorithmic is 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. Computer science is the study of manipulating, managing, transforming and encoding information. There are many different areas in computer science. Some areas consider problems in an abstract manner, while some need special machines, called computers. A person who works with computers will often need mathematics, science, and logic in order to design and work with computers. Algorithms are a specific set of instructions or steps on how to complete a task. For example, a computer scientist wants to sort playing cards. There are many ways to sort them - by suits By deciding on a set of steps to sort the cards, the scientist has created an algorithm. The scientist then needs to test whether this algorithm works. This shows how well and how fast the algorithm sorts cards. A simple but slow algorithm is: drop the cards, pick them up, and check whether they are sorted. If they are not, do it again. This method will work, but it will take a very long time. A better algorithm is: find the first card with the smallest suit and smallest number (2 of diamonds), and place it at the start. After this, look for the second card, and so on. This algorithm is much faster, and does not need much space. This sorting algorithm is called selection sort.