It is more like a missing link between assembly language and a high-level language.
Things like C++ have too many layers of abstraction, and result in massively bloated programs, so I tend to avoid that.
Given his intended use, I think that C (for all that I use it a lot) is not the best choice. Among old languages, FORTRAN has massive math libraries which could help.
Or for something somewhat newer and *very* math focused, APL is a likely choice -- though it does use a weird characterset to represent all the math operations.
It is infamous for being a write-only language. You can do amazing things in a one line program, and weeks later not be able to figure out how you did it -- but the program still works.
I've not taken the time to learn it, however -- I'm not that strong in math.
If he were interested in artificial intelligence, the best language is probably lisp -- or at least used to be.
Pascal is a good language to start with, actually, because it makes it very difficult to write poorly-structured programs. However, most implementations of it also make it rather difficult to make complex programs which deal with strings a lot. (I wrote a membership database program in it when I was learning it, and when I ported the basics of that program to C, it was *much* easier.
BTW -- with linux systems, you can usually get gcc (GNU C Compiler) which also includes A couple of versions of FORTRAN and possibly even ADA (A language written for the DOD patterned after Pascal, but designed for writing serious application programs, not for teaching as Pascal was.)
However what you *don't* get with that Fortran is the ton of math libs -- which are usually sold to mainframe users at serious prices. You'll get a reasonable subset, but nothing like the massive collection which is out there in the mainframe world.
Enjoy, DoN.