I have been encouraging my daughter and younger son (ages 12 and 13) to learn programming. She has done some Scratch, and this Memorial Day weekend, has tried the EdX MIT Python course for beginners. It is free unless you want a certificate. Her older brother registered her for the class and installed Anaconda Python 3.6 for Windows on her laptop. Anaconda bundles the Python interpreter with the Spyder development environment. She has watched the lectures and done some of the exercises, which are graded online.
Her math level is about Algebra I (through the Russian School of Math). She likes it so far.

Middle school children may hit a wall at some point in a course intended for MIT students, but they can come back later if so.