I've always enjoyed solving various types of problems and puzzles. They offer various challenges that require the solver to detect the inherent patterns and develop methods to find the solution. For me, computer science offers many different types of problems in all stages of the software design that I find challenging and fun to solve.
At all levels of computing, writing a program is a grand puzzle. With the limited tools given, how does one build a working application to accomplish a given task? Which of the many available "toolsets" is best for the job? How will the relevant data be stored? Is there another way that is faster or uses fewer resources?
For a while, I was unsure about choosing computer science as a major in college. I knew I enjoyed programming, but did signing up for computer science condemn me to performing menial programming tasks for the rest of my career? I've definitely learned that it doesn't. The field of computer science is always changing and evolving, so there will be plenty of opportunities to try new things as I continue on. There are always new skills to learn and new challenges to tackle. I've definitely learned one thing for sure: computer science is so much more than writing small, meaningless C++ programs.