You're right about apps improving their design, but it should be noted that game design for kids is kinda tricky.
For example, what if in that math app, the player had "X" amount of lives, and every wrong answer cost a life? It might solve the issue of "keyboard smashing", but would create negative feedback, which is very inappropriate in this kind of game. Learning and with especially younger children, positive reinforcement tends to work far better than negative reinforcement. Every option has a cost.
Negative feedback is easily turned into positive feedback and the other way around. Instead of losing points or lives when you fail, you could reward thoughtful actions. For example, when the number of steps to a solution is closer to the minimum number of steps needed to solve this problem it could be an indication of thoughtful actions and rewarded accordingly.
For example, what if in that math app, the player had "X" amount of lives, and every wrong answer cost a life? It might solve the issue of "keyboard smashing", but would create negative feedback, which is very inappropriate in this kind of game. Learning and with especially younger children, positive reinforcement tends to work far better than negative reinforcement. Every option has a cost.