Calculators Are for Calculating, Mathematica is for Calculus

Andy Dorsett

Wolfram Research, Inc.

Outline

Go beyond formula memorization

Engage students and enhance learning

Focus on the big picture

Identify patterns without busywork

Help students of different abilities

Connect calculus to the real world

Go beyond formula memorization

The Squeeze Theorem – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{,
Spacer[25],

Column[{
Style["▪ formulas become the lesson, rather\n  than a tool to understand the concept",myStyle],
Style[" ",myStyle],
Style["▪ interactivity is nearly impossible; students\n  only see static images of graphs going to\n  infinity, which limits understanding",myStyle]
}]
}]

Go beyond formula memorization

The Squeeze Theorem with Mathematica

Manipulate[Plot[{(x^n) Sin[(1/x)],Abs[(x^n)],-Abs[(x^n)]},{x,-(10^(-i)),(10^(-i))},PlotStyle->{Black,{Thick,Red},{Thick,Purple}},MaxRecursion->8,ImagePadding->{{10,10},{10,50}},PlotLabel->TraditionalForm[Row[{Style[-Abs[x^n],Purple]," ≤ ",x^n Sin[1/x]," ≤ ",Style[Abs[x^n],Red]}]],ImageSize->{360}],
{{n,1},{0,1,2,3}},
{{i,0,"zoom"},0,3}]

Let’s take a closer look at how this can be presented in Mathematica: Squeeze Theorem Courseware

Engage students and enhance learning

Derivatives – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{,
Spacer[25],

Column[{
Style["▪ images are pixellated and rough",myStyle],
Style[" "],
Style["▪ precision almost impossible to see",myStyle],
Style[" "],
Style["▪ truncated function names add a layer of confusion",myStyle],
Style[" "],
Style["▪ primitive graphics don't hold students' attention",myStyle]
}]
}]

Engage students and enhance learning

Derivatives with Mathematica

Manipulate[Plot[{((b (x^2))/((x^2)+c)),-((2b (x^3))/(((c+(x^2)))^2))+((2b x)/(c+(x^2)))},{x,-4,4},PlotRange->{-4,4},ImageSize->360,PlotStyle->{{Thick,Red},{Thick,Darker@Gray}},PlotLabel->Column[{Style[((b*(x^2))/((x^2)+c)),FontColor->Red,Bold],Style[-((2b (x^3))/(((c+(x^2)))^2))+((2b x)/(c+(x^2))),FontColor->Darker@Gray,Bold]}]],{b,1,5},{c,1,5}]

Let’s take a closer look at how this can be presented in Mathematica:  Derivatives Lab Activity

Focus on the big picture

Newton’s Method – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{,
Spacer[25],

Column[{
Style["▪ students get lost in the algorithm\n  and miss the big idea",myStyle],
Style[" "],
Style["▪ brain power is spent on calculation\n  instead of analysis and critical thinking",myStyle],
Style[" "],
Style["▪ manual calculation reinforces an\n  archaic way to solve this problem",myStyle],
Style[" "],
Style["▪ traditional approaches do not foster the\n  relationship between the derivative and roots",myStyle]
}]
}]

Focus on the big picture

Newton’s Method with Mathematica

f1[x_]:=Cos[x]            (* drop down menu function definitions *)
f21[x_]:=x^2 -2
f3[x_]:= x^3 -7
f5[x_]:=x^3 -3x^2 + x -1
newton[f_,x0_,a_,b_,n_]:=Module[{list=NestList[#-((f[#])/(f'[#])) &,x0,n]},Column[{TraditionalForm@Text@Style[Row[{HoldForm[(Subscript[{(Subscript[x, k])}, k=0]^n)]," = ", list}],14],Plot[f[x],{x,a,b},PlotRange-> All,
AxesLabel-> {Style[x,16],Style[y,16]},PlotStyle-> {Darker@Gray,Thickness[.006]},Epilog->{{Red,Thickness[.002],Arrowheads[.03],Arrow[Most[Flatten[Map[{{#,0},{#,f[#]}} &,list],1]]]},{PointSize[0.015],Point[{x0,0}]}},ImageSize->360]},Center]]
Manipulate[newton[d,N[x0],0,2π,n],
{{d,f1,"function"},{f1-> TraditionalForm[Cos[x]]},ControlType-> PopupMenu},
{{n,1,"n (iterations)"},{0,1,2,3,4,5,6},ControlType->SetterBar},
{{x0,.5,Subscript["x","0"]},0.01,6.11,Appearance->"Labeled" },SaveDefinitions->True]

Let’s take a closer look at how this can be done in Mathematica:  Newton’s Method Tutorial

Identify patterns without busywork

Riemann sums – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{,
Spacer[25],

Column[{
Style["▪ very difficult concept for students to grasp",myStyle],
Style[" "],
Style["▪ calculus ideas take a back seat to necessary\n  naming and algebraic tasks",myStyle],
Style[" "],
Style["▪ often further exploration is limited due to the\n  time it takes to complete one problem",myStyle]
}]
}]

Identify patterns without busywork

Riemann sums with Mathematica

left[f_,x_,n_,h_,type_]:={f/.x->bottom[n,h],f/.x->bottom[n+1,h],f/.x->bottom[n,h]+.5h,If[(f/.x->bottom[n,h])<(f/.x->bottom[n+1,h]),f/.x->bottom[n+1,h],f/.x->bottom[n,h]],If[(f/.x->bottom[n,h])<(f/.x->bottom[n+1,h]),f/.x->bottom[n,h],f/.x->bottom[n+1,h]],f/.x->bottom[n,h]}[[type]]
right[f_,x_,n_,h_,type_]:=If[type==6,f/.x->bottom[n+1,h],left[f,x,n,h,type]]
bottom[0,h_]:=0
bottom[n_,h_]:=bottom[n-1,h]+h
rectangle[f_,x_,n_,h_,type_]:={EdgeForm[Thin],RGBColor[0,1-n/20,n/20],Polygon[{{bottom[n,h],0},{bottom[n,h],left[f,x,n,h,type]},{bottom[n+1,h],right[f,x,n,h,type]},{bottom[n+1,h],0}}]}
estimatedArea[f_,x_,n_,h_,type_]:=N[Sum[Abs[bottom[i,h]-bottom[i+1,h]]*(left[f,x,i,h,type]+right[f,x,i,h,type])/2,{i,0,n-1}],3]
Manipulate[Show[Plot[f,{x,0,8},PlotStyle->Black,PlotLabel->Grid[{{"estimated area: "<> ToString[estimatedArea[f,x,n,a/n,type]]},{"integral: "<>ToString[N[(∫_0^a)f\[DifferentialD]x,3]]}}]],Plot[f,{x,0,a},PlotStyle->Black,Filling->1->{0,Opacity[.25,Blue]}],Graphics[{Opacity[.4],Table[rectangle[f,x,i,a/n,type],{i,0,n-1}]}],Graphics[{Red,Line[{{a,0},{a,150}}]}],ImageSize->360],{{f,x,"function"},{x->"x",(((x-3))^2)->"(x-3)^2",(((x-3))^3)+27->"(x-3)^3+27",(Sqrt[x])->"(Sqrt[x])",Sin[x]+1->"sin(x)+1",(E^(x/3))->"(E^(x/3))"},ControlType->SetterBar},
{{type,2,"type"},{1->"left",2->"right",3->"midpoint",4->"overestimate",5->"underestimate",6->"trapezoidal"},ControlType->SetterBar},
{{a,5,"upper limit a"},0.01,8,Appearance->"Labeled"},
{{n,3,"number of quadrilaterals"},1,20,1,Appearance->"Labeled"},SaveDefinitions->True]

Help students of different abilities

Solids of revolution – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{,
Spacer[25],

Column[{
Style["▪ ability to visualize in 3D is very challenging\n  for some students",myStyle],
Style[" "],
Style["▪ paper/pencil methods require this ability to\n  accurately draw and solve problems",myStyle],
Style[" "],
Style["▪ if the graph is wrong, there is no way to tell\n  where the student went wrong with the problem",myStyle]
}]
}]

Help students of different abilities

Solids of revolution with Mathematica

Manipulate[Pane[

Switch[fcns,
reg1,
f[x_]:=2 Sin[x]+4;
g[x_]:=x/4,
reg2,
f[x_]:=x^2/8+1;
g[x_]:=-x/4+1
];

xmin=Pi/8;
xmax=2Pi;

ymax=8;
ymin=-ymax;

$$viewangle=theview;  (* 1: Front, 2: Back *)
viewlist=Part[{{0.5,0.5,1.5},{0.5,0.5,-1.5}},$$viewangle];

activestyle={PlotPoints->16,MaxRecursion->0,Mesh->False};

inactivestyle={PlotPoints->25,MaxRecursion->1,Mesh->False,PlotStyle->If[MemberQ[plotopts,translucent],Opacity[0.5],Opacity[1]]};


outsidesurface[thetamax_,opts___]:=ParametricPlot3D[{u,(f[u]-yrotate)Cos[v]+yrotate,(f[u]-yrotate)Sin[v]},{u,xmin,xmax},{v,0,thetamax},opts];

insidesurface[thetamax_,opts___]:=ParametricPlot3D[{u,(g[u]-yrotate)Cos[v]+yrotate,(g[u]-yrotate)Sin[v]},{u,xmin,xmax},{v,0,thetamax},opts];

a=xmin; b=xmax;
endmin[thetamax_,opts___]:=If[Min[f[a]-yrotate,g[a]-yrotate]==Max[f[a]-yrotate,g[a]-yrotate],{},
      ParametricPlot3D[{a,r Cos[t]+yrotate,r  Sin[t]},{r,Min[f[a]-yrotate,g[a]-yrotate],
          Max[f[a]-yrotate,g[a]-yrotate]},{t,0,thetamax},opts]];
endmax[thetamax_,opts___]:=If[Min[f[b]-yrotate,g[b]-yrotate]==Max[f[b]-yrotate,g[b]-yrotate],{},
      ParametricPlot3D[{b,r Cos[t]+yrotate,r  Sin[t]},{r,Min[f[b]-yrotate,g[b]-yrotate],
          Max[f[b]-yrotate,g[b]-yrotate]},{t,0,thetamax},opts]];

startregion[opts___]:=ParametricPlot3D[{x,((g[x]-f[x])t+f[x]),0},{x,xmin,xmax},{t,0,1},opts];

(* Rotating Region *)
rotatingregion[thetamax_,opts___]:=Module[{},
startlist={x,((g[x]-f[x])t+f[x])-yrotate,0};
rotmatrix={{1,0,0},{0,Cos[thetamax],-Sin[thetamax]},{0,Sin[thetamax],Cos[thetamax]}};
plotlist=rotmatrix.startlist;

region=ParametricPlot3D[{plotlist[[1]],plotlist[[2]]+yrotate,plotlist[[3]]},{x,xmin,xmax},{t,0,1},opts]
];

ThreeAxes=ParametricPlot3D[{{xmax*t+xmin/2(1-t),0,0},{0,ymax/2*t+ymin/2(1-t),0},{0,0,ymax/2*t+ymin/2(1-t)}},{t,0,1},PlotStyle->Black];

revaxis=ParametricPlot3D[{t,yrotate,0},{t,xmin,xmax},PlotStyle->Red];


regionplot=Dynamic[Show[
Plot[{f[x],g[x]},{x,a,b},PlotStyle->Black,Filling->True,FillingStyle->Lighter[Purple,0.5]],
Graphics[{Red,Line[{{a,yrotate},{b,yrotate}}]}],
AspectRatio->Automatic, ImageSize->150,  AxesLabel->{Text@Style["x",16,Italic],Text@Style["y",16,Italic]},PlotRange->{-6,6}]];


Grid[{{
Deploy[Column[{Text@Style["region to rotate around","Label",14],Text@Style[Row[{"the line ",Style[y,Italic]," = -1"}],"Label",14],
regionplot
}]],

Show[If[th==0,{},{outsidesurface[th,ControlActive[activestyle,inactivestyle]],insidesurface[th,ControlActive[activestyle,inactivestyle]],
endmin[th,ControlActive[activestyle,inactivestyle]],
endmax[th,ControlActive[activestyle,inactivestyle]]}],
startregion[ControlActive[activestyle,inactivestyle]],
rotatingregion[th,ControlActive[activestyle,inactivestyle]],
If[MemberQ[plotopts,showaxes],{ThreeAxes,revaxis},{}],Axes->MemberQ[plotopts,showaxes],
PlotRange->{{-1,xmax},{ymin,ymax},{ymin,ymax}},Boxed->False,AxesEdge->{{-1,-1},{-1,-1},{-1,-1}},ViewVertical->{0,1,0},ViewPoint->viewlist,AxesLabel->{Text@Style["x",16,Italic],Text@Style["y",16,Italic],Text@Style["z",16,Italic]},ImageSize->258]
}}],ImageSize->{450,400}],

{{fcns,reg1,""},{reg1->"region 1",reg2->"region 2"},ControlPlacement->Top},
{{plotopts,{translucent,showaxes},Spacer[295]},{translucent,showaxes->"show axes"},ControlPlacement->Bottom,ControlType->CheckboxBar},
"",
{{theview,1,""},{1->"front",2->"back"},ControlPlacement->Right,Appearance->"Vertical"},
"",
Style["     θ",14],
{{th,0,""},2Pi,0,ControlType->VerticalSlider,ControlPlacement->Right},
{{yrotate,-1, "rotate around y = "},ControlPlacement->Bottom, FieldSize->3, ContinuousAction->True},
ControlPlacement->Right,

TrackedSymbols:>{th,plotopts,theview,fcns},AutorunSequencing->{3,4}]

Connect calculus to the real world

Analyzing world populations – a traditional approach

myStyle={FontFamily->"Arial",18};
Row[{Show[,ImageSize->{210,209}],
Spacer[25],

Column[{
Style["▪ examples like this are often nonexistent\n  due to time constraints",myStyle],
Style[" "],
Style["▪ most instructors are relegated to textbook\n  examples",myStyle],
Style[" "],
Style["▪ if the computer lab is open, keeping students\n  on task while researching is difficult",myStyle]
}]
}]

Connect calculus to the real world

Analyzing world populations with Mathematica

Let’s take a closer look at how this can be done in Mathematica:  World Population Lab Activity

What’s next?

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Is Mathematica available at your organization?",myStyle],
Row[{
Style["Find out if you are on a ",myStyle],Hyperlink[Style["Mathematica campus",myStyle,RGBColor[0.7,0,0.125]],"http://www.wolfram.com/solutions/highered/mathematicacampus.cgi"],Style[".",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Interested in mobile apps for your students?",myStyle],
Row[{
Style["Peruse our ",myStyle],Hyperlink[Style["Wolfram Course Assistant Apps",myStyle,RGBColor[0.7,0,0.125]],"http://products.wolframalpha.com/courseassistants/"],Style[".",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.2]};
Row[{
,
Spacer[30],
Column[
{
Style["Do you need a launchpad with lots of great resources to help you get started?",myStyle],
Row[{
Style["Check out our ",myStyle],Hyperlink[Style["Learning Center",myStyle,RGBColor[0.7,0,0.125]],"http://www.wolfram.com/support/learn/"],Style[".",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Would you like to share teaching ideas with other Mathematica users worldwide?",myStyle],
Row[{
Style["Take a look at our ",myStyle],Hyperlink[Style["Faculty Program",myStyle,RGBColor[0.7,0,0.125]],"http://www.wolfram.com/services/facultyprogram/"],Style[".",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Did you like the interactive models you saw and would like to search for more?",myStyle],
Row[{
Style["Our ",myStyle],Hyperlink[Style["Wolfram Demonstrations Project ",myStyle,RGBColor[0.7,0,0.125]],"http://demonstrations.wolfram.com/"],Style["is the place to look.",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Are you interested in other downloadable courseware?",myStyle],
Row[{
Style["Search the ",myStyle],Hyperlink[Style["Wolfram Library Archive",myStyle,RGBColor[0.7,0,0.125]],"http://library.wolfram.com/"],Style[" for these resources.",myStyle]}]
}]
}]

myStyle={FontFamily->"Arial",18,GrayLevel[0.25]};
Row[{
,
Spacer[30],
Column[
{
Style["Looking for textbooks with a Mathematica component?",myStyle],
Row[{
Style["View the ",myStyle],Hyperlink[Style["Calculus and Analysis",myStyle,RGBColor[0.7,0,0.125]],"http://www.wolfram.com/books/topics.html?topic=%22Calculus%20and%20Analysis%22"],Style[" titles on our ",myStyle],
Hyperlink[Style["books site",myStyle,RGBColor[0.7,0,0.125]],"http://www.wolfram.com/books"],
Style[".",myStyle]}]

}]
}]

Initialization

Hyperlinker[label_,filename_]:=
Hyperlink[Style[label,"Text",Bold,FontColor->RGBColor[0.8156862745098039,0.07058823529411765,0.07058823529411765]],filename]

$Line=0;