It depends on what type of game, what type of programmer you want to be, what level you want to be in and what level of programming you want to do.
From what my friends in the business say(toronto region).
type of game: simple child like games or fast FPS or MMO(dod,hl,bf,sof,q3 WWO etc)
type of programmer: driver developer, the person who builds ontop of drivers/available APIs or the person who builds on top of pre-existing 3D engines(open src: Ogre3D, cube3D, WildMagic etc, nonopen src: unreal , torque,the new XNA that's coming out).
level of programmer: junior, intermediate, senior(the top level one)
field of programmer: as mentioend in orthodontist post but there are more
PHysics/Math/Graphics/AI(the ones orthodontist mentioned), Scripter/Game Logic/Toolkit/Device Drivers/Sound/Static Geometry(some extra fields)...mostlikly you will be expected to do more than one field.
If you intend to code ontop of engines then 2nd year university should suffice. Anything more than you will need to take respective classes
-----------------------------
courses
Linear Algebra/Linear Systems: is a MUST for any rendering.
C/C++/Assembly: if you want the current PC/platform speeds
Data structures: always important.
Calculus/Vector Calculus Not so much..depending on how much more advance lighting and texturing you want to do...anything other then image display you need calculus. Oh yeah Physics Based SIms as mentioned above and below and in the paragraph below.
[]Physics: Classical/Analytical Mechanics(3rd-4th year),one that teaches Rigid Body Dynamics/INverse Kinematics is a must and Mesh Development.
NOTE: classical mech requires calculus/vector calc
[]Physics: Numericals(3rd-4th year) Math class that teaches ODE/PDE/Root finding etc Stay away from matlab/maple classes or persuade your prof to let you code in C/C++/F
[]Rendering: Linear Algebra and Numericals for Linear Algebra...you will normally find a numericals class that teaches both ODE/PDE/Funcions & Linear Algebra
[]Math::GEometry-Calculus and vector calculus and Computational Geometry is important for Geometry & mesh building...also a class in Curves & Surfaces or Nurbs. Take care in learning about Distance Calculations and Predicting Intersections(collisions).
[]AI::much of the AI you can learn on your own as long as you have good references and are willing to take the time to learn and a testbed like a grid. Jsut do well in Datastructures, some STATS will help in AI.
[]Device Drivers: Hardware Architecture, Assembly
[]Sound Drivers: DEs & Transforms/Signal Processing(3rd year level math)
[]IO devices: Transforms (3rd year level math)
[]Spatial Partitioning: all datastructures.
[]FIle formats & Movie making: There's always someone that has done this before but if you wnat to progress to learning your self start early and have this goal in mind. Compression Algorithms which include transforms/wavelets
---------------------
A good place to start is too look at a engine or coding packages.
www.ogre3D.org is open source,Wild Magic use to be. for Coding packages SDL/OpenGL is a good place to start(i started with windows/glut/opengL and it was ugly).
SDL provides you with simple input-output and rendering with opengl.
for the math stuff Numerical Recipes(open src) is a good place to start from the programmers perspective but since your young it should only be a starting point. OpenAL/OpenSceneGraph/OpenDE(physics)/Newton/
OpenCV(i just recently found this one)
Thes are all libraries that do stuff.Just search google they will come up.
...oh yeah go to gamedev.net and register on their forums. It is a huge resource in game development.