:

## Showing students the steps in a problem from symbols, thru substituted values, to final answer

Maple
I have seen a number of forum questions concerning showing students the steps in a problem. There seems to be some confusion about how to do this reliabley and easily. A method I have found useful is seen below: First, define and display the expressions using all symbols for variables and parameters. Second, store a list of substitutions which equates the symbols one will want to replace with numbers to the numbers BETWEEN BACKQUTES. Then use subs() or eval() and this list to see the same equations previously displayed but now with numbers where required. No arithmetic will be done with the "numbers" because, although they look like numbers to humans, to Maple they are unknown literal names due to the backquotes. Third, store a list of substitutions which equates the same symbols as in the second step with actual numbers but WITHOUT BACKQUTES. This time the arithmetic will be done. There are two things to be careful of here. (1)If you define your expressions BEFORE you give values to the parameters then you can always change the parameter definitions amongst symbols, the literal numbers, and the real numbers and see the result using subs() or eval(), etc. BUT, if the expressions are defined after the parameters are given values, then these values, not the parameter names, are hard coded into the definition because Maple evaluates the expression before assigning it. Of course, if you put single quotes around the paramenter names when defining the expressions that postpones evaluation of the parameters and produces the same result as defining the expressions before giving values to the paramenters. (2)If you use backquotes around the numbers, they are no longer numbers but literal names of variables which have no assigned value. Also you will not see the backquotes in output. However, this will not work with single quotes! It might seem to work if you write something like ln('5') because Maple will not evaluate ln() at integer values unless you apply evalf() to it. If you write ln('5.'), you will get a number, however.

﻿