(***********************************************************************
Mathematica-Compatible Notebook
This notebook can be used on any computer system with Mathematica 4.0,
MathReader 4.0, or any compatible application. The data for the notebook
starts with the line containing stars above.
To get the notebook into a Mathematica-compatible application, do one of
the following:
* Save the data starting with the line of stars above into a file
with a name ending in .nb, then open the file inside the application;
* Copy the data starting with the line of stars above to the
clipboard, then use the Paste menu command inside the application.
Data for notebooks contains only printable 7-bit ASCII and can be
sent directly in email or through ftp in text mode. Newlines can be
CR, LF or CRLF (Unix, Macintosh or MS-DOS style).
NOTE: If you modify the data for this notebook not in a Mathematica-
compatible application, you must delete the line below containing the
word CacheID, otherwise Mathematica-compatible applications may try to
use invalid cache data.
For more information on notebooks and Mathematica-compatible
applications, contact Wolfram Research:
web: http://www.wolfram.com
email: info@wolfram.com
phone: +1-217-398-0700 (U.S.)
Notebook reader applications are available free of charge from
Wolfram Research.
***********************************************************************)
(*CacheID: 232*)
(*NotebookFileLineBreakTest
NotebookFileLineBreakTest*)
(*NotebookOptionsPosition[ 43269, 1420]*)
(*NotebookOutlinePosition[ 44242, 1450]*)
(* CellTagsIndexPosition[ 44198, 1446]*)
(*WindowFrame->Normal*)
Notebook[{
Cell["TMKR", "Title",
TextAlignment->Center],
Cell[TextData[{
StyleBox["T",
FontColor->RGBColor[1, 0, 1]],
"est",
StyleBox["M",
FontColor->RGBColor[1, 0, 1]],
"a",
StyleBox["K",
FontColor->RGBColor[1, 0, 1]],
"e",
StyleBox["R",
FontColor->RGBColor[1, 0, 1]],
" by Tom De Vries"
}], "Subtitle",
TextAlignment->Center],
Cell[CellGroupData[{
Cell["Introduction and disclaimer", "Section"],
Cell[TextData[{
"The idea behind these programs was to use ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" as a means to create math tests, at \"random\". \"Question generators\" \
are written that have the computer pick values for a problem, display the \
problem, and then create an answer."
}], "Text"],
Cell["\<\
The motivation for this was the work I have been doing in online \
education. I wanted to be able to create multiple versions of tests so I \
could reduce the ability to \"cheat\", send out answer keys for marked work \
with no fear they would be \"shared\", and finally, on a more positive note, \
to allow students opportunites to learn and improve their grades by taking a \
test over again.\
\>", "Text"],
Cell["\<\
I am NO programmer so much of this is \"hacked\" together. I am \
currently using these programs, so they do work, but I had not thought I \
could put them together in a form that would allow me to easily share with \
others. Putting together some packages of questions has allowed me a way of \
doing that, but I make no claim that this is a flawless set of programs! Let \
the user beware!\
\>", "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell["Setting things up", "Section"],
Cell[TextData[{
"I created a new folder called TMKR to hold the banks of questions I \
created and am creating. I put this folder in the AddOns --> ExtraPackages \
folder that you should be able to find in the file directories created when \
you installed ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" . I know that there are ways of telling ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" where to search for packages, but as far as I can tell you, you will need \
to create a new folder called TMKR, and put this in the ExtraPackages folder. \
Place any TMKR package (name.m) files in that folder."
}], "Text"],
Cell[TextData[{
"I am using ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" version 4, and I make no claims about downward compatability!"
}], "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell["Loading in a bank of questions", "Section"],
Cell["\<\
If you set things up correctly, the command line below should load \
in a bank of questions to experiment with.\
\>", "Text"],
Cell[BoxData[
\(Needs["\"]\)], "Input"],
Cell["\<\
Loading in this bank of questions creates three global variables. \
One of them is called qnum. This keeps track of numbering the questions on a \
test. It starts with a value of 0. Each time a question is created, it \
adds one to qnum so the questions are numbered sequentially as they are \
created.\
\>", "Text"],
Cell["\<\
Then there are two variables that represent notebook objects. You \
will have noticed that two notebooks were created when you read in bank1. \
The question generators write their information to \"questions\" and \
\"answers\", two notebooks. You can actually write the questions and answers \
to the same file as I will demonstrate later, but for now, let's use things \
the way they are.\
\>", "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell["Some information about the bank", "Section"],
Cell[BoxData[
\(\(?Bank1\)\)], "Input"],
Cell[BoxData[
\(\(?bank1\)\)], "Input"],
Cell["\<\
All the questions in Bank1 are questions that sample the same \
mathematical concept of finding the area of a geometric figure that is some \
combination of simple figures. The way I built the banks was to create \
groups of questions that , \"in theory\", would all sample the same \
mathematical idea. This bank of questions, at present, has 14 problems in \
it. Each of the questions is \"roughly\" equivalent to the others, in that \
they all sample the same mathematical idea. The questions are different, but \
related.\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Using the question generators", "Section"],
Cell["\<\
Using the bank of questions is very simple. There are three ways \
to do it, as illustrated below.\
\>", "Text"],
Cell[BoxData[
\(\(bank1[1];\)\)], "Input"],
Cell["\<\
Run the above line and you should see a question appear in the \
questions notebook, and an answer appear in the answers notebook.\
\>", "Text"],
Cell[BoxData[
\(\(bank1[1];\)\)], "Input"],
Cell["\<\
Evaluate the line again, and you get the \"same\" problem, with \
different values. \
\>", "Text"],
Cell[BoxData[
\(\(Do[bank1[1], \ {5}];\)\)], "Input"],
Cell["5 versions of the same problem.", "Text"],
Cell["\<\
You can also give bank a list of questions to run, bank is a \
listable function\
\>", "Text"],
Cell[BoxData[
\(\(bank1[Range[13]];\)\)], "Input"],
Cell[BoxData[
\(\(bank1[{3, 6, 8, 8, 2}];\)\)], "Input"],
Cell["\<\
Each generator has a bank number and question number listed in the \
answer for the problem. This allows for easy tracking of what the question \
is, and for making corrections to the programs where necessary.\
\>", "Text"],
Cell["\<\
Using bank1[ ] has the computer choose one of the thirteen \
problems at random, and run it.\
\>", "Text"],
Cell[BoxData[
\(bank1[]\)], "Input"],
Cell["\<\
Using this bank of questions in this way provides TWO levels of \
\"randomness\". Each question generator chooses parameters for the problem \
at random, so even if the same question number from the bank is chosen, the \
numbers will be different. Secondly, the computer can choose from 14 \
different problems. \
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Graphics in problems", "Section"],
Cell["\<\
Just a note. Many of the generators use graphics, and sometimes \
they can look a little \"funny\"\
\>", "Text"],
Cell[GraphicsData["PostScript", "\<\
%!
%%Creator: Mathematica
%%AspectRatio: .4
MathPictureStart
/Mabs {
Mgmatrix idtransform
Mtmatrix dtransform
} bind def
/Mabsadd { Mabs
3 -1 roll add
3 1 roll add
exch } bind def
%% Graphics
%%IncludeResource: font Courier
%%IncludeFont: Courier
/Courier findfont 10 scalefont setfont
% Scaling calculations
0.0238095 0.00577201 0.00952381 0.00577201 [
[.14848 .06667 -14.5938 -20 ]
[.14848 .06667 14.5938 0 ]
[.5 .00952 -23.2188 -30 ]
[.5 .00952 23.2188 -10 ]
[.2316 .2 -56.1562 -10 ]
[.2316 .2 -18.7188 10 ]
[ 0 0 0 0 ]
[ 1 .4 0 0 ]
] MathScale
% Start of Graphics
1 setlinecap
1 setlinejoin
newpath
0 g
.5 Mabswid
[ ] 0 setdash
.02381 .00952 m
.97619 .00952 L
.43939 .39048 L
.02381 .00952 L
s
gsave
.14848 .06667 -75.5938 -24 Mabsadd m
1 1 Mabs scale
currentpoint translate
/MISOfy
{
/newfontname exch def
/oldfontname exch def
oldfontname findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding ISOLatin1Encoding def
currentdict
end
newfontname exch definefont pop
} def
0 28 translate 1 -1 scale
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
(43) show
81.000 19.000 moveto
(\\241) show
88.188 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
1.000 setlinewidth
grestore
gsave
.5 .00952 -84.2188 -34 Mabsadd m
1 1 Mabs scale
currentpoint translate
/MISOfy
{
/newfontname exch def
/oldfontname exch def
oldfontname findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding ISOLatin1Encoding def
currentdict
end
newfontname exch definefont pop
} def
0 28 translate 1 -1 scale
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
(165) show
94.500 19.000 moveto
(ft) show
105.438 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
1.000 setlinewidth
grestore
gsave
.2316 .2 -117.156 -14 Mabsadd m
1 1 Mabs scale
currentpoint translate
/MISOfy
{
/newfontname exch def
/oldfontname exch def
oldfontname findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding ISOLatin1Encoding def
currentdict
end
newfontname exch definefont pop
} def
0 28 translate 1 -1 scale
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
63.000 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
(98) show
85.500 19.000 moveto
(ft) show
96.438 19.000 moveto
%%IncludeResource: font Times
%%IncludeFont: Times
/Times findfont 18.000 scalefont
[1 0 0 -1 0 0 ] makefont setfont
0.000 0.000 0.000 setrgbcolor
0.000 0.000 rmoveto
1.000 setlinewidth
grestore
newpath
.02381 .00952 .09524 0 42.5104 arc
s
0 0 m
1 0 L
1 .4 L
0 .4 L
closepath
clip
newpath
% End of Graphics
MathPictureEnd
\
\>"],
GeneratedCell->True,
ImageSize->{288, 115.188},
ImageMargins->{{0, 0}, {0, 0}},
ImageRegion->{{0, 1}, {0, 1}},
ImageCache->GraphicsData["Bitmap", "\<\
CF5dJ6E]HGAYHf4PAg9QL6QYHgLh01Woo0P000goo0P00O7oo0020Ool20004Ool0
0b48001[FP03Ool20007Ool00`00249oo`05Ool20003Ool2001lOol0081oo`8000Aoo`8000Aoo`80
00Ioo`03JeX0000000Ioo`8000=oo`8007aoo`00P7oo0P0017oo0P000goo00=BU00024801Goo00Ac
W1240008@PIoo`8000=oo`8007aoo`00P7oo0P0017oo0P0000HicWooJeX@Q000@Q03Ool00e[F248000Q2@Q000Woo
00Li[FPQoo`8000=oo`038@P007oo07]oo`00P7oo0P001Goo00<@Q000Li`01Woo00<8
@V]JOol02Woo00<8@P00Ool00Woo00=cW124Ool0Ngoo0020Ool20005Ool00f]J000@Q006Ool00cW>
07eoo`00ogoo8Goo003oOolQOol0
0?moob5oo`00ogoo8Goo003oOolQOol00?moob5oo`00ogoo8Goo003oOolQOol00?moob5oo`00ogoo
8Goo000oOol20002Ool01S6<000000008@QJe]Moo`00:gooc`009Woo000]Ool00`00Oomoo`0?Ool2
0007Ool00e:D001BU02/Ool00`00Oomoo`0VOol002ioo`03001oogoo00Uoo`T000Ioo`03000@Q7oo
0:Uoo`8002Uoo`00;goo00<007ooOol027oo00L249cW002Ool20007Ool00d8@0000002XOol00`00
Oomoo`0ZOol0035oo`03001oogoo00Moo`04@Q0Q27ooOol20005Ool01G>L@Q000000LioocW>6L:DX0012400=oo`056LhHaP2HOol2000dOol003Qoo`03001oogoo009oo`04001oocW>
0003Ool01Vgoo00<007ooOol0
YWoo0P00>Woo000lOol00`00Oomoo`2TOol00`00Oomoo`0jOol003eoo`03001oogoo0:9oo`03001o
ogoo03]oo`00?Woo00<007ooOol0Wgoo0P00?Woo000oOol00`00Oomoo`2MOol00`00Oomoo`0nOol0
041oo`03001oogoo09Yoo`80045oo`00@Goo0P00VGoo00<007ooOol0@Goo0013Ool00`00Oomoo`2E
Ool00`00Oomoo`12Ool004Aoo`03001oogoo099oo`8004Eoo`00AGoo00<007ooOol0T7oo00<007oo
Ool0AGoo0016Ool00`00Oomoo`2=Ool20018Ool004Moo`03001oogoo08]oo`03001oogoo04Qoo`00
B7oo00<007ooOol0RGoo00<007ooOol0BGoo0019Ool00`00Oomoo`26Ool20014Woo
00<007ooOol0Jgoo00<007ooOol0FWoo000UOol016L0Woo00<8@P00JeX00Woo00=cW000
00001goo0P000goo0P005Goo00<007ooOol0J7oo0P00GGoo000VOol00e:D000HaP02Ool20003Ool0
0g>L00000007Ool20003Ool2000FOol00`00Oomoo`1VOol00`00Oomoo`1MOol002Moo`0760000
0248>Lh002U:009oo`07:DXQ27>L8@P00124Li`01goo0P000goo0P006Goo00<007ooOol0H7oo00<0
07ooOol0H7oo000ROol00dYB000@Q002Li`00dYB0008@P03Ool01AS600000248Li`027oo0P000goo
0P006Woo00<007ooOol0GGoo0P00Hgoo000ROol00`Q2001BU003Ool20002Ool01RU:00000248>Lic
W0Moo`@0008HaP@001Uoo`03001oogoo05]oo`03001oogoo06=oo`008Woo0P0017oo0P0000UoocW>
000@Q6]JOolYBP00HaP01goo0P000goo00L000@Q7oo0P0000IJeWooOomcW0002487Ool00`Q2001oo`02Ool00g>L48Ao
o`0LOol00`00Oomoo`1FOol2001WOol0029oo`038@P006]J009oo`06BU8003W>Ool8@P000goo00=c
W00024801goo00L
JeX8@P00Liaooe:D000YBP9cW003:DX005:D00Moo`06HaP005:DLi`HaQ2487oo00<007ooOol0DGoo
0P00JWoo000SOol01V###### 025o
o`03001oogoo04moo`03001oogoo06Yoo`00HWoo00<007ooOol0CGoo00<007ooOol0Jgoo001SOol2
001;Ool2001^Ool006Eoo`03001oogoo04Moo`03001oogoo06ioo`00IWoo00<007ooOol0A7oo0P00
LGoo001WOol00`00Oomoo`12Ool00`00Oomoo`1aOol006Qoo`03001oogoo03moo`8007Aoo`00JGoo
00<007ooOol0?Goo00<007ooOol0M7oo001ZOol00`00Oomoo`0kOol00`00Oomoo`1eOol006]oo`03
001oogoo03Qoo`8007Qoo`00K7oo00<007ooOol0=Woo00<007ooOol0N7oo001]Ool00`00Oomoo`0c
Ool2001kOol006ioo`80039oo`03001oogoo07]oo`00L7oo00<007ooOol0;Woo00<007ooOol0O7oo
001aOol00`00Oomoo`0[Ool2001oOol0079oo`03001oogoo02Uoo`03001oogoo07moo`00Lgoo00<0
07ooOol09Woo0P00PWoo001dOol00`00Oomoo`0TOol00`00Oomoo`22Ool007Eoo`03001oogoo029o
o`03001oogoo08=oo`00MWoo00<007ooOol07goo0P00QWoo001gOol00`00Oomoo`0MOol00`00Oomo
o`26Ool007Qoo`03001oogoo01Yoo`8008Uoo`00NGoo00<007ooOol067oo00<007ooOol0RGoo001j
Ool2000FOol2002"],
ImageRangeCache->{{{0, 287}, {114.188, 0}} -> {-35.3142, -24.1084, \
0.803579, 0.803579}}],
Cell["\<\
Usually this is easily remedied by simply dragging the graphic to \
make it larger.\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Dealing with \"static\" problems", "Section"],
Cell["\<\
There are many questions that can't be \"randomized\". For \
example, something like \"how many degrees are in a right angle?\". It may \
still be required to ask these kinds of questions on tests. In order to \
handle this, I simply created a bank with MANY problems of the same type, all \
of them \"static\". By static I mean that the question is the same each \
time. This can be illustrated with bank2.\
\>", "Text"],
Cell[BoxData[
\(Needs["\"]\)], "Input"],
Cell[BoxData[
\(\(?Bank2\)\)], "Input"],
Cell[BoxData[
\(\(?bank2\)\)], "Input"],
Cell[BoxData[
\(bank2[1]\)], "Input"],
Cell["\<\
If you evaluate the above line, you will see the question and \
answer appear in the questions and answers notebook. If you run the line \
again, you will see the question is exactly the same. This is a static \
problem.\
\>", "Text"],
Cell[BoxData[
\(bank2[1]\)], "Input"],
Cell["\<\
Even though the question is static, since there are 34 problems in \
the bank, you can use bank2[ ] and have the computer pick one at random. \
Students will get different problems on their tests, and a student who \
retakes a test will have a good chance of getting a different problem each \
time they write (assuming you have enough questions in the bank!) This \
allows for including \"good\" static problems on tests.\
\>", "Text"],
Cell[BoxData[
\(Do[bank2[], {5}]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["TMKR utilities", "Section"],
Cell["\<\
This section contains a brief description of the utilities used by \
the TMKR banks. I expect I will add to these, but at present, these are \
utility programs that I have used and wanted to have available to all banks \
of questions.\
\>", "Text"],
Cell[CellGroupData[{
Cell["SETUP", "Subsection"],
Cell["\<\
The utilities are called up by the Setup package. These utilities \
are used by all the question banks and are put here so they are available to \
them all. Setup is called by any bank of questions loaded in.\
\>", "Text"],
Cell[BoxData[
\(Needs["\"]\)], "Input"],
Cell["\<\
Here is a list of names and variables declared by the \
package\
\>", "Text"],
Cell[BoxData[
\(\(?TMKR`Setup`*\)\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["Why all the single letters?", "Subsection"],
Cell[TextData[{
"All the individual letters are there because when I used symbols in \
equations and such like, (for example, ",
Cell[BoxData[
\(TraditionalForm\`x\^2 - 2 x\)]],
") , I got strange things in the questions. Declaring these variables as \
part of the package did the trick."
}], "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["create", "Subsection"],
Cell["\<\
I like this one!! It allows for easy access to the question banks \
and the questions. It allows for a VERY simple way to create sets of \
questions for a test.
There are Three flavors...\
\>", "Text"],
Cell["\<\
Before you go on, you might want to clear the stuff in the \
questions and answers window\
\>", "Text"],
Cell[BoxData[{
\(\(SelectionMove[questions, All, Notebook];\)\), "\n",
\(\(NotebookDelete[questions];\)\), "\n",
\(\(SelectionMove[answers, All, Notebook];\)\), "\n",
\(\(NotebookDelete[answers];\)\)}], "Input"],
Cell[CellGroupData[{
Cell["Flavour 1", "Subsubsection"],
Cell["\<\
Flavour 1, just give a single number that represents a bank number
eg create[1]
This calls up bank 1 and runs a question at random from bank 1\
\>", "Text"],
Cell[BoxData[
\(create[1]\)], "Input"],
Cell[BoxData[
\(create[200]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["Flavour 2", "Subsubsection"],
Cell["\<\
Flavour 2, give a list of two numbers as input
eg. create [{1,2}]
This calls up bank 1 and runs question 2 from bank 1\
\>", "Text"],
Cell[BoxData[
\(create[{1, 2}]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["Flavour 3", "Subsubsection"],
Cell["\<\
Level 3 give a list as input, and the second part of the list is \
a list
eg. create [{1,{2,5,7}}]\
\>", "Text"],
Cell["\<\
This calls up bank1, and picks a question at random from the list \
{2,5,7} and runs it\
\>", "Text"],
Cell[BoxData[
\(create[{1, {2, 5, 7}}]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["Creating a test", "Subsubsection"],
Cell[TextData[{
"This function makes it ",
StyleBox["VERY",
FontWeight->"Bold"],
" easy to create a test or assignment."
}], "Text"],
Cell["First lets clear out the windows again", "Text"],
Cell[BoxData[{
\(\(SelectionMove[questions, All, Notebook];\)\), "\n",
\(\(NotebookDelete[questions];\)\), "\n",
\(\(SelectionMove[answers, All, Notebook];\)\), "\n",
\(\(NotebookDelete[answers];\)\)}], "Input"],
Cell["Reset the question number", "Text"],
Cell[BoxData[
\(\(qnum = 0;\)\)], "Input"],
Cell["\<\
The banks I have included with this demo are bank1, bank2, bank200 \
and bank201\
\>", "Text"],
Cell[BoxData[
\(\(Map[
create, \ {1, 1, 1, {1, 4}, \ {1, 13}, \ 2, 2, 2, \
200, \ {200, \ {1, 3}}, \ 201}];\)\)], "Input"],
Cell["\<\
I think this is pretty slick! What did this just do? Look through \
the list one part at a time\
\>", "Text"],
Cell[TextData[{
"{",
StyleBox["1",
FontColor->RGBColor[1, 0, 0]],
",{1,4}, {1,13}, 2,2,2, 200, {200, {1,3}}, 201}\nThis 1 picks a question at \
random from all the questions in bank 1"
}], "Text"],
Cell[TextData[{
"{1,",
StyleBox["{1,4}",
FontColor->RGBColor[1, 0, 0]],
", {1,13}, 2,2,2, 200, {200, {1,3}}, 201}\nThis runs question 4 from bank \
1"
}], "Text"],
Cell[TextData[{
"{1,{1,4}, ",
StyleBox["{1,13}",
FontColor->RGBColor[1, 0, 0]],
", 2,2,2, 200, {200, {1,3}}, 201}\nThis runs question 13 from bank 1"
}], "Text"],
Cell[TextData[{
"{1,{1,4}, {1,13}, ",
StyleBox["2,",
FontColor->RGBColor[1, 0, 0]],
" 200, {200, {1,3}}, 201}\nThis 2 picks a question at random from all the \
questions in bank 2"
}], "Text"],
Cell[TextData[{
"{1,{1,4}, {1,13}, 2, ",
StyleBox["200",
FontColor->RGBColor[1, 0, 0]],
", {200, {1,3}}, 201}\nThis 200 picks a question at random from all the \
questions in bank 200"
}], "Text"],
Cell[TextData[{
"{1,{1,4}, {1,13}, 2, 200, ",
StyleBox["{200, {1,3}}",
FontColor->RGBColor[1, 0, 0]],
", 201}\nChoose a question from bank 200, but only pick from either \
question 1 or 3"
}], "Text"],
Cell[TextData[{
"{1,{1,4}, {1,13}, 2, 200, {200, {1,3}}, ",
StyleBox["201",
FontColor->RGBColor[1, 0, 0]],
"}\nChoose a question at random from those in bank 201"
}], "Text"],
Cell["\<\
You could now go through the questions and answers file and look at \
the question I.D.'s to see what the above resulted in.\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Creating a set of questions very randomly", "Subsubsection"],
Cell[TextData[{
"Using create it would be possible to be able to select ",
StyleBox["banks",
FontWeight->"Bold"],
" at random to create assignments."
}], "Text"],
Cell["\<\
Something like this... Here is a possible list of banks that could \
be sampled from at some point in a math course. Banks 1,2,3 are such that \
the students can do all the questions. Bank 4, the students can only do \
question 2. Banks 5 and 6, the students can do them all. Bank 13, the \
students can only do questions 1,2,3 and 4. Bank 70, the students can do \
them all\
\>", "Text"],
Cell[BoxData[
\(\(banklist\ = \ {1, 2, 3, {4, 2}, \ 5, 6, {13, {1, 2, 3, 4}}, \
70};\)\)], "Input"],
Cell["\<\
pickrandom is defined in the Setup package (see further \
below)\
\>", "Text"],
Cell[BoxData[
\(pickrandom[banklist]\)], "Input"],
Cell["\<\
This would pick a bank or a \"banklist\" at random. Feed it to \
Create..... I can't illustrate this too well since I have only 4 banks of \
questions available!\
\>", "Text"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["pickrandom", "Subsection"],
Cell["\<\
This function takes a list as input and picks an item at random \
from the list\
\>", "Text"],
Cell[BoxData[
\(\(?pickrandom\)\)], "Input"],
Cell[BoxData[
\(pickrandom[{1, 2, 3, a, b, c}]\)], "Input"],
Cell[BoxData[
\(pickrandom[{1, 2, 3, a, b, c}]\)], "Input"],
Cell["\<\
It works by finding the length of the list, say 20 (I.E.) there \
are 20 members of the list.
Then, it picks a number at random from 1 to 20
Finally, it outputs that \"part\" of the list.\
\>", "Text"],
Cell["It does work with a single number...", "Text"],
Cell[BoxData[
\(pickrandom[{2}]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["rand", "Subsection"],
Cell[BoxData[
\(\(?rand\)\)], "Input"],
Cell["Just to save typing!", "Text"],
Cell[BoxData[
\(Random[Integer, \ {\(-5\), 5}]\)], "Input"],
Cell["is the same thing as", "Text"],
Cell[BoxData[
\(rand[\(-5\), 5]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["randex", "Subsection"],
Cell["\<\
used to create random numbers EXCEPT FOR..... The first number is \
the lower limit, the second is the upper limit, and the third is the number \
to exclude\
\>", "Text"],
Cell[BoxData[
\(Table[randex[\(-5\), 5, 0], {50}] // Sort\)], "Input"],
Cell["No zeroes!", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["rot", "Subsection"],
Cell[BoxData[
\(\(?rot\)\)], "Input"],
Cell["\<\
This is the transformation matrix for a rotation by a given angle\
\
\>", "Text"],
Cell[BoxData[
\(rot[90]\)], "Input"],
Cell[BoxData[
\(rot[180]\ . {3, 4}\)], "Input"],
Cell["\<\
This could be trouble since it changes the input to radians. The \
input is in degrees.\
\>", "Text"],
Cell[BoxData[
\(\(rot[90] . # &\) /@ {{3, 4}, \ {5, 6}}\)], "Input"],
Cell[BoxData[
\(Map[rot[90] . # &, \ {{3, 4}, \ {5, 6}}]\)], "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell["SimpleGrid", "Subsection"],
Cell[BoxData[
\(\(?SimpleGrid\)\)], "Input"],
Cell["\<\
\[Copyright]Wolfram Research, Inc. 1989
This code was written by Shawn C. Sheridan under the employment of Wolfram \
Research, Inc. WRI holds all copyrights. The code may be distributed freely \
and may be used for any purpose other than resale.\
\>", "SmallText",
Evaluatable->False],
Cell[CellGroupData[{
Cell["\<\
SimpleGrid takes two iterator specifications and an optional third \
list of line attributes. The iterator specifications should be in the same \
format used by the Table function.\
\>", "Subsubsection",
Evaluatable->False],
Cell[BoxData[
\(\(thegrid =
SimpleGrid[{x, \(-1\), 3, 0.5}, {y, \(-4\),
4}, {Thickness[ .001]}];\)\)], "Input"],
Cell[BoxData[
\(\(thegraph =
Plot[2\ x\ \((x - 1)\)\ \((x - 2)\), {x, \(-1\), 3}];\)\)], "Input"],
Cell[BoxData[
\(\(Show[thegrid, thegraph, PlotRange \[Rule] {\(-4\), 4}];\)\)], "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["spokes", "Subsection"],
Cell[BoxData[
\(\(?spokes\)\)], "Input"],
Cell["This is used to create a set of spokes to mark off a circle", "Text"],
Cell[BoxData[
\(\(Show[Graphics[\n\t\tspokes[8]\n\t], \
AspectRatio -> Automatic];\)\)], "Input"],
Cell["The first one is always at an angle of 0 degrees", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["trialrun", "Subsection"],
Cell[BoxData[
\(\(?trialrun\)\)], "Input"],
Cell["\<\
Simply sets the selected notebook to be the one that the questions \
and answers will be written into. I find this handy when I am creating a \
generator.\
\>", "Text"],
Cell[BoxData[
\(\(trialrun[];\)\)], "Input"],
Cell[BoxData[
\(bank1[1]\)], "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["New question and answer windows", "Section"],
Cell["\<\
You can send the questions and answers to different places... \
First, close the questions and answers windows...\
\>", "Text"],
Cell["\<\
You can create new notebooks for questions and answers in many \
different ways. Try out the following\
\>", "Text"],
Cell[BoxData[
\(\(questions =
NotebookCreate[
WindowTitle \[Rule] "\"];\)\)], "Input"],
Cell[BoxData[
\(\(answers =
NotebookCreate[WindowTitle -> "\"];\)\)], "Input"],
Cell[BoxData[
\(\(qnum = 0;\)\)], "Input"],
Cell[BoxData[
\(bank1[]; bank2[]; bank200[];\)], "Input"],
Cell["Close the notebooks (if you want) and try this...", "Text"],
Cell[BoxData[
\(\(answers = \(questions = NotebookCreate[]\);\)\)], "Input"],
Cell[BoxData[
\(\(qnum = 0;\)\)], "Input"],
Cell[BoxData[
\(bank1[]; bank2[]; bank200[];\)], "Input"],
Cell["This writes the question and answer to the same notebook", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Creating your own generators", "Section"],
Cell[TextData[{
"My \"dream\" would be to have other teachers working together on this \
project and to create many question generators. I know that with ",
StyleBox["Mathematica",
FontSlant->"Italic"],
", it should be possible to create some incredible questions. I have \
created 600 so far!, but they are pretty \"basic\". My programming skills \
need some time to develop. I am confident that most high school math \
concepts could be sampled in this way, it just might take some time to \
develop good ways to ask the questions."
}], "Text"],
Cell["\<\
What follows are just a few simple hints on some things that help \
me to create these programs.\
\>", "Text"],
Cell[CellGroupData[{
Cell["The underlying structure of a cell", "Subsection"],
Cell[TextData[{
"One of the hardest things about creating these generators was getting \
things to display properly. ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" can help a lot here though. Simply type the expression you will use in \
the question, and then use the Format menu to \"Show Expression\". This \
will show you how ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" \"sees\" your expression."
}], "Text"],
Cell[TextData[{
"This is a sample line, with ",
Cell[BoxData[
\(TraditionalForm\`5 \@ x\)]],
" and ",
Cell[BoxData[
\(TraditionalForm\`y\^2\)]],
"and \[Theta]"
}], "Text"],
Cell["\<\
If you select the cell and use Format -->Show Expression you get \
what you see below. \
\>", "Text"],
Cell[RawData["\<\
Cell[TextData[{
\"This is a sample line, with \",
Cell[BoxData[
FormBox[
RowBox[{\"5\",
SqrtBox[\"x\"]}], TraditionalForm]]],
\" and \",
Cell[BoxData[
FormBox[
SuperscriptBox[\"y\", \"2\"], TraditionalForm]]],
\"and \\[Theta]\"
}], \"Text\"]\
\>"], "Text"],
Cell["\<\
This provides some hints for the box forms needed to create what \
you want\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Writing a text cell to a \"different\" notebook", "Subsection"],
Cell["\<\
The function NotebookWrite allows you to write information to a \
notebook\
\>", "Text"],
Cell[BoxData[
\(\(?NotebookWrite\)\)], "Input"],
Cell["So if you create a notebook....", "Text"],
Cell[BoxData[
\(\(fred =
NotebookCreate[WindowTitle \[Rule] "\"];\)\)], "Input"],
Cell["\<\
...and copy the cell we just created above and paste it in as you \
can see below...\
\>", "Text"],
Cell[BoxData[
\(NotebookWrite[\n\t\n\t
fred, \ \n\t (*the\ notebook\ to\ write\ to*) \n\t\n
Cell[TextData[{\n\ \ "\", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
RowBox[{"\<5\>", \ \n\ \ \ \ \ \ \ \ \ \ SqrtBox["\"]}], \
TraditionalForm]]], \n\ \ "\< and \>", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
SuperscriptBox["\", \ "\<2\>"], \
TraditionalForm]]], \n\ \ "\"\n}], \ \
"\"]\n\t (*what\ to\ write*) \n]\)], "Input"],
Cell["Now, if you do something like....", "Text"],
Cell[BoxData[
\(\(variable\ = \ Random[Integer, \ {2, 20}];\)\)], "Input"],
Cell["\<\
And replace the \"5\" in the line above.... with the word \
variable... as shown below\
\>", "Text"],
Cell[BoxData[
\(NotebookWrite[\n\t\n\t
fred, \ \n\t (*the\ notebook\ to\ write\ to*) \n\t\n
Cell[TextData[{\n\ \ "\", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
RowBox[{variable, \ \n\ \ \ \ \ \ \ \ \ \ SqrtBox["\"]}], \
TraditionalForm]]], \n\ \ "\< and \>", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
SuperscriptBox["\", \ "\<2\>"], \
TraditionalForm]]], \n\ \ "\"\n}], \ \
"\"]\n\t (*what\ to\ write*) \n]\)], "Input"],
Cell["You get a \"random\" line...", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Writing a graphics cell to a \"different\" notebook", "Subsection"],
Cell["Create a graphic", "Text"],
Cell[BoxData[
\(\(p =
Show[Graphics[{\n\t\t\t\tLine[{{0, 0}, \ {2,
2}}], \n\t\t\t\t{RGBColor[0, 0, 1], \
Disk[{3, 3}, \ 1]}\n\t\t\t}]];\)\)], "Input"],
Cell["\<\
Better yet, create it but tell the computer not to show it...\
\>",
"Text"],
Cell[BoxData[
\(\(p =
Show[Graphics[{\n\t\t\t\tLine[{{0, 0}, \ {2,
2}}], \n\t\t\t\t{RGBColor[0, 0, 1], \
Disk[{3, 3}, \ 1]}\n\t\t\t}], \
DisplayFunction -> Identity];\)\)], "Input"],
Cell[TextData[{
"And use this \"magic\" line. I never would have figured this out, I saw \
it in a notebook created by a ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" \"guru\""
}], "Text"],
Cell[BoxData[
\(\(NotebookWrite[fred,
Cell[GraphicsData["\", \
DisplayString[p]]]];\)\)], "Input"],
Cell["The graphic gets sent to the notebook we created.", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["A basic template for a question generator", "Subsection"],
Cell["\<\
Here is a basic template I use for creating a question generator. \
It includes the various kinds of lines that might occur in a problem. I \
split the generator up into sections, and tried to describe each \
section\
\>", "Text"],
Cell["a)\tUse Module so the variables are local", "Text"],
Cell["\<\
b)\tI used a Label so send the generator back to the beginning so I \
could ensure variables didn't have values that I didn't want.\
\>", "Text"],
Cell["c)\tCreate variables for the problem...", "Text"],
Cell["\<\
d)\tGo back to the beginning if the variables have values you don't \
want\
\>", "Text"],
Cell["\<\
e)\tincrement the question number variable qnum. I did this before \
the question just to have all the variables worked out at the beginning of \
the problem. It helped me to organize better\
\>", "Text"],
Cell["\<\
f)\tWrite the question number and a tab stop, and then start the \
question\
\>", "Text"],
Cell["g)\tWrite a graphic to the question file", "Text"],
Cell["\<\
h)\tWrite the question number and a tab stop, and then start the \
answer. I have gotten into the habit of repeating the question so my answer \
key includes the question as well. It has made grading easier.\
\>", "Text"],
Cell["i)\tmore of the answer", "Text"],
Cell["j)\ta graphic in the answer", "Text"],
Cell["k)\tthe question id for easier tracking and reference", "Text"],
Cell[BoxData[
\(bank\[Pi][
42] := \[IndentingNewLine]\[IndentingNewLine]Module[{p,
variable}, (*a*) \[IndentingNewLine]\[IndentingNewLine]Label[
start]; (*b*) \[IndentingNewLine]\[IndentingNewLine]variable\ = \
Random[Integer, \ {1, 10}]; \[IndentingNewLine]p =
Show[Graphics[{\n\t\t\t\tLine[{{0, 0}, \ {2,
2}}], \n\t\t\t\t{RGBColor[0, 0, 1], \
Disk[{3, 3}, \ 1]}\n\t\t\t}], \
DisplayFunction ->
Identity]; (*c*) \[IndentingNewLine]\[IndentingNewLine]If[
variable \[Equal] 5, \
Goto[start]]; (*d*) \[IndentingNewLine]\[IndentingNewLine]qnum =
qnum + 1; \
(*e*) \[IndentingNewLine]\[IndentingNewLine]NotebookWrite[questions,
Cell[TextData[{qnum, \ "\<.\t\>", \n\ \ "\", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
RowBox[{variable, \ \n\ \ \ \ \ \ \ \ \ \ SqrtBox["\"]}], \
TraditionalForm]]], \n\ \ "\< and \>", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
SuperscriptBox["\", \ "\<2\>"], \
TraditionalForm]]], \n\ \ "\"\n}], \ \
"\"]]; (*f*) \[IndentingNewLine]\[IndentingNewLine]NotebookWrite[
questions,
Cell[GraphicsData["\", \
DisplayString[
p]]]]; \ \ (*g*) \[IndentingNewLine]\[IndentingNewLine]\
\[IndentingNewLine]NotebookWrite[answers,
Cell[TextData[{qnum, \ "\<.\t\>", \n\ \ "\", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
RowBox[{variable, \ \n\ \ \ \ \ \ \ \ \ \ SqrtBox["\"]}], \
TraditionalForm]]], \n\ \ "\< and \>", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
SuperscriptBox["\", \ "\<2\>"], \
TraditionalForm]]], \n\ \ "\"\n}], \ \
"\"]]; (*h*) \[IndentingNewLine]\[IndentingNewLine]NotebookWrite[
answers,
Cell[TextData[{\n\ \ "\", \n\ \
\ Cell[BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ RowBox[{variable\ , \ \
\n\ \ \ \ \ \ \ \ \ \ SqrtBox["\"]}], \
TraditionalForm]]], \n\ \ "\< and \>", \n\ \ Cell[
BoxData[\n\ \ \ \ \ \ FormBox[\n\ \ \ \ \ \ \ \ \
SuperscriptBox["\", \ variable], \
TraditionalForm]]], \n\ \ "\"\n}], \ \
"\"]]; (*i*) \[IndentingNewLine]\[IndentingNewLine]NotebookWrite[
answers,
Cell[GraphicsData["\", \
DisplayString[
p]]]]; \ \ (*j*) \[IndentingNewLine]\[IndentingNewLine]\
\[IndentingNewLine]NotebookWrite[answers, \
Cell[TextData[{"\"}]]]; \ (*k*) \[IndentingNewLine]]\)], "Input"],
Cell["\<\
If you don't have them, create windows to write our question \
generator to.\
\>", "Text"],
Cell[BoxData[
\(\(questions =
NotebookCreate[
WindowTitle \[Rule] "\"];\)\)], "Input"],
Cell[BoxData[
\(\(answers =
NotebookCreate[WindowTitle -> "\"];\)\)], "Input"],
Cell["Try it out!!", "Text"],
Cell[BoxData[
\(Do[bank\[Pi][42], {5}]\)], "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Template Package", "Section"],
Cell["\<\
One of the files that I have included with this demo is a template \
package. This gets me in pretty far over my depth, but I use it and it \
works. I create the questions first OUTSIDE of the package, and make sure \
they are running and doing what I would like. Once I have several questions \
that sample some topic, I put them together into the package. If you name \
your procedures \"right\" when in the development phase, say for example, \
bank50[1] , bank50[2], bank50[3] etc. Then you can paste them right in, \
change the cells to initialization cells, save the notebook, put the \
notebook.m file into the TMKR folder, and you are in business! If anyone \
reading this really does want to get into writing these kinds of generators, \
please contact me and we can communicate further (see below)\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Contact information", "Section"],
Cell["\<\
At this point, I am just getting started on this project. I am \
currently teaching Algebra I, Geometry, Algebra II, and Functions and \
Trigonometry. I have about 600 question generators that I am in the process \
of putting into packages. I have been using these programs to create tests \
since the beginning of September, so far, so good. Some weeks I spend a lot \
of time trying to write programs to sample a certain idea, but I figure the \
investment of time will pay off.\
\>", "Text"],
Cell[TextData[StyleBox["I teach for an online school called NorthStar Academy \
, on th web at www.northstar-academy.org\nThis programs have helped to \
create a more secure and compassionate testing environment.",
FontSlant->"Plain"]], "Text",
FontSlant->"Italic"],
Cell["\<\
I live in Edmonton, Alberta, Canada, and I work out of my home, \
spending most of the day in front of my (Macintosh) computer, writing notes \
and examples and answering emails from students all over the world, from \
Kazakhstan to Peru!\
\>", "Text"],
Cell["\<\
I would be interested in working with others on this project, or \
hearing any comments you have about it. \
\>", "Text"],
Cell["\<\
Tom De Vries
tdevries@mail2.westworld.ca\
\>", "Text"],
Cell[TextData[ButtonBox["Tom De Vries",
ButtonData:>{
URL[ "mailto:tdevries@mail2.westworld.ca"], None},
ButtonStyle->"Hyperlink",
ButtonNote->"Send email to Tom De Vries"]], "Text",
GeneratedCell->True,
CellAutoOverwrite->True],
Cell["\<\
T De Vries
11003 - 132 st.
Edmonton, AB
Canada
T5M 1E4
(780)452-5958 phone
(780)454-0173 fax\
\>", "Text"]
}, Open ]]
},
FrontEndVersion->"4.0 for Macintosh",
ScreenRectangle->{{0, 1024}, {0, 748}},
ScreenStyleEnvironment->"Presentation",
WindowSize->{767, 521},
WindowMargins->{{Automatic, 46}, {Automatic, 11}},
Background->RGBColor[0.924025, 0.891524, 0.771649],
StyleDefinitions -> "Classroom.nb",
MacintoshSystemPageSetup->"\<\
02P0001804P000000^L2D_ogooL33`9K8085:0?l0000002d0;@000001d45c@2l
0385cBBh02H00@4100000BL?00400@000000000000000000000000000040I0<0
0000000000009BT84@002000000eBf4P\>"
]
(***********************************************************************
Cached data follows. If you edit this Notebook file directly, not using
Mathematica, you must remove the line containing CacheID at the top of
the file. The cache data will then be recreated when you save this file
from within Mathematica.
***********************************************************************)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[1717, 49, 46, 1, 60, "Title"],
Cell[1766, 52, 304, 14, 52, "Subtitle"],
Cell[CellGroupData[{
Cell[2095, 70, 46, 0, 78, "Section"],
Cell[2144, 72, 319, 7, 82, "Text"],
Cell[2466, 81, 419, 7, 104, "Text"],
Cell[2888, 90, 419, 7, 104, "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell[3344, 102, 36, 0, 50, "Section"],
Cell[3383, 104, 642, 13, 126, "Text"],
Cell[4028, 119, 163, 5, 38, "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell[4228, 129, 49, 0, 50, "Section"],
Cell[4280, 131, 135, 3, 38, "Text"],
Cell[4418, 136, 57, 1, 54, "Input"],
Cell[4478, 139, 331, 6, 82, "Text"],
Cell[4812, 147, 417, 7, 104, "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell[5266, 159, 50, 0, 50, "Section"],
Cell[5319, 161, 43, 1, 54, "Input"],
Cell[5365, 164, 43, 1, 54, "Input"],
Cell[5411, 167, 554, 9, 126, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[6002, 181, 48, 0, 78, "Section"],
Cell[6053, 183, 123, 3, 38, "Text"],
Cell[6179, 188, 46, 1, 54, "Input"],
Cell[6228, 191, 154, 3, 60, "Text"],
Cell[6385, 196, 46, 1, 54, "Input"],
Cell[6434, 199, 109, 3, 38, "Text"],
Cell[6546, 204, 57, 1, 54, "Input"],
Cell[6606, 207, 47, 0, 38, "Text"],
Cell[6656, 209, 104, 3, 38, "Text"],
Cell[6763, 214, 54, 1, 54, "Input"],
Cell[6820, 217, 60, 1, 54, "Input"],
Cell[6883, 220, 234, 4, 60, "Text"],
Cell[7120, 226, 117, 3, 38, "Text"],
Cell[7240, 231, 40, 1, 54, "Input"],
Cell[7283, 234, 340, 6, 82, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[7660, 245, 39, 0, 78, "Section"],
Cell[7702, 247, 123, 3, 38, "Text"],
Cell[7828, 252, 9777, 266, 124, 3874, 188, "GraphicsData", "PostScript", \
InheritFromParent],
Cell[17608, 520, 107, 3, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[17752, 528, 51, 0, 78, "Section"],
Cell[17806, 530, 436, 7, 104, "Text"],
Cell[18245, 539, 57, 1, 54, "Input"],
Cell[18305, 542, 43, 1, 54, "Input"],
Cell[18351, 545, 43, 1, 54, "Input"],
Cell[18397, 548, 41, 1, 54, "Input"],
Cell[18441, 551, 246, 5, 60, "Text"],
Cell[18690, 558, 41, 1, 54, "Input"],
Cell[18734, 561, 448, 7, 104, "Text"],
Cell[19185, 570, 49, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[19271, 576, 33, 0, 78, "Section"],
Cell[19307, 578, 259, 5, 60, "Text"],
Cell[CellGroupData[{
Cell[19591, 587, 27, 0, 62, "Subsection"],
Cell[19621, 589, 234, 4, 60, "Text"],
Cell[19858, 595, 57, 1, 54, "Input"],
Cell[19918, 598, 88, 3, 38, "Text"],
Cell[20009, 603, 50, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[20096, 609, 49, 0, 62, "Subsection"],
Cell[20148, 611, 315, 7, 60, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[20500, 623, 28, 0, 62, "Subsection"],
Cell[20531, 625, 215, 5, 94, "Text"],
Cell[20749, 632, 113, 3, 38, "Text"],
Cell[20865, 637, 230, 4, 114, "Input"],
Cell[CellGroupData[{
Cell[21120, 645, 34, 0, 55, "Subsubsection"],
Cell[21157, 647, 170, 4, 106, "Text"],
Cell[21330, 653, 42, 1, 54, "Input"],
Cell[21375, 656, 44, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[21456, 662, 34, 0, 55, "Subsubsection"],
Cell[21493, 664, 146, 4, 106, "Text"],
Cell[21642, 670, 47, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[21726, 676, 34, 0, 55, "Subsubsection"],
Cell[21763, 678, 128, 4, 72, "Text"],
Cell[21894, 684, 111, 3, 38, "Text"],
Cell[22008, 689, 55, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[22100, 695, 40, 0, 55, "Subsubsection"],
Cell[22143, 697, 143, 5, 38, "Text"],
Cell[22289, 704, 54, 0, 38, "Text"],
Cell[22346, 706, 230, 4, 114, "Input"],
Cell[22579, 712, 41, 0, 38, "Text"],
Cell[22623, 714, 46, 1, 54, "Input"],
Cell[22672, 717, 104, 3, 38, "Text"],
Cell[22779, 722, 145, 3, 74, "Input"],
Cell[22927, 727, 121, 3, 38, "Text"],
Cell[23051, 732, 206, 6, 72, "Text"],
Cell[23260, 740, 172, 6, 72, "Text"],
Cell[23435, 748, 171, 5, 72, "Text"],
Cell[23609, 755, 202, 6, 72, "Text"],
Cell[23814, 763, 206, 6, 72, "Text"],
Cell[24023, 771, 210, 6, 72, "Text"],
Cell[24236, 779, 184, 5, 72, "Text"],
Cell[24423, 786, 149, 3, 60, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[24609, 794, 66, 0, 55, "Subsubsection"],
Cell[24678, 796, 171, 5, 38, "Text"],
Cell[24852, 803, 404, 7, 104, "Text"],
Cell[25259, 812, 115, 2, 54, "Input"],
Cell[25377, 816, 88, 3, 38, "Text"],
Cell[25468, 821, 53, 1, 54, "Input"],
Cell[25524, 824, 187, 4, 60, "Text"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[25760, 834, 32, 0, 62, "Subsection"],
Cell[25795, 836, 103, 3, 38, "Text"],
Cell[25901, 841, 48, 1, 54, "Input"],
Cell[25952, 844, 63, 1, 54, "Input"],
Cell[26018, 847, 63, 1, 54, "Input"],
Cell[26084, 850, 212, 5, 106, "Text"],
Cell[26299, 857, 52, 0, 38, "Text"],
Cell[26354, 859, 48, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[26439, 865, 26, 0, 62, "Subsection"],
Cell[26468, 867, 42, 1, 54, "Input"],
Cell[26513, 870, 36, 0, 38, "Text"],
Cell[26552, 872, 63, 1, 54, "Input"],
Cell[26618, 875, 36, 0, 38, "Text"],
Cell[26657, 877, 48, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[26742, 883, 28, 0, 62, "Subsection"],
Cell[26773, 885, 181, 4, 60, "Text"],
Cell[26957, 891, 74, 1, 54, "Input"],
Cell[27034, 894, 26, 0, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[27097, 899, 25, 0, 62, "Subsection"],
Cell[27125, 901, 41, 1, 54, "Input"],
Cell[27169, 904, 91, 3, 38, "Text"],
Cell[27263, 909, 40, 1, 54, "Input"],
Cell[27306, 912, 52, 1, 54, "Input"],
Cell[27361, 915, 112, 3, 38, "Text"],
Cell[27476, 920, 72, 1, 54, "Input"],
Cell[27551, 923, 73, 1, 54, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[27661, 929, 32, 0, 62, "Subsection"],
Cell[27696, 931, 48, 1, 54, "Input"],
Cell[27747, 934, 298, 6, 76, "SmallText",
Evaluatable->False],
Cell[CellGroupData[{
Cell[28070, 944, 236, 5, 76, "Subsubsection",
Evaluatable->False],
Cell[28309, 951, 137, 3, 74, "Input"],
Cell[28449, 956, 110, 2, 54, "Input"],
Cell[28562, 960, 92, 1, 54, "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[28703, 967, 28, 0, 62, "Subsection"],
Cell[28734, 969, 44, 1, 54, "Input"],
Cell[28781, 972, 75, 0, 38, "Text"],
Cell[28859, 974, 110, 2, 94, "Input"],
Cell[28972, 978, 64, 0, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[29073, 983, 30, 0, 62, "Subsection"],
Cell[29106, 985, 46, 1, 54, "Input"],
Cell[29155, 988, 179, 4, 60, "Text"],
Cell[29337, 994, 48, 1, 54, "Input"],
Cell[29388, 997, 41, 1, 54, "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[29478, 1004, 50, 0, 78, "Section"],
Cell[29531, 1006, 138, 3, 38, "Text"],
Cell[29672, 1011, 127, 3, 38, "Text"],
Cell[29802, 1016, 126, 3, 54, "Input"],
Cell[29931, 1021, 106, 2, 54, "Input"],
Cell[30040, 1025, 46, 1, 54, "Input"],
Cell[30089, 1028, 61, 1, 54, "Input"],
Cell[30153, 1031, 65, 0, 38, "Text"],
Cell[30221, 1033, 80, 1, 54, "Input"],
Cell[30304, 1036, 46, 1, 54, "Input"],
Cell[30353, 1039, 61, 1, 54, "Input"],
Cell[30417, 1042, 72, 0, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[30526, 1047, 47, 0, 78, "Section"],
Cell[30576, 1049, 560, 10, 126, "Text"],
Cell[31139, 1061, 120, 3, 38, "Text"],
Cell[CellGroupData[{
Cell[31284, 1068, 56, 0, 62, "Subsection"],
Cell[31343, 1070, 444, 11, 82, "Text"],
Cell[31790, 1083, 194, 8, 40, "Text"],
Cell[31987, 1093, 112, 3, 38, "Text"],
Cell[32102, 1098, 324, 13, 192, "Text"],
Cell[32429, 1113, 99, 3, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[32565, 1121, 69, 0, 62, "Subsection"],
Cell[32637, 1123, 98, 3, 38, "Text"],
Cell[32738, 1128, 51, 1, 54, "Input"],
Cell[32792, 1131, 47, 0, 38, "Text"],
Cell[32842, 1133, 103, 2, 54, "Input"],
Cell[32948, 1137, 108, 3, 38, "Text"],
Cell[33059, 1142, 602, 10, 414, "Input"],
Cell[33664, 1154, 49, 0, 38, "Text"],
Cell[33716, 1156, 79, 1, 54, "Input"],
Cell[33798, 1159, 110, 3, 38, "Text"],
Cell[33911, 1164, 603, 10, 414, "Input"],
Cell[34517, 1176, 44, 0, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[34598, 1181, 73, 0, 62, "Subsection"],
Cell[34674, 1183, 32, 0, 38, "Text"],
Cell[34709, 1185, 201, 4, 114, "Input"],
Cell[34913, 1191, 88, 3, 38, "Text"],
Cell[35004, 1196, 243, 5, 114, "Input"],
Cell[35250, 1203, 204, 6, 60, "Text"],
Cell[35457, 1211, 137, 3, 74, "Input"],
Cell[35597, 1216, 65, 0, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[35699, 1221, 63, 0, 62, "Subsection"],
Cell[35765, 1223, 242, 5, 60, "Text"],
Cell[36010, 1230, 57, 0, 38, "Text"],
Cell[36070, 1232, 155, 3, 60, "Text"],
Cell[36228, 1237, 55, 0, 38, "Text"],
Cell[36286, 1239, 98, 3, 38, "Text"],
Cell[36387, 1244, 216, 4, 60, "Text"],
Cell[36606, 1250, 99, 3, 38, "Text"],
Cell[36708, 1255, 56, 0, 38, "Text"],
Cell[36767, 1257, 233, 4, 60, "Text"],
Cell[37003, 1263, 38, 0, 38, "Text"],
Cell[37044, 1265, 43, 0, 38, "Text"],
Cell[37090, 1267, 69, 0, 38, "Text"],
Cell[37162, 1269, 3032, 53, 1434, "Input"],
Cell[40197, 1324, 100, 3, 38, "Text"],
Cell[40300, 1329, 129, 3, 54, "Input"],
Cell[40432, 1334, 109, 2, 54, "Input"],
Cell[40544, 1338, 28, 0, 38, "Text"],
Cell[40575, 1340, 55, 1, 54, "Input"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[40679, 1347, 35, 0, 78, "Section"],
Cell[40717, 1349, 843, 12, 192, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[41597, 1366, 38, 0, 78, "Section"],
Cell[41638, 1368, 508, 8, 126, "Text"],
Cell[42149, 1378, 271, 4, 72, "Text"],
Cell[42423, 1384, 262, 5, 82, "Text"],
Cell[42688, 1391, 132, 3, 38, "Text"],
Cell[42823, 1396, 64, 3, 72, "Text"],
Cell[42890, 1401, 242, 6, 38, "Text"],
Cell[43135, 1409, 118, 8, 242, "Text"]
}, Open ]]
}
]
*)
(***********************************************************************
End of Mathematica Notebook file.
***********************************************************************)