It depends a lot on your goals. If you want to work at a large corporation, many of them screen resumes based on whether you have a CS degree. On the flip side, I work at a startup where out of 7 excellent engineers only 3 have CS degrees and 2 have no college degree at all.<p>A CS degree will help you get your foot in the door for your first job regardless. Once you have a few years of experience your degree matters much less - with a few exceptions (including the large corps mentioned above). If you want to work on "hard" problems, a CS degree (or at least a minor plus a math major) will be valuable for the work as well as the hiring. (A math major or - if you want to work with hardware - an electrical engineering major plus CS coursework are nearly equivalent to a CS degree for many employers in general, but HR departments too often use software to filter by too-narrow requirements.)<p>On the flip side, if you just want to build basic web and mobile apps, you can get started in a career with not much more than basic practical knowledge of a scripting language, one database, and HTTP. (But the more you know and can demonstrate you know, the better!) For entry level jobs in this part of the field, big corporations still tend to care more about credentials but startups care more about demonstrated experience.<p>If you want to go into programming in any shape or form, and if you do have the opportunity to take CS classes alongside other coursework, I'd particularly recommend taking classes on algorithms and data structures (including the infamous big-O notation), a bit about encryption, and if possible the underlying lower-level underpinnings of programming (from logic gates to assembly, bits, bytes, pointers, and machine language). And the problem solving part mostly comes from experience!