<p>If I were to take a shot in the dark, I would hazard that an aspiring theoretical physicist should take most or all of the following courses as an undergraduate:</p>
<p>Physics Intro
Classical Mechanics
Electricity and Magnetism
Statistical Mechanics / Thermo
Quantum Mechanics
Physics Laboratory
Elective(s) in intended area of graduate study</p>
<p>Calculus Intro
Differential Equations Intro
Linear Algebra Intro
Real Analysis
Complex Analysis
Linear Algebra
Partial Differential Equations
Ordinary Differential Equations</p>
<p>Where sequences are available, I would recommend taking entire sequences. The list of math and/or physics courses is probably a mostly-minimal list in the sense that taking additional courses in physics/mathematics could only be good for you (particularly in math, courses in abstract algebra and/or topology could be very useful). </p>
<p>One way or the other, before you graduate, you should know how to program in C, C++ or Fortran and be familiar with a variety of numerical tools and approaches to solving classes of physics problems.</p>
<p>Of paramount importance is getting as much undergraduate research experience as possible. Look into the Research Experience for Undergraduates program. Look into programs at your school. Talk to professors whose work interests you. Help out with some of the legwork and get your names on a few papers. Being a theoretical physicist isn’t easy, and it will take a lot of work to get a tenured professorship somewhere. But if you have the drive and the aptitude, why not go for it? You only live once.</p>