In order to create such program from scratch, I have to define the very basics of mathematics, and how their basic operations work. This is similar to how axioms are defined and accepted in mathematics. I will start with defining what a variable, coefficient, and constants are, and how they function with math operations. From there, I will expand onto defining what an expression is, and how to simplify it. I will progress onto solving equations starting with the easiest to the ones that are very complex. And then I will expand onto solving problems of various forms.
As the program becomes more and more advanced, I hope if it is possible to, make the program be able to detect meaning behind word problems. For instance, if the user's word problem asks to find the area, and it gives us the length and width, the program should know that it should multiply the length and width to get the area. Or if it asks us to find the velocity of the ball as soon as it hitss the ground, if it fell off a 100m cliff, then it should be able to use the correct formula, along with some explanations.
The program may take a long time to make, but we'll see how to goes.