Computer science, or computing science, is the study of the theoretical foundations of information and computation, and their implementation and application in computer systems. Computer science has many sub-fields; some emphasize the computation of specific results, such as computer graphics, while others, such as computational complexity theory, relate to properties of computational problems. Still others focus on the challenges in implementing computations. For example, programming language theory studies approaches to describing computations, while computer programming applies specific programming languages to solve specific computational problems with solutions. A further subfield, human-computer interaction, focuses on the challenges in making computers and computations useful, usable and universally accessible to people.