Interactive Tools for Mathematics Instruction

Richard Mercer

Wright State University

Note: This is a special version of this presentation notebook. The code for the ParametricPlay and BezierPlay command are included in the Initialization cells on the next page, and you are welcome to view and use this code. The controls for these manipulates are active in this notebook. You may need to execute the Initialization cells and these commands. For the other four commands shown, there is no supporting code, and there are only .png screenshots in place of the manipulates, so of course those controls are not active.

General Purpose Tools 1

Initialization

Bernstein[n_,k_,t_]:= Binomial[n,k]*(1-t)^(n-k)*t^k;
Bernstein[k_,t_]:= Bernstein[3,k,t]; 

Bezier[n_,p_,t_]:= Sum[Bernstein[n,k,t]*p[[k+1]],{k,0,n}];
Bezier[p_,t_]:= Bezier[3,p,t];
BezierPlay[p_,t_,more___]:=
	Module[{result},
		Manipulate[
	result = 
	ParametricPlot[Evaluate[Bezier[{p0,p1,p2,p3},t]],{t,0,1},
				Epilog->{Red,Map[Point,{p0,p1,p2,p3}],Line[{{#1,#2},{#3,#4}}]& @@ {p0,p1,p2,p3}},
	Background->RGBColor[1,1,0.75],
				more],
			Row[{
				Button["Print Graph",Print[result],BaseStyle->{9},ImageSize->{Automatic,20}], Spacer[20],
				Button["Print Control Points",Print[{p0,p1,p2,p3}],BaseStyle->{9},ImageSize->{Automatic,20}]
			}],
			Style[Row[{
				"p0",Spacer[5],InputField[Dynamic[p0]],Spacer[10],
				"p1",Spacer[5],InputField[Dynamic[p1]],Spacer[10],
				"p2",Spacer[5],InputField[Dynamic[p2]],Spacer[10],
				"p3",Spacer[5],InputField[Dynamic[p3]]
				}],
				DefaultOptions->{InputField->{ImageSize->{75,15},BaseStyle->{PrintPrecision->3}}}],
			{{p0,p[[1]]},Locator},
			{{p1,p[[2]]},Locator},
			{{p2,p[[3]]},Locator},
			{{p3,p[[4]]},Locator},
			FrameLabel->{None,None,Style["BézierPlay",14,Bold],None}
		]
	];

Options[ParametricPlay] = {
	Places->8,
	ImageSize->300,
	PlotRange->All,
	PlotColor-> Blue,
	DotColor -> Red
};
ParaTrace[{f1_,f2_},{var_,a_,b_},t0_,mode_,opts___]:=
	Module[{pl,dt,tx,gr,grobjs,t,x,y,places,imagesize,plotrange,plotcolor,dotcolor},

		{places,imagesize,plotrange,plotcolor,dotcolor} =
		{Places,ImageSize,PlotRange,PlotColor,DotColor} /. {opts} /. 
			Options[ParametricPlay];

		If[a<b,
			pl = 
				If[mode === Dot || t0 > a,
					First[ParametricPlot[{f1,f2},
						Evaluate[Switch[mode,"Dot",{var,a,b},"Trace",
						{var,a,t0},"Segment",{var,t0-0.1,t0+0.1}]],
						Axes->False,PlotStyle->plotcolor]],
					{}
				];
			dt={PointSize[Medium],Style[Point[{f1,f2}/.var->t0],dotcolor]};
			grobjs = {pl,dt};
			{t,x,y} = NumberForm[Chop[N[#,places+2]],{places+2,places},
				NumberPadding->{" ","0"},ExponentFunction-> (Null&) ]& /@  
				{t0,f1/.var->t0,f2/.var->t0};
			tx = Row[{"t:",t,"  x:",x,"  y:",y}];

			gr = Graphics[grobjs,Axes -> True,AspectRatio -> 1,
				Background->RGBColor[1,1,0.75],
				AxesOrigin -> {Automatic,0},ImageSize -> imagesize,PlotRange -> plotrange]
		];

		Grid[{{tx},{gr}}]
	];
ParametricPlay[parametric_,interval_,plotrange_:Automatic]:=
	Module[{para,int,pr,aa,bb,mode,size,places,result},
		
		para = parametric;
		int = interval;
		{aa,bb} = Take[int,-2];
		pr = plotrange;
		If[pr === Automatic,pr = 
			Last[First[AbsoluteOptions[ParametricPlot[para,{t,aa,bb}],PlotRange]]]];
		size = ImageSize /. Options[ParametricPlay];

		Manipulate[
			result = ParaTrace[para,int,t0,mode,PlotRange->pr,Places->places,ImageSize->size],
			Row[{Button["Print",Print[result],BaseStyle->{9},ImageSize->{Automatic,20}],
				Spacer[20],"size",Spacer[5],
			PopupMenu[Dynamic[size],{500,450,400,350,300,250,200,150,100},BaseStyle->9]}],			
			Row[{"places",Spacer[5],PopupMenu[Dynamic[places],Range[2,6],BaseStyle->{FontSize->9}],
				Spacer[15],"mode",Spacer[5],SetterBar[Dynamic[mode],{"Trace","Dot","Segment"},
				BaselinePosition->Baseline]}],
			{{t0,0,"t"},aa,bb},
			FrameLabel->{None,None,Style["ParametricPlay",14,Bold],None}
		]

	];

TableX

Define[f[x]=(((2^x)-2)/(x-1))];
TableX[f[x]]

General Purpose Tools 2

PlotX

Define[f[x]=x Sin[1/x]];
PlotX[f[x],{-1,1}]

Playtime I

ParametricPlay

ParametricPlay[{Sin[3t],Cos[5t]},{t,0,2π}]

Playtime II

BezierPlay

p={{0,0},{1,2},{2,2},{3,0}};
BezierPlay[p,t,PlotRange->{{-3,6},{-3,6}}]

Playtime III

VectorPlay

VectorPlay[{4,2},{-4,3}]

You Say You Want a...

Revolution

Revolution[y==(Sqrt[x]),{0,4},x]

Design: The Construction of Interactive Tools

Name

Revert Button

Print Button

Graphics Size/Font Size

Organizing Controls

Pedagogy: The Use of Interactive Tools

Do Interactive Tools Aid Student Learning? How?

Hope: They maintain student interest by representating mathematical object and concepts as dynamic objects, and giving students control.

Hope: They aid in visualization (especially 3D) by allowing students to easily view multiple scenarios and viewpoints.

Hope: They "objectify" mathematical structures and concepts by presenting them as objects that students can interact with. Example: Riemann Sums.

Problems for Interactive Tools

Can you write problems that require the use of interactive tools? Should you?

General Purpose vs Specialized Tools

Transience vs Permanence

Emphasize Play and Experimentation