non, ce n´est pas simple du tout.
Il y a deux partie dans ton programme, d´une part la partie analyseur syntaxique/lexiqual, qui va lire une chaine et comprendre que "5x+3" c´est l´addition de la constante 3 et de l´expression qui est une multiplication de la constante 5 et de la variable x.
Même si ça peut-être chiant, c´est le plus facile.
Ensuite (et avant), il faut décider comment tu vas stocker tes expressions, tu peut le faire sous forme d´arbre (c´est une notation fonctionnelle du genre "+(2,*(5,x))" (ou + et * sont des fonctions qui prenne deux paramètre), simple si tu connait les arbres (sinon, avant de te lancer dans ton projet, étudie ça)) ou alors sous forme de liste par exemple avec la notation postfixe ("2 5 x * +" par exemple).
L´une et l´autre ont leur avantage.
Mais pour faire du calcul formel (ta dernière étape) l´utilisation à base d´arbre est peut-être plus simple (mais pas forcément plus efficaces, beaucoup de "vrais" logiciels de calcul formel utilise des listes), et là commence la partie difficile.
Je ne connait pas de papier qui explique ça particulièrement. Mais pour débuter, tu peut commencer par coder une dérivation formelle, c´ets-à-dire, une fonction qui si tu lui donne une expression sous forme d´arbre, va renvoyer sa dérivé en fonction d´une variable.
Mais le plus dur c´est les opération du type simplification ou factorisation.
ça fait beaucoup d´un coup, il faudra que tu précise ce que tu sais faire et ce sur quoi tu as besoin d´aide.