- * Not only what a Universal Turing Machine is, but also why it's not just an information processing machine but every information processing machine
- * Not only that the proof of the Halting problem means that you cannot write a program that can fully debug other programs, but reason about what kinds of bugs can be detected by programs and what value such programs may provide
If this is the case, I would propose that you have 2 fundamental directions to choose from: whether you want your career to be based on technical contribution or business contribution. Both will involve apply your technical abilities, but you'll get visibility into different areas. This also isn't to say that your decision will be set in stone forever, but there will be discrete points in your career for you to choose to make switches or fine tune, and you'll progress faster if you can make a definitive decision on where to start so that you can start building.
Down the technical path, you want to look for a software developer position at a company whose core business is software and will establish your resume as a "real" programmer (as opposed to a copy-paste imposter). Get yourself in at Google and you can write your own ticket for the next decade. A friend of mine started at google, is now working as software developer at a pretty sweet startup that just went IPO, but, more importantly, is also one of the privileged people who has a direct line to the CEO of the company and is one of the key influential technical advisors to the company, even though they code as the primary part of their job. Challenge yourself to aim high, don't be afraid of being rejected at an interview. I have another friend who was initially rejected at Google, but was persistent, the recruiter got them an interview with a different org, and was hired.
Down the business path, look at consulting positions. Genuine consulting positions where you are flown out to clients to do development work, not where you are doing outsourced or in-sourced development at a fixed location. The travel is key, the cost of your travel is the signal that you are important; don't be fooled by claims of "work-life balance". If travel is a problem for you, go down the technical path. This will give you broad visibility into how technology is mapped to business problems, and open the door to a whole hidden universe of computing. The programming challenges will not be as mathematically interesting as in the technical path, but you'll be exposed to a lot of interesting and complex business problems. As the genuine CS guy, you'll be of unusual value to your firm. You'll be able to measure this concretely in that while you might initially need to travel to the same place over and over again for multi-month periods of time, you'll start traveling to more different places more frequently as an indication that your skills are valuable and rare, too rare to be locked up in a single project for a long period of time. This is accelerate your learning on the business side since you'll be able to ask questions to more different people and experience more different industries.
I might go a bit against the grain here, in saying that at this stage in your career, the money is not the biggest issue. You need to look at your first job in terms of the opportunities it opens for you for future jobs, and not so much in the immediate income. What's most important is getting yourself on a career path that has the steepest possible growth curve, rather than the highest starting point.
Just my 2 cents...