AC10 said:
If you want to become an expert programmer you should start off with a degree in computer science or software engineering and go from there.
Having done a Software Engineering degree, I'd advise the opposite. Most of the really good programmers I know are self-taught, who just happen to go along with the degree. The degree itself attempts to teach you stuff you will never need, because the syllabus is always playing catch up.
Seriously, for my first six months we never used a computer once.
Get some work experience using SAGE or some such while learning in your spare time. The degree is a piece of paper you can easily get from a distance course.