Computer science spans theory and practice, and requires thinking in abstract and concrete terms. The practical side of computing can be seen everywhere — a myriad of us walk around with miniature computers/smartphones in the pockets, and many can even program them. Getting computers to do what students want them to do requires intensive hands-on experience. On a higher level, computer science can also be considered a science of problem solving.