<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>