diff --git a/Contrib/PCC/.gitignore b/Contrib/PCC/.gitignore
new file mode 100644
index 0000000000..84be62f0d6
--- /dev/null
+++ b/Contrib/PCC/.gitignore
@@ -0,0 +1,2 @@
+processLibDevs
+checkLibDevs
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg
index ddd5b84e89..5434940279 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg
@@ -37,7 +37,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg
index b5203bc8bb..ed2022764b 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("FiniteSolutionSets");
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg
index 7542a86d05..ad2ffc2f9d 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg
index 812f4f0986..596d1e8ce5 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg
index 4e20aabcd2..ca8ba7d312 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg
index 5cfdc2dfaa..e139b74b62 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg
index 02e370f6cd..86da9ce003 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg
index d2a0074890..07cec1a0bb 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg
index 4505334f04..a7ce2cd55f 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg
index 36988b2ac9..3677abf8ca 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg
index 831657b252..2666a2bee2 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg
index efeba0f26d..1a81249693 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg
index bf85883617..a8177f9de5 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg
index 541c4c64ec..619c3f9718 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg
index 42d5e15017..b8d0628096 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg
index df16e0c9e1..465a1458f1 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg
index 813c033a00..f7274951c5 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg
index 51597feb80..920d713978 100644
--- a/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg
+++ b/Contrib/PCC/BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg
@@ -33,7 +33,6 @@ loadMacros(
##############################################
TEXT(beginproblem());
-#$refreshCachedImages = 1;
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg
index 5b732eafeb..8d39662199 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality10.pg b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality10.pg
index 9f8cdca954..83147d05eb 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality10.pg
@@ -39,7 +39,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
do {
$a = non_zero_random(-3,3,1);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality20.pg b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality20.pg
index eaea330162..6f1888b8b1 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality20.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/CalculatorSolveInequality20.pg
@@ -39,7 +39,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
do {
$a = non_zero_random(-3,3,1);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain10.pg
new file mode 100644
index 0000000000..6bc1242d72
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain10.pg
@@ -0,0 +1,140 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Coordinates and Graphs')
+## DBsection('Graphs of Equations')
+## KEYWORDS('quadratic','function','parabola','application')
+## DBCCSS('F.IF.7.a','F.IF.4','A-CED.1')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PCCmacros.pl",
+ "PGgraphmacros.pl",
+ "PCCgraphMacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+TEXT(beginproblem());
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$a = random(1,10,1);
+$a2 = $a**2;
+$b = non_zero_random(-10,10,1);
+$c = random(-1,1,2);
+$d = random(-10,10,1);
+$func = Compute("$c*sqrt((x-$d)**2-$a2)+$b")->reduce;
+$xd0 = -$a+$d;
+$xd1 = $a+$d;
+
+$domain = Compute("(-inf,$xd0]U[$xd1,inf)");
+$range = $c>0 ? Compute("[$b,inf)") : Compute("(-inf,$b]");
+
+($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$xd0,$xd1],[2*$b,-$b]);
+
+@xticks = @$xticks_ref;
+@yticks = @$yticks_ref;
+
+ $gr = init_graph($min[0],$min[1],$max[0],$max[1],
+ axes=>[0,0],
+ grid=>[$ticknum[0],$ticknum[1]],
+ size=>[xPixels(),yPixels()]
+ );
+ $gr->lb('reset');
+ for my $j (@xticks) {
+ if (abs($j)<10**(-10)) {next;}
+ $gr->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top'));
+ }
+
+ for my $j (@yticks) {
+ if (Real($j) == 0) {next;}
+ $gr->lb( new Label(-$marksep[0]/8, $j, $j,'black','right','middle'));
+ }
+
+$xfunc = sub { my $t = shift();
+ return $a/cos($t)+$d; };
+$yfunc = sub { my $t = shift();
+ return $a*tan($t)+$b; };
+if ($c>0) {
+ $fn1 = new Fun( $xfunc, $yfunc, $gr );
+ $fn1->domain(0,pi/2-0.1);
+ $fn2 = new Fun( $xfunc, $yfunc, $gr );
+ $fn2->domain(pi,3*pi/2-0.1);
+} else {
+ $fn1 = new Fun( $xfunc, $yfunc, $gr );
+ $fn1->domain(pi/2,pi-0.1);
+ $fn2 = new Fun( $xfunc, $yfunc, $gr );
+ $fn2->domain(3*pi/2,2*pi-0.1);
+}
+
+$tb = $c>0 ? "top" : "bottom";
+$gr->stamps( closed_circle($xd0,$b,'blue') );
+$gr->lb( new Label($xd0,$b,"($xd0,$b)", 'blue','center',$tb,large));
+$gr->stamps( closed_circle($xd1,$b,'blue') );
+$gr->lb( new Label($xd1,$b,"($xd1,$b)", 'blue','center',$tb,large));
+
+$ud = $c>0 ? "up" : "down";
+$alt = "This is the graph of f(x)=$func. Its graph starts at ($xd0,$b) and goes $ud and outward, and starts at ($xd1,$b) and goes $ud and outward.";
+
+##############################################
+
+BEGIN_PGML
+
+Use technology to find the domain and range of
+
+ [``f(x)=[$func]``]
+
+use technology to determine the following. Use *inf* to represent infinity.
+
+ [@KeyboardInstructions(q?Use interval notation.?)@]**
+
+ Domain: [__]{$domain}{width => 30}
+
+ Range: [__]{$range}{width => 30}
+
+END_PGML
+
+############################################################
+# Solution
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+We will use desmos.com to answer those questions.
+
+Step 1: Go to desmos.com, click on Start Graphing.
+
+Step 2: In the first textbox, enter [` f(x)=[$func] `].
+
+Step 3: If needed, zoom out to see the function's critical points.
+
+>>[@ image( insertGraph($gr), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$alt' title = '$alt'" )@]*<<
+
+The domain is [`[$domain]`]. The range is [`[$range]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain20.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain20.pg
new file mode 100644
index 0000000000..d156a758a7
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosFindingDomain20.pg
@@ -0,0 +1,138 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Coordinates and Graphs')
+## DBsection('Graphs of Equations')
+## KEYWORDS('quadratic','function','parabola','application')
+## DBCCSS('F.IF.7.a','F.IF.4','A-CED.1')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PCCmacros.pl",
+ "PGgraphmacros.pl",
+ "PCCgraphMacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+TEXT(beginproblem());
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$a = random(1,10,1);
+$a2 = $a**2;
+$b = random(-10,10,1);
+$c = random(-1,1,2);
+$d = random(-10,10,1);
+$func = Compute("$c*sqrt((x-$d)**2-$a2)-$c*x+$b")->reduce;
+$xd0 = -$a+$d;
+$xd1 = $a+$d;
+$yb0 = -$c*$xd0+$b;
+$yb1 = -$c*$xd1+$b;
+$hor = -$c*$d+$b;
+
+$domain = Compute("(-inf,$xd0]U[$xd1,inf)");
+$range = $c>0 ? Compute("[$yb1,$hor)U[$yb0,inf)") : Compute("(-inf,$yb0]U($hor,$yb1]");
+
+($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$xd0, $xd0*2,$xd1,2*$xd1],[$yb0,$yb0*2,$yb1,2*$yb1]);
+
+@xticks = @$xticks_ref;
+@yticks = @$yticks_ref;
+
+ $gr = init_graph($min[0],$min[1],$max[0],$max[1],
+ axes=>[0,0],
+ grid=>[$ticknum[0],$ticknum[1]],
+ size=>[xPixels(),yPixels()]
+ );
+ $gr->lb('reset');
+ for my $j (@xticks) {
+ if (abs($j)<10**(-10)) {next;}
+ $gr->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top'));
+ }
+
+ for my $j (@yticks) {
+ if (Real($j) == 0) {next;}
+ $gr->lb( new Label(-$marksep[0]/8, $j, $j,'black','right','middle'));
+ }
+
+$xfunc = sub { my $t = shift();
+ return $a/cos($t)+$d; };
+$yfunc = sub { my $t = shift();
+ return $c*$a*tan($t)-$c*$a/cos($t)+$b; };
+add_functions($gr, "$func for x in <$min[0],$max[0]> using color:blue and weight:2");
+($gr->fn)[0]->steps(400);
+
+$tb = $c>0 ? "top" : "bottom";
+$gr->stamps( closed_circle($xd0,$yb0,'blue') );
+$gr->lb( new Label($xd0,$yb0,"($xd0,$yb0)", 'blue','center',$tb,large));
+$gr->stamps( closed_circle($xd1,$yb1,'blue') );
+$gr->lb( new Label($xd1,$yb1,"($xd1,$yb1)", 'blue','center',$tb,large));
+
+$ud = $c>0 ? "up" : "down";
+$alt = "This is the graph of f(x)=$func. Its graph starts at ($xd0,$yb0) and goes $ud and outward, and starts at ($xd1,$yb1) and goes $ud and outward, approaching y=$b as x approaches infinity.";
+
+##############################################
+
+BEGIN_PGML
+
+[`[$test]`]
+
+Use technology to find the domain and range of
+
+ [``f(x)=[$func]``]
+
+use technology to determine the following. Use *inf* to represent infinity.
+
+ [@KeyboardInstructions(q?Use interval notation.?)@]**
+
+ Domain: [__]{$domain}{width => 30}
+
+ Range: [__]{$range}{width => 30}
+
+END_PGML
+
+############################################################
+# Solution
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+We will use desmos.com to answer those questions.
+
+Step 1: Go to desmos.com, click on Start Graphing.
+
+Step 2: In the first textbox, enter [` f(x)=[$func] `].
+
+Step 3: If needed, zoom out to see the function's critical points.
+
+>>[@ image( insertGraph($gr), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$alt' title = '$alt'" )@]*<<
+
+Notice that when [`x`] approaches [`\infty`], the function's value approaches [`[$hor]`]. Or, [`y=[$hor]`] is a horizontal asymptote.
+
+The domain is [`[$domain]`]. The range is [`[$range]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction100.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction100.pg
index 0829302a22..199ca820d7 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction100.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction100.pg
@@ -177,8 +177,8 @@ if ($s[0]>0) {
$ans3 = ($i0==0) ? Interval("($x0,$x1)") : Interval("[$x0,$x1]");
$ans4 = ($i1==2) ? Interval("(-inf,$x0)U($x1,inf)") : Interval("(-inf,$x0]U[$x1,inf)");
} else {
- $ans3 = ($i1==2) ? Interval("(-inf,$x0)U($x1,inf)") : Interval("(-inf,$x0]U[$x1,inf)");
- $ans4 = ($i0==0) ? Interval("($x0,$x1)") : Interval("[$x0,$x1]");
+ $ans3 = ($i0==0) ? Interval("(-inf,$x0)U($x1,inf)") : Interval("(-inf,$x0]U[$x1,inf)");
+ $ans4 = ($i1==2) ? Interval("($x0,$x1)") : Interval("[$x0,$x1]");
}
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction40.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction40.pg
index 6728806628..e0d9daf673 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction40.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction40.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Point");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction50.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction50.pg
index 6649f0c20b..1203ef2ad8 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction50.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction50.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction60.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction60.pg
index 559a11b601..24faf43245 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction60.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosQuadraticFunction60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosRationalFunction30.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosRationalFunction30.pg
index 39f1fab654..4760c9d248 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosRationalFunction30.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosRationalFunction30.pg
@@ -117,7 +117,7 @@ $left = -$spaceLR;
$right = (int(($base+$spaceLR)/10))*10;
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingCubicEquation10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingCubicEquation10.pg
index 1b29d615c1..3e22649df0 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingCubicEquation10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingCubicEquation10.pg
@@ -49,7 +49,7 @@ Context()->variables->are($var=>'Real');
$x0 = random(-20,-10,1);
$x1 = non_zero_random(-9,9,1);
$x2 = random(10,20,1);
- $a = random(-0.09,0.09,0.01);
+ $a = non_zero_random(-0.09,0.09,0.01);
$b = -$a*($x0+$x1+$x2);
$slope = non_zero_random(-2,2,0.1);
$c = $a*($x0*$x1+$x0*$x2+$x1*$x2)+$slope;
@@ -112,8 +112,7 @@ Use graphing technology to solve this equation:
[`` [$func0] = [$func1] ``]
-* Write your answers in the format of *[$var]=#* or in set notation.
-* If there are more than one solution, use a comma to separate them.
+* Enter your answer(s) in set notation.
The equation's solutions are [__________]{$ans}.
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation10.pg
index 300eb3bc83..4d25e3d0ca 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation10.pg
@@ -103,11 +103,11 @@ We will use desmos.com to solve this equation.
Step 1: Go to desmos.com, click on Start Graphing.
-Step 2: In the first textbox, enter [` f(x)=[$func0] `].
+Step 2: In the first textbox, enter [` f([$var])=[$func0] `].
-Step 3: In the second textbox, enter [` g(x)=[$func1] `].
+Step 3: In the second textbox, enter [` g([$var])=[$func1] `].
-Step 4: Zoom out on the window, if needed, until you can see the intersection of [`f(x)`] and [`g(x)`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
+Step 4: Zoom out on the window, if needed, until you can see the intersection of [`f([$var])`] and [`g([$var])`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
Step 5: Click on the intersection, and desmos shows the solution [`([$xSolution],[$ySolution])`].
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation20.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation20.pg
index b5f25afea3..9e15b81684 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation20.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRadicalEquation20.pg
@@ -122,11 +122,11 @@ We will use desmos.com to solve this equation.
Step 1: Go to desmos.com, click on Start Graphing.
-Step 2: In the first textbox, enter [` f(x)=[$func0] `].
+Step 2: In the first textbox, enter [` f([$var])=[$func0] `].
-Step 3: In the second textbox, enter [` g(x)=[$func1] `].
+Step 3: In the second textbox, enter [` g([$var])=[$func1] `].
-Step 4: Zoom out on the window, if needed, until you can see the intersections of [`f(x)`] and [`g(x)`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
+Step 4: Zoom out on the window, if needed, until you can see the intersections of [`f([$var])`] and [`g([$var])`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
Step 5: Click on the intersections, and desmos shows the solution [`([$x0Show],[$y0Show])`] and [`([$x1Show],[$y1Show])`].
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation10.pg
index 8066ed0cba..0c7d7e95cd 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation10.pg
@@ -74,9 +74,6 @@ $commonD = Formula("$var+$a")->reduce;
$left = Formula("$var/($var+$a)")->reduce;
$right = Formula("$b")->reduce;
-$leftX = Formula("x/(x+$a)")->reduce;
-$rightX = Formula("$b")->reduce;
-
$ans = Formula("$var=$x");
$y = $left->eval($var=>$x);
@@ -104,11 +101,11 @@ We will use desmos.com to solve this equation.
Step 1: Go to desmos.com, click on Start Graphing.
-Step 2: In the first textbox, enter [` f(x)=[$leftX] `]. Note that we need to replace [`[$var]`] with [`x`].
+Step 2: In the first textbox, enter [` f([$var])=[$left] `].
-Step 3: In the second textbox, enter [` g(x)=[$rightX] `].
+Step 3: In the second textbox, enter [` g([$var])=[$right] `].
-Step 4: Zoom out on the window, if needed, until you can see the intersection of [`f(x)`] and [`g(x)`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
+Step 4: Zoom out on the window, if needed, until you can see the intersection of [`f([$var])`] and [`g([$var])`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
Step 5: Click on the intersection, and desmos shows the solution [`([$x],[$y])`].
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation20.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation20.pg
index bfd1e33c48..0a9df68c45 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation20.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosSolvingRationalEquation20.pg
@@ -87,9 +87,6 @@ Context()->flags->set(
tolType => "absolute",
);
- $leftX = Formula("$a/($b*x+$c)")->reduce;
- $rightX = Formula("$d*x")->reduce;
-
$ans = List(Formula("$var=$x1"),Formula("$var=$x2"));
$x1Show = Round($x1,3);
@@ -105,7 +102,7 @@ Use graphing technology to solve this equation:
[`` [$left] = [$right] ``]
-* Enter multiple answers separated by commas, such as [`x=1,x=-1`]
+* Enter multiple answers separated by commas, such as [`[$var]=1,[$var]=-1`]
* Round your answers to two decimal places.
This equation's solutions are [__________]{$ans}.
@@ -120,11 +117,11 @@ We will use desmos.com to solve this equation.
Step 1: Go to desmos.com, click on Start Graphing.
-Step 2: In the first textbox, enter [` f(x)=[$leftX] `]. Note that we need to replace [`[$var]`] with [`x`].
+Step 2: In the first textbox, enter [` f([$var])=[$left] `].
-Step 3: In the second textbox, enter [` g(x)=[$rightX] `].
+Step 3: In the second textbox, enter [` g([$var])=[$right] `].
-Step 4: Zoom out on the window, if needed, until you can see the intersections of [`f(x)`] and [`g(x)`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
+Step 4: Zoom out on the window, if needed, until you can see the intersections of [`f([$var])`] and [`g([$var])`]. Alternatively, click on the Graph Settings icon (looking like a tool) and define the ranges of [`x`]-axis and [`y`]-axis.
Step 5: Click on the intersections, and desmos shows the solution [`([$x1Show],[$y1Show])`] and [`([$x2Show],[$y1Show])`].
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable10.pg
index 2ccc3a865a..0a4b5ef8ed 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable10.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2018-08-20T01:24:28-07:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1()
-## EditionText1()
-## AuthorText1()
-## Section1(not reported)
-## Problem1(10.3.1)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -38,7 +18,6 @@ loadMacros(
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable20.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable20.pg
index 408b1ee6ed..40c6daa825 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable20.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosTable20.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2018-08-20T01:24:28-07:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1()
-## EditionText1()
-## AuthorText1()
-## Section1(not reported)
-## Problem1(10.3.1)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -38,7 +18,6 @@ loadMacros(
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView10.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView10.pg
index b1bb016a04..129c7f4d69 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView10.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView10.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2018-08-20T01:24:29-07:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1()
-## EditionText1()
-## AuthorText1()
-## Section1(not reported)
-## Problem1(10.3.7)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -39,7 +19,6 @@ loadMacros(
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
diff --git a/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView20.pg b/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView20.pg
index edafd9a7ac..f5266dcf38 100644
--- a/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView20.pg
+++ b/Contrib/PCC/BasicAlgebra/Calculator/DesmosWindowView20.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2018-08-20T01:24:29-07:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1()
-## EditionText1()
-## AuthorText1()
-## Section1(not reported)
-## Problem1(10.3.11)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -39,7 +19,6 @@ loadMacros(
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
diff --git a/Contrib/PCC/BasicAlgebra/ComplexNumber/complexSolutions50.pg b/Contrib/PCC/BasicAlgebra/ComplexNumber/complexSolutions50.pg
index bb6db5ae88..af4b52f01c 100644
--- a/Contrib/PCC/BasicAlgebra/ComplexNumber/complexSolutions50.pg
+++ b/Contrib/PCC/BasicAlgebra/ComplexNumber/complexSolutions50.pg
@@ -42,7 +42,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#These arrays decide values in y=a(x-b)^2+h.
#$a[0], $b[0], $h[0], $a[1], $b[1], $h[1] are for the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg
index 48e43f1760..d692fd408b 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg
@@ -41,7 +41,7 @@ TEXT(beginproblem());
$symbol = '\geq';
Context("Numeric");
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg
index 83675270da..61d9d99179 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg
@@ -42,7 +42,7 @@ $symbol = '\leq';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg
index a02adb937a..d11a3308ff 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg
@@ -42,7 +42,7 @@ $symbol = '<';
Context("Currency");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg
index 35b6140ad9..bfb1c13377 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg
@@ -41,7 +41,7 @@ TEXT(beginproblem());
$symbol = '<';
Context("Numeric");
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg
index 6c04afad93..afa96e5465 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg
@@ -42,7 +42,7 @@ $symbol = '>';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg
index cd95e1de84..bedfab2a8f 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg
@@ -42,7 +42,7 @@ $symbol = '\le';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg
index ab1626dcf1..9e179401c5 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg
@@ -42,7 +42,7 @@ $symbol = '\ge';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg
index db5bba7a51..6c31cdd7f9 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg
@@ -42,7 +42,7 @@ $symbol = '<';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg
index 0fe9f45352..0afc0e147e 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg
@@ -42,7 +42,7 @@ $symbol = '>';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg
index 4604ba9ecf..adfd1c1231 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg
@@ -42,7 +42,7 @@ $symbol = '\leq';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg
index 25572dc12e..194bdee18a 100644
--- a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg
@@ -42,7 +42,7 @@ $symbol = '<';
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
#Create a hash and its inverse that randomizes the order of the four graphs.
%scramble = ();
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMXPlusB.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMXPlusB.pg
new file mode 100644
index 0000000000..0f0f08d0f3
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMXPlusB.pg
@@ -0,0 +1,78 @@
+# Plot four points with a simple linear relation.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+my $m = list_random(-4..-2,2..4);
+my $b = non_zero_random(-7,7,1);
+$f = Formula("$m x+$b")->reduce;
+
+@xs = num_sort(-8,8,int((-8-$b)/$m),int((8-$b)/$m));
+$minx = $xs[1];
+$maxx = $xs[2];
+$n = $maxx - $minx + 1;
+
+@point = map {Point($_,$f->eval(x=>$_))} ($minx..$maxx);
+$points = '{point,'.join('},{point,',@point).'}';
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $extra = 0;
+ my $distinct = 0;
+ my @errors;
+ my $count = 0;
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) ne 'point' || ($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The $nth plotted point is incorrect.");
+ $extra++;
+ next STUDENTS;
+ }
+ for my $i (0..($count-2)) {
+ next STUDENTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinct++;
+ }
+ push(@errors, "You've only plotted $distinct correct point".(($distinct > 1)?'s':'').".") if ($distinct > 0 && $distinct < $n);
+ return (scalar(@{$correct})*min($distinct,$n)/$n/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Graph as many points as fit in the given viewing window for the equation [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMinusXPlusB.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMinusXPlusB.pg
new file mode 100644
index 0000000000..94e5566e09
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotMinusXPlusB.pg
@@ -0,0 +1,73 @@
+# Plot four points with a simple linear relation.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+my $b = non_zero_random(-7,7,1);
+$f = Formula("-x+$b")->reduce;
+$minx = max(-8,$b-8);
+$maxx = min(8,$b+8);
+@point = map {Point($_,$f->eval(x=>$_))} ($minx..$maxx);
+$points = '{point,'.join('},{point,',@point).'}';
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $extra = 0;
+ my $distinct = 0;
+ my @errors;
+ my $count = 0;
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) ne 'point' || ($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The $nth plotted point is incorrect.");
+ $extra++;
+ next STUDENTS;
+ }
+ for my $i (0..($count-2)) {
+ next STUDENTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinct++;
+ }
+ push(@errors, "You've only plotted $distinct correct point".(($distinct > 1)?'s':'').".") if ($distinct > 0 && $distinct < 4);
+ return (scalar(@{$correct})*min($distinct,4)/4/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Graph at least four points for the equation [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotXSquaredMinusB.pg b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotXSquaredMinusB.pg
new file mode 100644
index 0000000000..181c547606
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PlotXSquaredMinusB.pg
@@ -0,0 +1,77 @@
+# Plot four points with a simple linear relation.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+$b = random(-6,-1,1);
+$f = Formula("x^2+$b")->reduce;
+
+@xs = num_sort(-8,8,int(sqrt(8-$b)),int(-sqrt(8-$b)));
+$minx = $xs[1];
+$maxx = $xs[2];
+$n = $maxx - $minx + 1;
+
+@point = map {Point($_,$f->eval(x=>$_))} ($minx..$maxx);
+$points = '{point,'.join('},{point,',@point).'}';
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $extra = 0;
+ my $distinct = 0;
+ my @errors;
+ my $count = 0;
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) ne 'point' || ($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The $nth plotted point is incorrect.");
+ $extra++;
+ next STUDENTS;
+ }
+ for my $i (0..($count-2)) {
+ next STUDENTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinct++;
+ }
+ push(@errors, "You've only plotted $distinct correct point".(($distinct > 1)?'s':'').".") if ($distinct > 0 && $distinct < $n);
+ return (scalar(@{$correct})*min($distinct,$n)/$n/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Graph as many points as fit in the given viewing window for the equation [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula100.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula100.pg
index 234d8d4ba1..d768bfaaa1 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula100.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula100.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->flags->set(reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula50.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula50.pg
index 79f4c5f32e..6729edccef 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula50.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula50.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula60.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula60.pg
index c5aee3f6a4..f763d76320 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula60.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula60.pg
@@ -100,7 +100,7 @@ $areaU = NumberWithUnits("$area ft^2");
$text = "a triangle with one side parallel to the ground; this side is marked as h; the height is marked as h";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula70.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula70.pg
index 6f66ee40ec..bea0a41151 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula70.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula70.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula80.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula80.pg
index 53a52f214b..4255c7691c 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula80.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula80.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
$xmin = 0; #The viewing window
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula90.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula90.pg
index aee32dd60f..c6786dda0a 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula90.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormula90.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
diff --git a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg
index 73d6a4b666..70ad243b9c 100644
--- a/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg
@@ -41,7 +41,7 @@ loadMacros(
########Begin Problem Setup############
-$refreshCachedImages = 1;
+
Context("Currency");
#Create some random integers.
diff --git a/Contrib/PCC/BasicAlgebra/Exponents/exponentsMultiplication55.pg b/Contrib/PCC/BasicAlgebra/Exponents/exponentsMultiplication55.pg
index 4e7d9485c1..a698c1c0d3 100644
--- a/Contrib/PCC/BasicAlgebra/Exponents/exponentsMultiplication55.pg
+++ b/Contrib/PCC/BasicAlgebra/Exponents/exponentsMultiplication55.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2017-11-29T13:56:31-08:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1()
-## EditionText1()
-## AuthorText1()
-## Section1(not reported)
-## Problem1(6.1.6)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -38,7 +18,6 @@ loadMacros(
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
diff --git a/Contrib/PCC/BasicAlgebra/Factoring/factoring120.pg b/Contrib/PCC/BasicAlgebra/Factoring/factoring120.pg
index fbc258d7be..594bf5b162 100644
--- a/Contrib/PCC/BasicAlgebra/Factoring/factoring120.pg
+++ b/Contrib/PCC/BasicAlgebra/Factoring/factoring120.pg
@@ -56,7 +56,7 @@ $a = random(2,10,1);
$b = random(2,10,1);
$c = $b;
$c = random(2,10,1)*random(-1,1,2) while(gcd($b,$c)!=1);
-$m = random(2,10,1);
+do {$m = random(2,10,1)} until ($a != 8 || $m % 3 != 0);
$question = Formula("$a$var^$m($b$var+$c)+$b$var+$c")->reduce;
$ans = Formula("($a$var^$m+1)*($b$var+$c)")->reduce;
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/Factoring/factoring165.pg b/Contrib/PCC/BasicAlgebra/Factoring/factoring165.pg
index 3ec5917977..2390c82135 100644
--- a/Contrib/PCC/BasicAlgebra/Factoring/factoring165.pg
+++ b/Contrib/PCC/BasicAlgebra/Factoring/factoring165.pg
@@ -118,7 +118,7 @@ $picture->fillRegion([
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
BEGIN_PGML
The square below has side [`[$a]x`]. Find the area
diff --git a/Contrib/PCC/BasicAlgebra/Factoring/factoring380.pg b/Contrib/PCC/BasicAlgebra/Factoring/factoring380.pg
index 35134daa55..77314e680c 100644
--- a/Contrib/PCC/BasicAlgebra/Factoring/factoring380.pg
+++ b/Contrib/PCC/BasicAlgebra/Factoring/factoring380.pg
@@ -61,14 +61,12 @@ $a = 1;
$b = 100;
$c = 1;
$d = 1;
-# this next condition ensures the numbers don't get too big
-while(abs($d*$b+$d*$a*$c)+abs($d*$b*$c)>50)
-{
+do {
$a = 1;
$b = random(1,10,1)*random(-1,1,2);
$c = random(1,10,1)*abs($b)/$b*-1;
$d = random(2,10,1);
-}
+} until (abs($d*$b+$d*$a*$c)+abs($d*$b*$c) <= 50 && $b+$a*$c != 0);
$leading = $a;
$middle = $b+$a*$c;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction130.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction130.pg
index cdaf62977a..4802cce47c 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction130.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction130.pg
@@ -56,9 +56,9 @@ $answer2 = Fraction($n,$d);
$fractioncubed = $answer2 * $answer2 * $answer2;
Context("LimitedNumeric");
-Context()->strings->add("undefined"=>{},
- "none"=>{alias=>'no real solutions'},
- );
+#Context()->strings->add("undefined"=>{},
+ # "none"=>{alias=>'no real solutions'},
+ #);
$answer1 = Compute($answer1);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction85.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction85.pg
index 525abf4422..634860f19c 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction85.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction85.pg
@@ -44,7 +44,6 @@ $fname = RandomVariableName(type=>function);
Context("Numeric");
Context()->strings->add("undefined"=>{},
- "none"=>{alias=>'no real solutions'},
);
$y1 = non_zero_random(-10,10,1);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition67.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition67.pg
index 33a7eac52c..f61cec1ea2 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition67.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition67.pg
@@ -52,7 +52,7 @@ Context()->operators->set(
'u-' => {class => 'bizarro::UOP::minus', isCommand => 1},
);
-$ans1 = Formula("-$a*x-$b")->reduce;
+$ans1 = Compute("-$a*x-$b")->reduce;
$evaluator1 = $ans1->cmp(
checker=>sub{
my ( $correct, $student, $ansHash ) = @_;
@@ -66,7 +66,7 @@ $evaluator1 = $ans1->cmp(
return $OK;
});
-$ans2 = Formula("-$a*x+$b")->reduce;
+$ans2 = Compute("-$a*x+$b")->reduce;
$evaluator2 = $ans2->cmp(
checker=>sub{
my ( $correct, $student, $ansHash ) = @_;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition68.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition68.pg
index 20df4ee5a2..ee0c9e73ea 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition68.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition68.pg
@@ -42,7 +42,7 @@ $a = random(2,5,1)*random(-1,1,2);
$b = random(2,5,1)*random(-1,1,2);
Context("Numeric");
-Context()->noreduce('(-x)-y','(-x)+y', 'x-(-y)');
+Context()->noreduce('(-x)-y','(-x)+y');
Context()->operators->set(
'*' => {class => 'bizarro::BOP::multiply', isCommand => 1},
@@ -51,9 +51,9 @@ Context()->operators->set(
'u-' => {class => 'bizarro::UOP::minus', isCommand => 1},
);
-$f = Formula("$a*x**2+$b*x")->reduce;
+$f = Compute("$a*x**2+$b*x")->reduce;
-$ans1 = Formula("-$a*x**2-$b*x")->reduce;
+$ans1 = Compute("-$a*x**2-$b*x")->reduce;
$evaluator1 = $ans1->cmp(
checker=>sub{
my ( $correct, $student, $ansHash ) = @_;
@@ -67,7 +67,7 @@ $evaluator1 = $ans1->cmp(
return $OK;
});
-$ans2 = Formula("$a*x**2-$b*x")->reduce;
+$ans2 = Compute("$a*x**2-$b*x")->reduce;
$evaluator2 = $ans2->cmp(
checker=>sub{
my ( $correct, $student, $ansHash ) = @_;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg
index e62b505718..fee9db776d 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg
@@ -32,6 +32,9 @@ loadMacros(
"PGML.pl",
"PCCmacros.pl",
"PCCgraphMacros.pl",
+ "PGchoicemacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -39,7 +42,7 @@ loadMacros(
TEXT(beginproblem());
Context("Interval");
-$refreshCachedImages=1;
+
#Decide the number of points in the graph.
$numPoints = 3;
@@ -55,9 +58,13 @@ for my $i (0..$numPoints-1) {
}
#Intentionally create a duplicate y value in two points.
+#But make sure x-values are separated by at least 3 so labels do not overlap
$dup0 = random(0,$numPoints-1);
do {$dup1=random(0,$numPoints-1);} until ($dup0!=$dup1);
$py[$dup0]=$py[$dup1];
+if (abs($px[$dup0] - $px[$dup1]) < 3) {
+ ($px[$dup0],$px[$dup1]) = (-8..8)[NchooseK(17,2)];
+}
#Duplicated y-value should have a corresponding x-value that is at least 2 away form the other x-value, to avoid coordinates crowding in image.
while (abs($px[$dup0] - $px[$dup1]) < 2)
@@ -85,31 +92,26 @@ for my $i (0..$numPoints-1) {
@yticks = @$yticks_ref;
$ALTPoints="";
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- for my $j (0..$numPoints-1) {
- $gr[$i]->stamps( closed_circle($px[$j],$py[$j],'blue') );
- $gr[$i]->lb( new Label($px[$j],$py[$j]-$sign*$marksep[1]/8, "($px[$j],$py[$j])", 'blue','center','top','large'));
- $ALTPoints .= "($px[$j],$py[$j]), ";
- }
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[soliddot] coordinates {($px[0],$py[0]) ($px[1],$py[1]) ($px[2],$py[2])};
+\end{axis}
+END_TIKZ
+
+for my $j (0,1,2) {
+ $ALTPoints .= "($px[$j],$py[$j]), "
}
$ALTPoints =~ s/, $//;
@@ -126,10 +128,10 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
-[@KeyboardInstructions('To write an answer using set notation, write the elements between braces (the [`\{`] symbol and the [`\}`] symbol).')@]**
+[@KeyboardInstructions('To write an answer using set notation, write the elements between braces (for example [|{1,2,4}|]*).')@]**
This function has domain [______________]{$domain} and range [______________]{$range}.
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg
index f49ecca520..2a08b2a386 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg
@@ -31,6 +31,9 @@ loadMacros(
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
@@ -39,7 +42,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$m = non_zero_random(-3,3,1);
$b = random(-4,4,1);
@@ -93,32 +96,28 @@ if ($m>0) {
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- if ($m>0) {$pos1 = 'top'; $pos2 = 'bottom'; $sign = -1;}
- else {$pos1 = 'bottom'; $pos2 = 'top'; $sign = 1;}
- $gr[$i]->lb( new Label($domainLowX,$domainLowY+$sign*$marksep[1]/8,"($domainLowX,$domainLowY)", 'blue','center',$pos1,'large'));
- $gr[$i]->lb( new Label($domainHighX,$domainHighY-$sign*$marksep[1]/8,"($domainHighX,$domainHighY)", 'blue','center',$pos2,'large'));
-}
+$left = ($leftOpen==1) ? 'hollowdot' : 'soliddot';
+$right = ($rightOpen==1) ? 'hollowdot' : 'soliddot';
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+[-] coordinates {($domainLowX,$domainLowY) ($domainHighX,$domainHighY)};
+ \addplot[$left] coordinates {($domainLowX,$domainLowY)} node[below left] {\(($domainLowX,$domainLowY)\)};
+ \addplot[$right] coordinates {($domainHighX,$domainHighY)} node[below right] {\(($domainHighX,$domainHighY)\)};
+\end{axis}
+END_TIKZ
+
$ALT = "graph of a linear segment from ($domainLowX,$domainLowY) to ($domainHighX,$domainHighY), with the point ($domainLowX,$domainLowY) $leftOpenClose and the point ($domainHighX,$domainHighY) $rightOpenClose";
@@ -127,22 +126,17 @@ Context("Interval");
if (($leftOpen==1) && ($rightOpen==1)) {
$intDomain = Compute("($domainLowX,$domainHighX)");
$intRange = Compute("($rangeLowY,$rangeHighY)");
- add_functions($gr[0], "$m*x+$b for x in ($domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==0) && ($rightOpen==1)) {
$intDomain = Compute("[$domainLowX,$domainHighX)");
$intRange = $m>0 ? Compute("[$rangeLowY,$rangeHighY)") : Compute("($rangeLowY,$rangeHighY]");
- add_functions($gr[0], "$m*x+$b for x in [$domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==1) && ($rightOpen==0)) {
$intDomain = Compute("($domainLowX,$domainHighX]");
$intRange = $m>0 ? Compute("($rangeLowY,$rangeHighY]") : Compute("[$rangeLowY,$rangeHighY)");
- add_functions($gr[0], "$m*x+$b for x in ($domainLowX,$domainHighX] using color:blue and weight:1");
} else {
$intDomain = Compute("[$domainLowX,$domainHighX]");
$intRange = Compute("[$rangeLowY,$rangeHighY]");
- add_functions($gr[0], "$m*x+$b for x in [$domainLowX,$domainHighX] using color:blue and weight:1");
}
-
##############################################
Context("LimitedNumeric");
BEGIN_PGML
@@ -152,7 +146,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
[@KeyboardInstructions('Use interval notation.')@]**
@@ -164,23 +158,14 @@ END_PGML
BEGIN_PGML_SOLUTION
-First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output.
-
-The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain.
-
-The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
+First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output. The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain. The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
Any [`x`]-value in between [`[$domainLowX]`] and [`[$domainHighX]`] is a valid input. So the domain of the function is [`[$intDomain]`].
-----
-
-Next, let's find the range of this function. A function's range is the collection of possible outputs. These are the [`y`]-values of all of the points that we see shaded on the segment.
-
-The end-point at the bottom is [`([$rangeLowX],[$rangeLowY])`]. This point is [$bottomOpenClose], so the value [`[$rangeLowY]`] is [$bottomInclusive] in the range.
-The end-point on the top is [`([$rangeHighX],[$rangeHighY])`]. This point is [$topOpenClose], so the value [`[$rangeHighY]`] is [$topInclusive] in the range.
+Next, let's find the range of this function. A function's range is the collection of possible outputs. These are the [`y`]-values of all of the points that we see shaded on the segment. The end-point at the bottom is [`([$rangeLowX],[$rangeLowY])`]. This point is [$bottomOpenClose], so the value [`[$rangeLowY]`] is [$bottomInclusive] in the range. The end-point on the top is [`([$rangeHighX],[$rangeHighY])`]. This point is [$topOpenClose], so the value [`[$rangeHighY]`] is [$topInclusive] in the range.
-Every [`y`] value between [`[$rangeLowY]`] and [`[$rangeHighY]`] is a possible output, so the range of the function is [`[$intRange]`].
+Every [`y`]-value between [`[$rangeLowY]`] and [`[$rangeHighY]`] is a possible output, so the range of the function is [`[$intRange]`].
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg
index 294e2d9c1d..9e94021a3e 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg
@@ -31,6 +31,9 @@ loadMacros(
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
@@ -39,7 +42,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$m = 0;
$b = non_zero_random(-4,4,1);
@@ -84,30 +87,30 @@ if ($rightOpen) {
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
- $pos1 = 'bottom'; $pos2 = 'bottom'; $sign = 1;
- $gr[$i]->lb( new Label($domainLowX,$domainLowY+$sign*$marksep[1]/8,"($domainLowX,$domainLowY)", 'blue','center',$pos1,'large'));
- $gr[$i]->lb( new Label($domainHighX,$domainHighY+$sign*$marksep[1]/8,"($domainHighX,$domainHighY)", 'blue','center',$pos2,'large'));
-}
+$left = ($leftOpen==1) ? 'hollowdot' : 'soliddot';
+$right = ($rightOpen==1) ? 'hollowdot' : 'soliddot';
+
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+[-] coordinates {($domainLowX,$domainLowY) ($domainHighX,$domainHighY)};
+ \addplot[$left] coordinates {($domainLowX,$domainLowY)} node[below left] {\(($domainLowX,$domainLowY)\)};
+ \addplot[$right] coordinates {($domainHighX,$domainHighY)} node[below right] {\(($domainHighX,$domainHighY)\)};
+\end{axis}
+END_TIKZ
+
+
$ALT = "graph of a linear segment from ($domainLowX,$domainLowY) to ($domainHighX,$domainHighY), with the point ($domainLowX,$domainLowY) $leftOpenClose and the point ($domainHighX,$domainHighY) $rightOpenClose";
@@ -117,16 +120,12 @@ $intRange = Set($domainLowY);
if (($leftOpen==1) && ($rightOpen==1)) {
$intDomain = Compute("($domainLowX,$domainHighX)");
- add_functions($gr[0], "$m*x+$b for x in ($domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==0) && ($rightOpen==1)) {
$intDomain = Compute("[$domainLowX,$domainHighX)");
- add_functions($gr[0], "$m*x+$b for x in [$domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==1) && ($rightOpen==0)) {
$intDomain = Compute("($domainLowX,$domainHighX]");
- add_functions($gr[0], "$m*x+$b for x in ($domainLowX,$domainHighX] using color:blue and weight:1");
} else {
$intDomain = Compute("[$domainLowX,$domainHighX]");
- add_functions($gr[0], "$m*x+$b for x in [$domainLowX,$domainHighX] using color:blue and weight:1");
}
@@ -138,7 +137,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
[@KeyboardInstructions('Use interval notation or set notation.')@]**
@@ -150,15 +149,10 @@ END_PGML
BEGIN_PGML_SOLUTION
-First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output.
-
-The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain.
-
-The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
+First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output. The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain. The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
Any [`x`]-value in between [`[$domainLowX]`] and [`[$domainHighX]`] is a valid input. So the domain of the function is [`[$intDomain]`].
-----
Next, let's find the range of this function. A function's range is the collection of possible outputs. These are the [`y`]-values of all of the points that we see shaded on the segment.
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
index 083a725c5e..4eba97a560 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
@@ -26,11 +26,13 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PCCgraphMacros.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
@@ -39,7 +41,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$a = random(-1,1,2);
$h = random(-2,2,1);
@@ -91,37 +93,31 @@ if ($a>0) {
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$domainLowX,$domainHighX],[$rangeLowY,$rangeHighY,$k]);
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
- $gr = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$max[1],'y','black','left','top','large'));
+$left = ($leftOpen==1) ? 'hollowdot' : 'soliddot';
+$right = ($rightOpen==1) ? 'hollowdot' : 'soliddot';
- if ($a>0) {$pos1 = 'top'; $pos2 = 'bottom'; $sign = 1;}
- else {$pos1 = 'bottom'; $pos2 = 'top'; $sign = -1;}
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+[-,domain=$domainLowX:$domainHighX] {$a*(x-$h)^2+$k};
+ \addplot[soliddot] coordinates {($h,$k)} node[above] {\(($h,$k)\)};
+ \addplot[$left] coordinates {($domainLowX,$domainLowY)} node[below left] {\(($domainLowX,$domainLowY)\)};
+ \addplot[$right] coordinates {($domainHighX,$domainHighY)} node[below right] {\(($domainHighX,$domainHighY)\)};
+\end{axis}
+END_TIKZ
- $gr->stamps( closed_circle($h,$k,'blue') );
- $gr->lb( new Label($h,$k-$sign*$marksep[1]/8,"($h,$k)", 'blue','center',$pos1,'large'));
- $gr->lb( new Label($domainLowX,$domainLowY+$sign*$marksep[1]/8,"($domainLowX,$domainLowY)", 'blue','center',$pos2,'large'));
- $gr->lb( new Label($domainHighX,$domainHighY+$sign*$marksep[1]/8,"($domainHighX,$domainHighY)", 'blue','center',$pos2,'large'));
$upDown = ($a < 0) ? 'up' : 'down';
$downUp = ($a < 0) ? 'down' : 'up';
@@ -134,7 +130,6 @@ if (($leftOpen==1) && ($rightOpen==1)) {
$intDomain = Compute("($domainLowX,$domainHighX)");
if ($a>0) {$intRange = Compute("[$k,$rangeHighY)");}
else {$intRange = Compute("($rangeLowY,$k]");}
- add_functions($gr, "$a*(x-$h)**2+$k for x in ($domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==0) && ($rightOpen==1)) {
$intDomain = Compute("[$domainLowX,$domainHighX)");
@@ -147,7 +142,6 @@ if (($leftOpen==1) && ($rightOpen==1)) {
if (($a<0)&&($domainLowY<$domainHighY)) {
$intRange = Compute("[$rangeLowY,$k]");}
- add_functions($gr, "$a*(x-$h)**2+$k for x in [$domainLowX,$domainHighX) using color:blue and weight:1");
} elsif (($leftOpen==1) && ($rightOpen==0)) {
$intDomain = Compute("($domainLowX,$domainHighX]");
@@ -160,12 +154,10 @@ if (($leftOpen==1) && ($rightOpen==1)) {
if (($a<0)&&($domainLowY<$domainHighY)) {
$intRange = Compute("($rangeLowY,$k]");}
- add_functions($gr, "$a*(x-$h)**2+$k for x in ($domainLowX,$domainHighX] using color:blue and weight:1");
} else {
$intDomain = Compute("[$domainLowX,$domainHighX]");
if ($a>0) {$intRange = Compute("[$k,$rangeHighY]");}
else {$intRange = Compute("[$rangeLowY,$k]");}
- add_functions($gr, "$a*(x-$h)**2+$k for x in [$domainLowX,$domainHighX] using color:blue and weight:1");
}
@@ -178,7 +170,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
[@KeyboardInstructions('Use interval notation.')@]**
@@ -216,21 +208,12 @@ END_PGML_SOLUTION
BEGIN_PGML_SOLUTION
-First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output.
-
-The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain.
-
-The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
+First, let's find the domain of this function. A function's domain is the collection of all its valid inputs. These are the [`x`] values for which we could use the graph to find an output. The end-point on the left side is [`([$domainLowX],[$domainLowY])`]. This point is [$leftOpenClose], so the value [`[$domainLowX]`] is [$leftInclusive] in the domain. The end-point on the right side is [`([$domainHighX],[$domainHighY])`]. This point is [$rightOpenClose], so the value [`[$domainHighX]`] is [$rightInclusive] in the domain.
Any [`x`]-value in between [`[$domainLowX]`] and [`[$domainHighX]`] is a valid input. So the domain of the function is [`[$intDomain]`].
-----
-
-Next, let's find the range of this function. A function's range is the collection of possible outputs. These are the [`y`]-values of all of the points that we see shaded on the segment.
-
-The end-point at the bottom is [`([$rangeLowX],[$rangeLowY])`]. This point is [$bottomOpenClose], so the value [`[$rangeLowY]`] is [$bottomInclusive] in the range.
-The end-point on the top is the parabola's vertex [`([$h],[$k])`]. The value [`[$k]`] is included in the range.
+Next, let's find the range of this function. A function's range is the collection of possible outputs. These are the [`y`]-values of all of the points that we see shaded on the segment. The end-point at the bottom is [`([$rangeLowX],[$rangeLowY])`]. This point is [$bottomOpenClose], so the value [`[$rangeLowY]`] is [$bottomInclusive] in the range. The end-point on the top is the parabola's vertex [`([$h],[$k])`]. The value [`[$k]`] is included in the range.
So the range of the function is [`[$intRange]`].
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg
index 43da234653..e9ddfc75d7 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg
@@ -26,12 +26,13 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -40,7 +41,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$xAsymptote = random(-3,3,1);
$yAsymptote = random(-3,3,1);
@@ -52,48 +53,29 @@ $func = Compute("$k/(x-$xAsymptote)+$yAsymptote")->reduce;
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
- $gr[$i]->moveTo($xAsymptote,$min[0]);
- $gr[$i]->lineTo($xAsymptote,$max[0],'red',2,'dashed');
-
- $gr[$i]->moveTo($min[1],$yAsymptote);
- $gr[$i]->lineTo($max[1],$yAsymptote,'red',2,'dashed');
-
$xplot1= ($k < 1) ? $k/($max[1]-$yAsymptote)+$xAsymptote : $k/($min[1]-$yAsymptote)+$xAsymptote;
$xplot2= ($k < 1) ? $k/($min[1]-$yAsymptote)+$xAsymptote : $k/($max[1]-$yAsymptote)+$xAsymptote;
- add_functions($gr[$i], "$func for x in <$min[0],$xplot1> using color:blue and weight:1");
- add_functions($gr[$i], "$func for x in <$xplot2,$max[0]> using color:blue and weight:1");
-}
- $gr[$i]->moveTo($xplot1-0.1,$func->eval(x=>"$xplot1-0.1"));
- $gr[$i]->arrowTo($xplot1,$func->eval(x=>"$xplot1"),'blue',1);
- $gr[$i]->moveTo($xplot2+0.1,$func->eval(x=>"$xplot2+0.1"));
- $gr[$i]->arrowTo($xplot2,$func->eval(x=>"$xplot2"),'blue',1);
- $gr[$i]->moveTo($min[0]+0.1,$func->eval(x=>"$min[0]+0.1"));
- $gr[$i]->arrowTo($min[0],$func->eval(x=>"$min[0]"),'blue',1);
- $gr[$i]->moveTo($max[0]-0.1,$func->eval(x=>"$max[0]-0.1"));
- $gr[$i]->arrowTo($max[0],$func->eval(x=>"$max[0]"),'blue',1);
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot[firstcurve,domain=$min[0]:$xplot1,samples=50] {$k/(x-$xAsymptote)+$yAsymptote};
+ \addplot[firstcurve,domain=$xplot2:$max[0],samples=50] {$k/(x-$xAsymptote)+$yAsymptote};
+ \addplot[asymptote] coordinates {($xAsymptote,$min[0]) ($xAsymptote,$max[0])};
+ \addplot[asymptote] coordinates {($min[1],$yAsymptote) ($max[1],$yAsymptote)};
+\end{axis}
+END_TIKZ
+
if ($k>0) {
@@ -116,7 +98,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
[@KeyboardInstructions('Use interval notation.')@]**
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg
index 7ba06a7ad9..f8bc50caef 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg
@@ -40,7 +40,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$xAsymptote = random(-3,3,1);
$yAsymptote = random(-3,3,1);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg
index 604d26214b..4be5859a4d 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg
@@ -28,10 +28,11 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "PGgraphmacros.pl",
"PGML.pl",
"PCCmacros.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -65,33 +66,22 @@ $ymin = min(-5,$y[2]-2);
$ymax = $y[1]+4;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-
- $gr->lb('reset');
- for my $j ($xmin+1..$xmax-1) {
- if ($j % 2 == 1 or $j == 0) {next;}
- $gr->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j ($ymin+1..$ymax-1) {
- if ($j % 2 == 1 or $j == 0) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($xmax,0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$ymax,'y','black','left','top','large'));
-
-
-$gr->moveTo($x[0],$y[0]);
-$gr->arrowTo($xmin+1,$ymax,'blue','1');
-$gr->moveTo($x[0],$y[0],);
-$gr->lineTo($x[1],$y[1],'blue','1');
-$gr->lineTo($x[2],$y[2],'blue','1');
-$gr->arrowTo($xmax-0.5,$ymax,'blue','1');
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+ coordinates {($xmin+1,$ymax) ($x[0],$y[0]) ($x[1],$y[1]) ($x[2],$y[2]) ($xmax-0.5,$ymax)};
+\end{axis}
+END_TIKZ
$ALT = "a graph of a curve resembling the letter W, except that arrows indicate the arms of the W extend forever up and to the left, and up and to the right; the corners of the W are at ($x[0],$y[0]), ($x[1],$y[1]), and ($x[2],$y[2])";
@@ -102,7 +92,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
[@KeyboardInstructions('If you need to enter [`\infty`], you can type [|inf|]* or [|infinity|]*. If you need to union two (or more) intervals, use the capital letter [|U|]*. For example, to enter [`(-\infty,5)\cup(5,10]`] you can type [|(-inf,5)U(5,10]|]*.')@]**
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg
index 3e22d03e62..8d792ddeb5 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg
index f9a4a8d215..0a7ad97a9c 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext70.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext70.pg
index 0fbaaa0603..5dbde1b5aa 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext70.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext70.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation10.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation10.pg
index db56217a57..f7fe3e9f37 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation10.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation10.pg
@@ -69,7 +69,7 @@ BEGIN_PGML
Solve for [`x`], where [`[$fname](x)=[$func]`].
-[@KeyboardInstructions('If there is no real solution, type no [|real solution|]*.')@]**
+[@KeyboardInstructions('If there is no real solution, type [|no real solution|]*.')@]**
a. [`[$fname](x)=[$y1]`]
[____________]{$ans1}
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation20.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation20.pg
index d5d9cf16c2..7e86309506 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation20.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation20.pg
@@ -58,7 +58,7 @@ BEGIN_PGML
Solve for [`x`], where [`[$fname](x)=[$func]`].
-[@KeyboardInstructions('If there is no real solution, type no [|real solution|]*.')@]**
+[@KeyboardInstructions('If there is no real solution, type [|no real solution|]*.')@]**
a. [`[$fname](x)=[$y1]`]
[____________]{$ans1}
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation30.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation30.pg
index bc43a4a2d1..e2ccdbed36 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation30.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionEquation30.pg
@@ -73,7 +73,7 @@ BEGIN_PGML
Solve for [`x`], where [`[$fname](x)=[$func]`].
-[@KeyboardInstructions('If there is no real solution, type no [|real solution|]*.')@]**
+[@KeyboardInstructions('If there is no real solution, type [|no real solution|]*.')@]**
[`[$fname](x)=[$y1]`]
[____________]{$ans}
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionInContext20.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionInContext20.pg
index 3f61a292fe..b58b85a032 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionInContext20.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionInContext20.pg
@@ -87,10 +87,12 @@ for my $i (0..3) {
$correctAns = $answersShuffled[$inverse[0]];
$radio = RadioButtons(
-[[ "Each pass costs ".math_ev3($x1C).", and it works for ".math_ev3($y1)." days.",
+[[
+ "If a pass costs ".math_ev3($x1C).", it will work for ".math_ev3($y1)." days.",
+ "Each pass costs ".math_ev3($x1C).", and it works for ".math_ev3($y1)." days.",
"Each pass costs ".math_ev3($y1C).", and it works for ".math_ev3($x1)." days.",
"If a pass costs ".math_ev3($y1C).", it will work for ".math_ev3($x1)." days.",
- "If a pass costs ".math_ev3($x1C).", it will work for ".math_ev3($y1)." days.",]],
+]],
0,
labels => "ABC",
);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg
index 9bf847c9c1..cd60e88969 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg
@@ -26,12 +26,14 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
"parserPopUp.pl",
+ "PGtikz.pl",
+ "PCCmacros.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -39,7 +41,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
#Decide the number of points in the graph.
$numPoints = 3;
@@ -92,32 +94,90 @@ for my $i (2..3) {
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
+
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[soliddot] coordinates {($px[0][0],$py[0][0]) ($px[0][1],$py[0][1]) ($px[0][2],$py[0][2])};
+\end{axis}
+END_TIKZ
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[soliddot] coordinates {($px[1][0],$py[1][0]) ($px[1][1],$py[1][1]) ($px[1][2],$py[1][2])};
+\end{axis}
+END_TIKZ
+
+$gr[2] = createTikZImage();
+$gr[2]->addToPreamble(latexImagePreamble());
+$gr[2]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[soliddot] coordinates {($px[2][0],$py[2][0]) ($px[2][1],$py[2][1]) ($px[2][2],$py[2][2])};
+ \addplot[verticallinetest] coordinates {($px[2][0],$min[1]) ($px[2][0],$max[1])};
+ \addplot[verticallinetest] coordinates {($px[2][1],$min[1]) ($px[2][1],$max[1])};
+ \addplot[verticallinetest] coordinates {($px[2][2],$min[1]) ($px[2][2],$max[1])};
+\end{axis}
+END_TIKZ
+
+$gr[3] = createTikZImage();
+$gr[3]->addToPreamble(latexImagePreamble());
+$gr[3]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[soliddot] coordinates {($px[3][0],$py[3][0]) ($px[3][1],$py[3][1]) ($px[3][2],$py[3][2])};
+ \addplot[verticallinetest] coordinates {($px[3][0],$min[1]) ($px[3][0],$max[1])};
+ \addplot[verticallinetest] coordinates {($px[3][1],$min[1]) ($px[3][1],$max[1])};
+ \addplot[verticallinetest] coordinates {($px[3][2],$min[1]) ($px[3][2],$max[1])};
+\end{axis}
+END_TIKZ
+
+
+
+
@ALT=();
@ALTPoints=();
for my $i (0..3) {
$ALTPoints[$i]="";
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr[$i]->lb( new Label($max[0], 0, 'x','black','right','bottom','large'));
- $gr[$i]->lb( new Label(0, $max[1], 'y','black','left','top','large'));
for my $j (0..$numPoints-1) {
- $gr[$i]->stamps( closed_circle($px[$i][$j],$py[$i][$j],'blue') );
- $gr[$i]->lb( new Label($px[$i][$j],$py[$i][$j]-$sign*$marksep[1]/8, "($px[$i][$j],$py[$i][$j])", 'blue','center','top','large'));
$ALTPoints[$i] .= "($px[$i][$j],$py[$i][$j]), ";
}
@@ -140,7 +200,7 @@ Decide whether each graph shows a relationship where [`y`] is a function of [`x`
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image(insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]* <<
+>>[@image($gr[0], width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image($gr[1], width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]* <<
The first graph [__]{$popup[0]} give a function of [`x`]. The second graph [__]{$popup[1]} give a function of [`x`].
@@ -151,13 +211,6 @@ END_PGML
$showPartialCorrectAnswers = 0;
-for my $i (2..3) {
- for my $j (0..$numPoints-1) {
- $gr[$i]->moveTo($px[$i][$j],$min[1]);
- $gr[$i]->lineTo($px[$i][$j],$max[1],'red',2,'dashed');
- }
-}
-
#######################################################
$graph1Output1 = $isFunction[0] ? "passed" : "did not pass";
@@ -174,18 +227,14 @@ BEGIN_PGML_SOLUTION
If a graph shows a relationship where [`y`] is a function of [`x`], it has to pass the vertical line test.
-The first fraph [$graph1Output1] the test, and thus it [$graph1Output2] [`y`] as a function of [`x`].
+>> [@image($gr[2], width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image($gr[3], width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT3' title = '$ALT3'") @]* <<
->>### Graph 1 ### <<
+The first graph [$graph1Output1] the test, and thus it [$graph1Output2] [`y`] as a function of [`x`].
->>[@image(insertGraph($gr[2]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
The second graph [$graph2Output1] the test, and thus it [$graph2Output2] [`y`] as a function of [`x`].
->>### Graph 2 ### <<
-
->>[@image(insertGraph($gr[3]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT3' title = '$ALT3'") @]*<<
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg
index dd5054e315..c8a8c60f70 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg
@@ -32,6 +32,9 @@ loadMacros(
"PGML.pl",
"PCCgraphMacros.pl",
"parserPopUp.pl",
+ "PGtikz.pl",
+ "PCCmacros.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -39,7 +42,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
#Decide whether each graphs shows a function or non-function.
@@ -93,79 +96,79 @@ for my $i (2..3) {
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$h+1, $h-1,$b+1, $b-1],[$k+1, $k-1,$c, $c+1, $c-1],centerOrigin=>1);
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
-@gr=();
-
-for my $i (0..3) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
+if ($a > 0) {@top = (sqrt(($max[1]-$k)/$a)+$h, -sqrt(($max[1]-$k)/$a)+$h)}
+ else {@top = (sqrt(($min[1]-$k)/$a)+$h, -sqrt(($min[1]-$k)/$a)+$h)};
+if ($d > 0) {@right = (sqrt(($max[0]+$b)*$d)+$c, -sqrt(($max[0]+$b)*$d)+$c)}
+ else {@right = (sqrt(($min[0]+$b)*$d)+$c, -sqrt(($min[0]+$b)*$d)+$c)};
+
+
+@xvaluesfunc = num_sort($min[0],$max[0],@top);
+@yvaluesnonfunc = num_sort($min[1],$max[1],@right);
+
+for my $i (0,1) {
+
+$plot[$i] = ($isFunction[$i]) ? "\\addplot+[domain=$xvaluesfunc[1]:$xvaluesfunc[2]] {$a*(x-$h)^2+$k};" : "\\addplot+[domain=$yvaluesnonfunc[1]:$yvaluesnonfunc[2]] ({(x-$c)^2/$d-$b},{x});";
+$points[$i] = "\\addplot[soliddot] coordinates " . (($isFunction[$i]) ? "{($h,$k) ($h-1,$k+$a) ($h+1,$k+$a) ($h-2,$k+4*$a) ($h+2,$k+4*$a)}" : "{(-$b+1/$d,$c+1) (-$b+1/$d,$c-1) (-$b+4/$d,$c+2) (-$b+4/$d,$c-2) (-$b+9/$d,$c+3) (-$b+9/$d,$c-3)}") . ";";
+$guidelines[$i] = "\\addplot[verticallinetest] coordinates " . (($isFunction[$i]) ? "{($h-2,$min[1]) ($h-2,$max[1])}" : "{(-$b+1/$d,$min[1]) (-$b+1/$d,$max[1])}") . ";";
+$guidelines[$i] .= "\\addplot[verticallinetest] coordinates " . (($isFunction[$i]) ? "{($h-1,$min[1]) ($h-1,$max[1])}" : "{(-$b+4/$d,$min[1]) (-$b+4/$d,$max[1])}") . ";";
+$guidelines[$i] .= "\\addplot[verticallinetest] coordinates " . (($isFunction[$i]) ? "{($h,$min[1]) ($h,$max[1])}" : "{(-$b+9/$d,$min[1]) (-$b+9/$d,$max[1])}") . ";";
+$guidelines[$i] .= "\\addplot[verticallinetest] coordinates {($h,$min[1]) ($h,$max[1])};" if ($isFunction[$i]);
+$guidelines[$i] .= "\\addplot[verticallinetest] coordinates {($h+1,$min[1]) ($h+1,$max[1])};" if ($isFunction[$i]);
+$guidelines[$i] .= "\\addplot[verticallinetest] coordinates {($h+2,$min[1]) ($h+2,$max[1])};" if ($isFunction[$i]);
+
+$gr[$i] = createTikZImage();
+$gr[$i]->addToPreamble(latexImagePreamble());
+$gr[$i]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ $plot[$i]
+\end{axis}
+END_TIKZ
+
+
+$gr[$i+2] = createTikZImage();
+$gr[$i+2]->addToPreamble(latexImagePreamble());
+$gr[$i+2]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ $plot[$i]
+ $points[$i]
+ $guidelines[$i]
+\end{axis}
+END_TIKZ
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
- for my $j (0..1) {
- $fn[$i] = new Fun( $xfunc[$i], $yfunc[$i], $gr[$i] );
- $fn[$i] -> domain(0,6.28);
- $fn[$i] -> weight(1);
- }
+}
- $gr[$i]->lb( new Label($max[0], 0, 'x','black','right','bottom','large'));
- $gr[$i]->lb( new Label(0, $max[1], 'y','black','left','top','large'));
-
- if ($isFunction[$i]==1 and $a > 0) {
- @ends = num_sort($min[0],$max[0],sqrt(($max[1]-$k)/$a)+$h,-sqrt(($max[1]-$k)/$a)+$h);
- $start = $ends[1]; $stop = $ends[2];
- $pixel = ($max[0]-$min[0])/240;
- $gr[$i]->moveTo($start+2*$pixel,$a*($start+2*$pixel-$h)**2+$k);
- $gr[$i]->arrowTo($start,$a*($start-$h)**2+$k,'blue',1);
- $gr[$i]->moveTo($stop-2*$pixel,$a*($stop-2*$pixel-$h)**2+$k);
- $gr[$i]->arrowTo($stop,$a*($stop-$h)**2+$k,'blue',1);
- }
- elsif ($isFunction[$i]==1 and $a < 0) {
- @ends = num_sort($min[0],$max[0],sqrt(($min[1]-$k)/$a)+$h,-sqrt(($min[1]-$k)/$a)+$h);
- $start = $ends[1]; $stop = $ends[2];
- $pixel = ($max[0]-$min[0])/240;
- $gr[$i]->moveTo($start+2*$pixel,$a*($start+2*$pixel-$h)**2+$k);
- $gr[$i]->arrowTo($start,$a*($start-$h)**2+$k,'blue',1);
- $gr[$i]->moveTo($stop-2*$pixel,$a*($stop-2*$pixel-$h)**2+$k);
- $gr[$i]->arrowTo($stop,$a*($stop-$h)**2+$k,'blue',1);
- }
- elsif ($isFunction[$i]==0 and $d > 0) {
- @ends = num_sort($min[1],$max[1],sqrt(($max[0]+$b)*$d)+$c,-sqrt(($max[0]+$b)*$d)+$c);
- $start = $ends[1]; $stop = $ends[2];
- $pixel = ($max[1]-$min[1])/240;
- $gr[$i]->moveTo(($start+2*$pixel-$c)**2/$d-$b,$start+2*$pixel);
- $gr[$i]->arrowTo(($start-$c)**2/$d-$b,$start,'blue',1);
- $gr[$i]->moveTo(($stop-2*$pixel-$c)**2/$d-$b,$stop-2*$pixel);
- $gr[$i]->arrowTo(($stop-$c)**2/$d-$b,$stop,'blue',1);
- }
- elsif ($isFunction[$i]==0 and $d < 0) {
- @ends = num_sort($min[1],$max[1],sqrt(($min[0]+$b)*$d)+$c,-sqrt(($min[0]+$b)*$d)+$c);
- $start = $ends[1]; $stop = $ends[2];
- $pixel = ($max[1]-$min[1])/240;
- $gr[$i]->moveTo(($start+2*$pixel-$c)**2/$d-$b,$start+2*$pixel);
- $gr[$i]->arrowTo(($start-$c)**2/$d-$b,$start,'blue',1);
- $gr[$i]->moveTo(($stop-2*$pixel-$c)**2/$d-$b,$stop-2*$pixel);
- $gr[$i]->arrowTo(($stop-$c)**2/$d-$b,$stop,'blue',1);
- }
-}
$ALT0 = $ALT[0];
$ALT1 = $ALT[1];
+for my $i (2..3) {
+ if ($isFunction[$i-2]==1) {
+ $ALT[$i] .= " No vertical line crosses it more than once.";
+ } else {
+ $ALT[$i] .= " A vertical line crosses it at more than one point.";
+ }
+}
+
##############################################
BEGIN_PGML
@@ -174,7 +177,7 @@ The following graphs show two relationships. Decide whether each graph shows a r
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image(insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]* <<
+>>[@image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]* <<
The first graph [__]{$popup[0]} give a function of [`x`]. The second graph [__]{$popup[1]} give a function of [`x`].
@@ -186,26 +189,6 @@ $showPartialCorrectAnswers = 0;
#######################################################
-for my $i (2..3) {
- if ($isFunction[$i-2]==1) {
- for my $j (-1..1) {
- $gr[$i]->moveTo($h+$j,$min[1]);
- $gr[$i]->lineTo($h+$j,$max[1],'red',2,'dashed');
- $gr[$i]->stamps( closed_circle($h+$j,$functions[$i][1]->eval(x=>($h+$j)),'blue') );
- }
- $ALT[$i] .= " No vertical line crosses it more than once.";
- } else {
- $gr[$i]->moveTo(1/$d-$b,$min[1]);
- $gr[$i]->lineTo(1/$d-$b,$max[1],'red',2,'dashed');
- $x1 = 1/$d-$b;
- $y1 = $c+1;
- $gr[$i]->stamps( closed_circle($x1,$y1,'blue') );
- $x2 = 1/$d-$b;
- $y2 = $functions[$i][1]->eval(x=>$x2);
- $gr[$i]->stamps( closed_circle($x2,$y2,'blue') );
- $ALT[$i] .= " A vertical line crosses it at more than one point.";
- }
-}
$graph1Output1 = $isFunction[0] ? "passed" : "did not pass";
$graph2Output1 = $isFunction[1] ? "passed" : "did not pass";
@@ -221,18 +204,10 @@ BEGIN_PGML_SOLUTION
If a graph represents [`y`] as a function of [`x`], it has to pass the vertical line test.
-Graph 1 [$graph1Output1] the test, and thus it [$graph1Output2] [`y`] as a function of [`x`].
-
->>###Graph 1 ### <<
-
->>[@image(insertGraph($gr[2]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
-
-
-Graph 2 [$graph2Output1] the test, and thus it [$graph2Output2] [`y`] as a function of [`x`].
-
->>###Graph 2 ### <<
+>>[@image($gr[2], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@SPACE@]* [@image($gr[3], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT3' title = '$ALT3'") @]*<<
->>[@image(insertGraph($gr[3]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT3' title = '$ALT3'") @]*<<
+The first graph [$graph1Output1] the test, and thus it [$graph1Output2] [`y`] as a function of [`x`].
+The second graph [$graph2Output1] the test, and thus it [$graph2Output2] [`y`] as a function of [`x`].
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg
index 75fc9a9673..0496130baf 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg
@@ -40,7 +40,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
#parameters for graphs
$a = random(-6,-3,1);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg
index c858470b7e..85555ff252 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg
@@ -34,6 +34,8 @@ loadMacros(
"answerHints.pl",
"PCCmacros.pl",
"contextFiniteSolutionSets.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -44,7 +46,7 @@ TEXT(beginproblem());
Context("Numeric");
$var = "x";
-$refreshCachedImages=1;
+
Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
parser::Assignment->Allow;
@@ -116,33 +118,26 @@ $ansXDup1 = $ansXDups[1];
@yticks = @$yticks_ref;
$ALTPoints="";
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- for my $j (0..$numPoints-1) {
- $gr[$i]->stamps( closed_circle($px[$j],$py[$j],'blue') );
- $gr[$i]->lb( new Label($px[$j],$py[$j]-$sign*$marksep[1]/8, "($px[$j],$py[$j])", 'blue','center','top','large'));
- $ALTPoints .= "($px[$j],$py[$j]), ";
- }
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-}
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[soliddot] coordinates {($px[0],$py[0]) ($px[1],$py[1]) ($px[2],$py[2])};
+ \legend{\(y=f(x)\)};
+\end{axis}
+END_TIKZ
+
$ALTPoints =~ s/, $//;
$ALTPoints =~ s|(.+), |$1 and |;
@@ -171,7 +166,7 @@ Function [`f`] is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
a. Find [``f([$ansXNoDup])``].
[_]{Compute($ansYNoDup)}{10}
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
index e856d4cfb9..e4d4327a3a 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
@@ -32,7 +32,10 @@ loadMacros(
"PCCgraphMacros.pl",
"parserAssignment.pl",
"answerHints.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -43,7 +46,7 @@ TEXT(beginproblem());
Context("Numeric");
$var = "x";
-$refreshCachedImages=1;
+
Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
parser::Assignment->Allow;
@@ -85,50 +88,71 @@ $func = Compute("$m*x+$b")->reduce;
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..2) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- @xvalues = num_sort($min[0],$max[0],($min[1]-$b)/$m,($max[1]-$b)/$m);
- $midx = ($xvalues[1]+$xvalues[2])/2;
- $midy = $m*$midx+$b;
- $gr[$i]->moveTo($midx,$midy);
- $gr[$i]->arrowTo($xvalues[1],$m*$xvalues[1]+$b,'blue',1);
- $gr[$i]->moveTo($midx,$midy);
- $gr[$i]->arrowTo($xvalues[2],$m*$xvalues[2]+$b,'blue',1);
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-}
+@xvalues = num_sort($min[0],$max[0],($min[1]-$b)/$m,($max[1]-$b)/$m);
+
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+\end{axis}
+END_TIKZ
+
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+ \addplot[soliddot] coordinates {($p0x,$p0y)} node[right] {\(($p0x,$p0y)\)};
+ \addplot[asymptote] coordinates {($p0x,$min[1]) ($p0x,$max[1])};
+\end{axis}
+END_TIKZ
+
+
+$gr[2] = createTikZImage();
+$gr[2]->addToPreamble(latexImagePreamble());
+$gr[2]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+ \addplot[soliddot] coordinates {($p1x,$p1y)} node[below] {\(($p1x,$p1y)\)};
+ \addplot[asymptote] coordinates {($min[0],$p1y) ($max[0],$p1y)};
+\end{axis}
+END_TIKZ
-$ALT0 = "graph of a line passing through the points ($p0x,$p0y) and ($p1x,$p1y)";
-#the graph used in solution to find f(x)=?
-$gr[1]->stamps( closed_circle($p0x,$p0y,'red') );
-$gr[1]->lb( new Label($p0x+$marksep[1]/8,$p0y+$marksep[1]/8,"($p0x,$p0y)",'red','left','bottom','large'));
-$gr[1]->moveTo($p0x,$min[1]);
-$gr[1]->lineTo($p0x,$max[1],'red',2,'dashed');
+$ALT0 = "graph of a line passing through the points ($p0x,$p0y) and ($p1x,$p1y)";
$ALT1 = "This is the graph of a line passing through the points ($p0x,$p0y) and ($p1x,$p1y). A dashed vertical line x=$p0x crosses the line at ($p0x,$p0y).";
-
-#the graph used in solution to find f(?)=$p1y
-$gr[2]->stamps( closed_circle($p1x,$p1y,'red') );
-$gr[2]->lb( new Label($p1x,$p1y+$marksep[1]/8,"($p1x,$p1y)",'red','center','bottom','large'));
-$gr[2]->moveTo($min[0],$p1y);
-$gr[2]->lineTo($max[0],$p1y,'red',2,'dashed');
$ALT2 = "This is the graph of a line passing through the points ($p0x,$p0y) and ($p1x,$p1y). A dashed horizontal line y=$p1y crosses the line at ($p1x,$p1y).";
$xeqp1x = Compute("x=$p1x");
@@ -142,11 +166,9 @@ Function [`f`] is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
+>>[@image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
-[@KeyboardInstructions('If there is more than one answer to a question, you can use commas and the word [|or|]*. When solving an equation for the variable [`x`], your answer should be in the form [|x=___|]*.')@]**
-
-a. Find [``f([$p0x])={}``].
+a. Find [``f([$p0x])``].
[__________]
a. Solve [``f(x)=[$p1y]``].
@@ -158,47 +180,12 @@ END_PGML
$showPartialCorrectAnswers = 1;
ANS(Compute($p0y)->cmp);
-ANS($xeqp1x->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
+
+Context("FiniteSolutionSets");
+$solset = Formula("{$p1x}");
+
+ANS($solset->cmp());
+
##############################################
@@ -209,11 +196,11 @@ BEGIN_PGML_SOLUTION
To evaluate [`f([$p0x])`], we understand that we have been given an [`x`]-value of [`[$p0x]`]. On the graph, we draw a dotted vertical line at [`x=[$p0x]`], and it intersects the function's graph at [`([$p0x],[$p0y])`]. This implies [`f([$p0x])=[$p0y]`]. See the graph below.
->>[@image(insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]*<<
+>>[@image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]*<<
To solve [`f(x)=[$p1y]`], we understand that we have been given a [`y`]-value of [`[$p1y]`]. On the graph, we draw a dotted horizontal line at [`y=[$p1y]`], and it intersects the function's graph at [`([$p1x],[$p1y])`]. This implies [`f([$p1x])=[$p1y]`]. See the graph below.
->>[@image(insertGraph($gr[2]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
+>>[@image($gr[2], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg
index b76de9e1df..bd34250b66 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg
@@ -33,6 +33,9 @@ loadMacros(
"parserAssignment.pl",
"answerHints.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl",
);
@@ -43,7 +46,7 @@ TEXT(beginproblem());
Context("Numeric");
$var = "x";
-$refreshCachedImages=1;
+
Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
parser::Assignment->Allow;
@@ -95,58 +98,76 @@ $ansList = List($p1x,$p2x);
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..2) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- add_functions($gr[$i], "$a*(x-$b)**2+$c for x in [$min[0],$max[0]] using color:blue and weight:1");
-
- if ($a > 0)
- {@xvalues = num_sort($min[0], $max[0], sqrt(($max[0]-$c)/$a)+$b, -sqrt(($max[0]-$c)/$a)+$b)}
- else
- {@xvalues = num_sort($min[0], $max[0], sqrt(($min[0]-$c)/$a)+$b, -sqrt(($min[0]-$c)/$a)+$b)}
- $start = $xvalues[1];
- $stop = $xvalues[2];
- $pixel = ($max[0]-$min[0])/240;
- $gr[$i]->moveTo($start+$pixel, $a*($start+$pixel-$b)**2+$c);
- $gr[$i]->arrowTo($start,$a*($start-$b)**2+$c,'blue',1);
- $gr[$i]->moveTo($stop-$pixel, $a*($stop-$pixel-$b)**2+$c);
- $gr[$i]->arrowTo($stop,$a*($start-$b)**2+$c,'blue',1);
-
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-}
+if ($a > 0)
+ {@xvalues = num_sort($min[0], $max[0], sqrt(($max[0]-$c)/$a)+$b, -sqrt(($max[0]-$c)/$a)+$b)}
+else
+ {@xvalues = num_sort($min[0], $max[0], sqrt(($min[0]-$c)/$a)+$b, -sqrt(($min[0]-$c)/$a)+$b)}
+
+
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+\end{axis}
+END_TIKZ
+
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+ \addplot[soliddot] coordinates {($p0x,$p0y)} node[right] {\(($p0x,$p0y)\)};
+ \addplot[asymptote] coordinates {($p0x,$min[1]) ($p0x,$max[1])};
+\end{axis}
+END_TIKZ
+
+
+$gr[2] = createTikZImage();
+$gr[2]->addToPreamble(latexImagePreamble());
+$gr[2]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$xvalues[1]:$xvalues[2]] {$func};
+ \legend{\(y=f(x)\)};
+ \addplot[soliddot] coordinates {($p1x,$p1y)} node[below] {\(($p1x,$p1y)\)};
+ \addplot[soliddot] coordinates {($p2x,$p2y)} node[below] {\(($p2x,$p2y)\)};
+ \addplot[asymptote] coordinates {($min[0],$p1y) ($max[0],$p1y)};
+\end{axis}
+END_TIKZ
-$ALT0 = "graph of a parabola passing through the points ($p0x,$p0y), ($p1x,$p1y) and ($p2x,$p2y)";
-#the graph used in solution to find f(x)=?
-$gr[1]->stamps( closed_circle($p0x,$p0y,'red') );
-$gr[1]->lb( new Label($p0x+$marksep[1]/8,$p0y+$marksep[1]/8,"($p0x,$p0y)",'red','left','bottom','large'));
-$gr[1]->moveTo($p0x,$min[1]);
-$gr[1]->lineTo($p0x,$max[1],'red',2,'dashed');
+$ALT0 = "graph of a parabola passing through the points ($p0x,$p0y), ($p1x,$p1y) and ($p2x,$p2y)";
$ALT1 = "This is the graph of aparabola passing through the points ($p0x,$p0y), ($p1x,$p1y) and ($p2x,$p2y). A dashed vertical line x=$p0x intersects the parabola at ($p0x,$p0y).";
-
-#the graph used in solution to find f(?)=$p1y
-$gr[2]->stamps( closed_circle($p1x,$p1y,'red') );
-$gr[2]->lb( new Label($p1x,$p1y+$marksep[1]/8,"($p1x,$p1y)",'red','center','bottom','large'));
-$gr[2]->stamps( closed_circle($p2x,$p2y,'red') );
-$gr[2]->lb( new Label($p2x,$p2y+$marksep[1]/8,"($p2x,$p2y)",'red','center','bottom','large'));
-$gr[2]->moveTo($min[0],$p1y);
-$gr[2]->lineTo($max[0],$p1y,'red',2,'dashed');
$ALT2 = "This is the graph of a parabola passing through the points ($p0x,$p0y), ($p1x,$p1y) and ($p2x,$p2y). A dashed horizontal line y=$p1y intersects the parabola at ($p1x,$p1y) and ($p2x,$p2y).";
@@ -160,6 +181,9 @@ Context()->operators->set(","=>{string=>"or",TeX=>"or ",perl=>","});
$xeqansList = List(Formula("x=$p1x"),Formula("x=$p2x"));
+Context("FiniteSolutionSets");
+$solset = Formula("{$p1x,$p2x}");
+
##############################################
Context("LimitedNumeric");
BEGIN_PGML
@@ -169,15 +193,14 @@ Function [`f`] is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
+>>[@image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
-[@KeyboardInstructions('If there is more than one answer to a question, you can use commas and the word [|or|]*. When solving an equation for the variable [`x`], your answer should be in the form [|x=___|]*.')@]**
-a. Find [``f([$p0x])={}``].
+a. Find [``f([$p0x])``].
[_]{Compute($p0y)}{10}
a. Solve [``f(x)=[$p1y]``].
- [_]{$xeqansList}{20}
+ [_]{$solset}{20}
END_PGML
@@ -188,11 +211,11 @@ BEGIN_PGML_SOLUTION
To evaluate [`f([$p0x])`], we understand that we have been given an [`x`]-value of [`[$p0x]`]. On the graph, we draw a dotted vertical line at [`x=[$p0x]`], and it intersects the function's graph at [`([$p0x],[$p0y])`]. This implies [`f([$p0x])=[$p0y]`]. See the graph below.
->>[@image(insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]*<<
+>>[@image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT1' title = '$ALT1'") @]*<<
To solve [`f(x)=[$p1y]`], we understand that we have been given a [`y`]-value of [`[$p1y]`]. On the graph, we draw a dotted horizontal line at [`y=[$p1y]`], and it intersects the function's graph at [`([$p1x],[$p1y])`] and [`([$p2x],[$p2y])`]. This implies [`f([$p1x])=[$p1y]`] and [`f([$p2x])=[$p2y]`]. See the graph below.
->>[@image(insertGraph($gr[2]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
+>>[@image($gr[2], width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT2' title = '$ALT2'") @]*<<
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg
index 26291ef2a8..308d98e4ca 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg
@@ -40,7 +40,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
do {
$xMin = -4;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph45.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph45.pg
index 2329805543..90c0a5a693 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph45.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph45.pg
@@ -32,13 +32,16 @@ loadMacros(
"PCCgraphMacros.pl",
"parserRadioButtons.pl",
"PGchoicemacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
@@ -75,36 +78,50 @@ $y2 = $y3;
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..1) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[240,144]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (Real($j) == 0) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
- add_functions($gr[$i], "$func1 for x in <0,$e1> using color:blue and weight:1");
- add_functions($gr[$i], "$e1*$m1 for x in <$e1,$e2> using color:blue and weight:1");
- add_functions($gr[$i], "$func2 for x in <$e2,$e3> using color:blue and weight:1");
-
- $gr[$i]->lb( new Label($max[0], 0, "t (seconds)",'black','right','bottom','large'));
- $gr[$i]->lb( new Label($max[0]/50, $max[1], "y (feet)",'black','left','top','large'));
-}
-
-$gr[1]->stamps( closed_circle($x1,$y1,'red') );
-$gr[1]->lb( new Label($x1+$max[0]/50, $y1, "($x1,$y1)",'red','left','bottom','large'));
-$gr[1]->stamps( closed_circle($x2,$y2,'red') );
-$gr[1]->lb( new Label($x2+$max[0]/50, $y2, "($x2,$y2)",'red','left','bottom','large'));
-$gr[1]->stamps( closed_circle($x3,$y3,'red') );
-$gr[1]->lb( new Label($x3-$max[0]/50, $y3, "($x3,$y3)",'red','right','bottom','large'));
+
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ xlabel = {\(t\) (seconds)},
+ ylabel = {\(y\) (feet)},
+ ]
+ \addplot+[-] coordinates {(0,0) ($px1,$py1) ($px2,$py2) (10,0)};
+\end{axis}
+END_TIKZ
+
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ xlabel = {\(t\) (seconds)},
+ ylabel = {\(y\) (feet)},
+ ]
+ \addplot+[-] coordinates {(0,0) ($px1,$py1) ($px2,$py2) (10,0)};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[above] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[below right] {\(($x2,$y2)\)};
+ \addplot[soliddot] coordinates {($x3,$y3)} node[below left] {\(($x3,$y3)\)};
+\end{axis}
+END_TIKZ
+
+
$alt[0] = "This is a graph with the x axis labeled as t in seconds, and y axis labeled as y in feet. There are 3 line segments. The first segments starts at (0,0) and ends at ($px1,$py1). The second segment starts at ($px1,$py1) and ends at ($px2,$py2). The third segment starts at ($px2,$py2) and ends at ($e3,0).";
@@ -176,7 +193,7 @@ The following figure has the graph [`y=d(t)`], which models a particle's distanc
[@EnlargeImageStatementPGML@]**
->>[@ image(insertGraph( $gr[0] ), width=>240,
+>>[@ image( $gr[0], width=>300,
extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
) @]*<<
@@ -211,7 +228,7 @@ BEGIN_PGML_SOLUTION
[@EnlargeImageStatementPGML@]**
->>[@ image(insertGraph( $gr[1] ), tex_size=>400, width=>240,
+>>[@ image( $gr[1], tex_size=>400, width=>300,
extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
) @]*<<
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph50.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph50.pg
index bef9af980f..4658d436ef 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph50.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph50.pg
@@ -27,12 +27,13 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -41,7 +42,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$x0 = non_zero_random(-3,3,1);
$y0 = non_zero_random(-3,3,1);
@@ -131,54 +132,34 @@ $range = Union($range0,$range1);
Context("Numeric");
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- add_functions($gr[$i], "$func0 for x in [$x2,$x0] using color:blue and weight:1");
- add_functions($gr[$i], "$func1 for x in [$x1,$x3] using color:blue and weight:1");
-
- if ($x0Included==1) {
- $gr[$i]->stamps( closed_circle($x0,$y0,'blue') );
- } else {
- $gr[$i]->stamps( open_circle($x0,$y0,'blue') );
- }
+$x0style = ($x0Included) ? 'soliddot' : 'hollowdot';
+$x1style = ($x1Included) ? 'soliddot' : 'hollowdot';
+$x2style = ($x2Included) ? 'soliddot' : 'hollowdot';
+$x3style = ($x3Included) ? 'soliddot' : 'hollowdot';
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot[firstcurve,domain=$x2:$x0,-] {$m0*(x-$x0)+$y0};
+ \addplot[firstcurve,domain=$x1:$x3,-] {$m1*(x-$x1)+$y1};
+ \addplot[firstcolor,$x0style] coordinates {($x0,$y0)};
+ \addplot[firstcolor,$x1style] coordinates {($x1,$y1)};
+ \addplot[firstcolor,$x2style] coordinates {($x2,$y2)};
+ \addplot[firstcolor,$x3style] coordinates {($x3,$y3)};
+\end{axis}
+END_TIKZ
- if ($x1Included==1) {
- $gr[$i]->stamps( closed_circle($x1,$y1,'blue') );
- } else {
- $gr[$i]->stamps( open_circle($x1,$y1,'blue') );
- }
- if ($x2Included==1) {
- $gr[$i]->stamps( closed_circle($x2,$y2,'blue') );
- } else {
- $gr[$i]->stamps( open_circle($x2,$y2,'blue') );
- }
-
- if ($x3Included==1) {
- $gr[$i]->stamps( closed_circle($x3,$y3,'blue') );
- } else {
- $gr[$i]->stamps( open_circle($x3,$y3,'blue') );
- }
-
-}
$ALT0 = "This is the graph of a piecewise function with two line segments. The first segment starts from the $x2Text point ($x2,$y2), and ends at the $x0Text point ($x0,$y0). The second segment starts from the $x1Text point ($x1,$y1), and ends at the $x3Text point ($x3,$y3).";
@@ -192,7 +173,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
+>>[@image($gr, width=>300, extra_html_tags=>"alt = '$ALT0' title = '$ALT0'") @]*<<
[@KeyboardInstructions("If needed, use the upper case letter [|U|]* to represent the union symbol.")@]**
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg
index 84e6d80b96..e19788c515 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg
@@ -40,7 +40,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg
index 72c8d3d3fd..41c436a39a 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg
@@ -40,7 +40,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg
index 50b45e261d..008f6e5740 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg
@@ -41,7 +41,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg
index 9849ec4fac..039c3f5b78 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg
@@ -39,7 +39,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg
index 7d11c3c4d9..72b140a98a 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg
@@ -40,7 +40,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg
index 58650c9f34..f05b6b0746 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg
@@ -38,7 +38,7 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
do {
#define f(x)
@@ -74,7 +74,13 @@ do {
#find the right-side intersection
$rightInterceptX = ($gMidY-$fMidY+$gMidX+$fMidX)/2;
$rightInterceptY = ($gMidX-$fMidX+$gMidY+$fMidY)/2;
-} until ( (int($rightInterceptX)==$rightInterceptX) && ($rightInterceptX!=$gRightX) );
+} until (
+ (int($rightInterceptX)==$rightInterceptX) &&
+ ($rightInterceptX<$gRightX) &&
+ ($leftInterceptX>$gLeftX) &&
+ ($rightInterceptX<$fRightX) &&
+ ($leftInterceptX>$fLeftX)
+ );
$border = 8;
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([-$border,$border],[-$border,$border],centerOrigin=>1);
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg
index ddc7f1787b..d38cb40a4f 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg
@@ -39,7 +39,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
@@ -94,24 +94,16 @@ $ALT0 = "This graph has a function f(x), which is a straight line colored in blu
#the graph used in solution
-if ($p2x>$p1x) {
add_functions($gr[1], "$f for x in <$p1x,$p2x> using color:blue and weight:2");
$gr[1]->stamps( closed_circle($p1x,$p1y,'blue') );
$gr[1]->stamps( open_circle($p2x,$p2y,'blue') );
$ALT1 = "This graph has a function f(x), which is a straight line colored in blue. Only the part in the domain ($p1x,$p2x) is graphed. There are two horizontal lines, colored in red, at y=$p1y and y=$p2y. The graph of f(x) crosses those two horizontal lines at ($p1x,$p1y) and ($p2x,$p2y). The point ($p1x,$p1y) is closed, and the point ($p2x,$p2y) is open.";
-} else {
- add_functions($gr[1], "$f for x in <$p2x,$p1x> using color:blue and weight:2");
- $gr[1]->stamps( open_circle($p1x,$p1y,'blue') );
- $gr[1]->stamps( closed_circle($p2x,$p2y,'blue') );
- $ALT1 = "This graph has a function f(x), which is a straight line colored in blue. Only the part in the domain ($p1x,$p2x) is graphed. There are two horizontal lines, colored in red, at y=$p1y and y=$p2y. The graph of f(x) crosses those two horizontal lines at ($p2x,$p2y) and ($p1x,$p1y). The point ($p2x,$p2y) is closed, and the point ($p1x,$p1y) is open.";
-}
-
Context("Interval");
-$ans1 = ($p1x<$p2x) ? Compute("[$p1x,$p2x)") : Compute("[$p2x,$p1x)");
+$ans1 = ($p1x<$p2x) ? Compute("[$p1x,$p2x)") : Compute("($p2x,$p1x]");
$ans2 = ($p1x<$p2x) ? Compute("(-infinity,$p1x)U[$p2x,infinity)") : Compute("(-infinity,$p2x]U($p1x,infinity)");
$ans3 = ($p1x<$p2x) ? Compute("(-infinity,$p2x]") : Compute("[$p2x,infinity)");
-
+
##############################################
Context("LimitedNumeric");
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg
index 8a33c0eb66..f6c74bfba6 100644
--- a/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg
@@ -39,7 +39,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xMin = -4;
$xMax = -$xMin;
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAbsValuePoints.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAbsValuePoints.pg
new file mode 100644
index 0000000000..83ccff0753
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAbsValuePoints.pg
@@ -0,0 +1,96 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+($h,$k) = (1..3)[NchooseK(3,2)];
+$k *= -1;
+$f = Formula("|x - $h| + $k")->reduce;
+
+@pts = ();
+for my $x (0..5) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 4);
+}
+$n = scalar @pts;
+$points = join(',',@pts);
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ bBox => [-0.5, 4, 5.5, -4],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "Your answer includes an object that is not a point.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the function [`f`] where [`f(x)=[$f]`].
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAlternatingPoints.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAlternatingPoints.pg
new file mode 100644
index 0000000000..1f40768577
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotAlternatingPoints.pg
@@ -0,0 +1,97 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y','x*n');
+($a,$b) = (2..4)[NchooseK(3,2)];
+$b *= list_random(-1,1);
+$f = Formula("(-1)^x*$a+$b")->reduce;
+
+@pts = ();
+for my $x (-3..3) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 8);
+}
+$n = scalar @pts;
+$points = join(',',@pts);
+
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ bBox => [-3.5, 8, 3.5, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points, and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "Your answer includes an object that is not a point.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the function [`f`] where [`f(x)=[$f]`].
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotNegQuadraticPoints.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotNegQuadraticPoints.pg
new file mode 100644
index 0000000000..b4dec93eae
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotNegQuadraticPoints.pg
@@ -0,0 +1,134 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+($h,$k) = (1..5)[NchooseK(5,2)];
+$h *= list_random(-1,1);
+$f = Formula("-x^2 + 2*$h x + (-($h)^2+$k)")->reduce;
+
+@pts = ();
+push(@pts, "{point,(-8," . $f->eval(x=>-8) . ")}") if (abs($f->eval(x=>-8)) <= 7);
+for my $x (-7..7) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 8);
+}
+push(@pts, "{point,(8," . $f->eval(x=>8) . ")}") if (abs($f->eval(x=>8)) <= 7);
+$n = scalar @pts;
+$points = join(',',@pts);
+
+$u = $h+1;
+$v = $f->eval(x=>$u);
+
+$gt = GraphTool($points.",{parabola,solid,vertical,($h,$k),($u,$v)}")->with(
+ availableTools => ["PointTool","VerticalParabolaTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points, parabolas, and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentparabolas;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } elsif ($_->extract(1) eq 'parabola' && $_->extract(3) eq 'vertical') {
+ push(@studentparabolas, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "You haven't plotted a curve yet.") unless (@studentparabolas);
+ push(@errors, "Your answer includes an object that is neither a point nor a vertical parabola.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $extraprbs = 0;
+ my $distinctprbs = 0;
+ my $countprbs = 0;
+ STUDENTPARABOLAS:
+ for my $j (@studentparabolas) {
+ ++$countprbs;
+ if (($j->extract(4) != Point($h,$k)) || ($j->extract(5)->value)[1] != $f->eval(x=>(($j->extract(5)->value)[0]))) {
+ push(@errors, "The parabola with vertex at " . $j->extract(4) . " passing through " . $j->extract(5) . " is incorrect.");
+ $extraprbs++;
+ next STUDENTPARABOLAS;
+ }
+ for my $i (0..($countprbs-2)) {
+ my ($hj,$kj) = $j->extract(4)->value;
+ my ($xj,$yj) = $j->extract(5)->value;
+ my ($hi,$ki) = $studentparabolas[$i]->extract(4)->value;
+ my ($xi,$yi) = $studentparabolas[$i]->extract(5)->value;
+ next STUDENTPARABOLAS if (
+ # has same vertex as an earlier parabola
+ ($hj == $hi && $kj == $ki) &&
+ # assuming same vertex, yields same parabola
+ ($yi - $ki)*($xj - $hj)**2 == ($yj - $kj)*($xi - $hi)**2
+ );
+ }
+ $distinctprbs++;
+ }
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ $score /= 2 unless ($distinctprbs == 1);
+ $score /= 2 if ($extraprbs);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the function [`f`] where [`f(x)=[$f]`].
+Then graph a curve that passes through these points.
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotQuadraticPoints.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotQuadraticPoints.pg
new file mode 100644
index 0000000000..d83a9211eb
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotQuadraticPoints.pg
@@ -0,0 +1,134 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+($h,$k) = (-5..-1)[NchooseK(5,2)];
+$h *= list_random(-1,1);
+$f = Formula("x^2 - 2*$h x + (($h)^2+$k)")->reduce;
+
+@pts = ();
+push(@pts, "{point,(-8," . $f->eval(x=>-8) . ")}") if (abs($f->eval(x=>-8)) <= 7);
+for my $x (-7..7) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 8);
+}
+push(@pts, "{point,(8," . $f->eval(x=>8) . ")}") if (abs($f->eval(x=>8)) <= 7);
+$n = scalar @pts;
+$points = join(',',@pts);
+
+$u = $h+1;
+$v = $f->eval(x=>$u);
+
+$gt = GraphTool($points.",{parabola,solid,vertical,($h,$k),($u,$v)}")->with(
+ availableTools => ["PointTool","VerticalParabolaTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points, parabolas, and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentparabolas;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } elsif ($_->extract(1) eq 'parabola' && $_->extract(3) eq 'vertical') {
+ push(@studentparabolas, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "You haven't plotted a curve yet.") unless (@studentparabolas);
+ push(@errors, "Your answer includes an object that is neither a point nor a vertical parabola.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $extraprbs = 0;
+ my $distinctprbs = 0;
+ my $countprbs = 0;
+ STUDENTPARABOLAS:
+ for my $j (@studentparabolas) {
+ ++$countprbs;
+ if (($j->extract(4) != Point($h,$k)) || ($j->extract(5)->value)[1] != $f->eval(x=>(($j->extract(5)->value)[0]))) {
+ push(@errors, "The parabola with vertex at " . $j->extract(4) . " passing through " . $j->extract(5) . " is incorrect.");
+ $extraprbs++;
+ next STUDENTPARABOLAS;
+ }
+ for my $i (0..($countprbs-2)) {
+ my ($hj,$kj) = $j->extract(4)->value;
+ my ($xj,$yj) = $j->extract(5)->value;
+ my ($hi,$ki) = $studentparabolas[$i]->extract(4)->value;
+ my ($xi,$yi) = $studentparabolas[$i]->extract(5)->value;
+ next STUDENTPARABOLAS if (
+ # has same vertex as an earlier parabola
+ ($hj == $hi && $kj == $ki) &&
+ # assuming same vertex, yields same parabola
+ ($yi - $ki)*($xj - $hj)**2 == ($yj - $kj)*($xi - $hi)**2
+ );
+ }
+ $distinctprbs++;
+ }
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ $score /= 2 unless ($distinctprbs == 1);
+ $score /= 2 if ($extraprbs);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the equation [`y=[$f]`].
+Then graph a curve that passes through these points.
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotRemainder.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotRemainder.pg
new file mode 100644
index 0000000000..bccbe1f0e2
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotRemainder.pg
@@ -0,0 +1,107 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+$m = random(3,5,1);
+
+package NewFunc;
+our @ISA = qw(Parser::Function::numeric2);
+
+sub modm {
+ shift; my $x = shift; my $mod = shift;
+ return $x % $mod;
+}
+
+package main;
+
+Context()->functions->add(modm => {class => 'NewFunc'});
+$f = Formula("modm(x,$m)");
+
+@pts = ();
+for my $x (0..7) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 6);
+}
+$n = scalar @pts;
+$points = join(',',@pts);
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ bBox => [-0.5, 6, 7.5, -0.5],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points, and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "Your answer includes an object that is not a point.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the funciton [`f`] where [`f(x)`] is the remainder when you divide [`x`] by [`[$m]`].
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotZigZag.pg b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotZigZag.pg
new file mode 100644
index 0000000000..e57b3fd19f
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/FunctionBasics/PlotZigZag.pg
@@ -0,0 +1,95 @@
+# Plot the points along a quadratic function graph and then also plot the parabola.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric")->noreduce('(-x)-y','(-x)+y');
+($h,$k) = (-2..2)[NchooseK(5,2)];
+$f = Formula("|x-$h| - |x-$k|")->reduce;
+
+@pts = ();
+for my $x (-4..4) {
+ push(@pts, "{point,($x," . $f->eval(x=>$x) . ")}") if (abs($f->eval(x=>$x)) <= 8);
+}
+$n = scalar @pts;
+$points = join(',',@pts);
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ bBox => [-4.5, 8, 4.5, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @errors;
+ # sort student points, and other (which there shouldn't be any of)
+ my @studentpoints;
+ my @studentother;
+ for (@$student) {
+ if ($_->extract(1) eq 'point') {
+ push(@studentpoints, $_);
+ } else {
+ push(@studentother, $_);
+ }
+ }
+ push(@errors, "You haven't plotted any points.") unless (@studentpoints);
+ push(@errors, "Your answer includes an object that is not a point.") if (@studentother);
+
+ my $extrapts = 0;
+ my $distinctpts = 0;
+ my $countpts = 0;
+ STUDENTPOINTS:
+ for my $j (@studentpoints) {
+ ++$countpts;
+ if (($j->extract(2)->value)[1] != $f->eval(x=>(($j->extract(2)->value)[0]))) {
+ push(@errors, "The point graphed at " . $j->extract(2) . " is incorrect.");
+ $extrapts++;
+ next STUDENTPOINTS;
+ }
+ for my $i (0..($countpts-2)) {
+ next STUDENTPOINTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinctpts++;
+ }
+ push(@errors, "You've only plotted $distinctpts correct point".(($distinctpts > 1)?'s':'').".") if ($distinctpts > 0 && $distinctpts < $n);
+
+ my $score = max(scalar(@{$correct}),scalar(@{$student}));
+ $score *= $distinctpts/$n;
+ $score /= 2 if ($extrapts);
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot points for the function [`f`] where [`f(x)=[$f]`].
+
+[@KeyboardInstructions('Plot as many points as can fit in this viewing window and have integer coordinates.')@]**
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/CircleCircumferenceArea40.pg b/Contrib/PCC/BasicAlgebra/Geometry/CircleCircumferenceArea40.pg
index 4755b01d24..b5becebd0e 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/CircleCircumferenceArea40.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/CircleCircumferenceArea40.pg
@@ -32,24 +32,26 @@ loadMacros(
"parserNumberWithUnits.pl",
"parserFormulaWithUnits.pl",
"answerHints.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
##############################################
Context("Numeric");
-Context()->flags->set(
- tolerance => 0.005,
- tolType => "absolute",
-);
+# An earlier version of this problem required rounding to hundredths place.
+# Bad, because when some students use 3.14 instead of something closer to pi,
+# they could be marked incorrect. Using relative tolerance in the usual way
+# means it is OK to use 3.14 in place of pi. If students are now not showing
+# enough digits and being marked incorrect, that should be handled globally,
+# not in the problem code. For exampl, more studnet education about rounding
+# explectations, or a tooltip that always reminds students of the roudning
+# convention.
$circum = random(30,50,1);
$diameter = $circum/pi;
$radius = $diameter/2;
-$diameter = sprintf("%.2f", $diameter);
-$radius = sprintf("%.2f", $radius);
-
$circumU = NumberWithUnits("$circum cm");
$radiusU = NumberWithUnits("$radius cm");
$diameterU = NumberWithUnits("$diameter cm");
@@ -60,11 +62,13 @@ TEXT(beginproblem());
BEGIN_PGML
-A circle's circumference is [`[$circumU]`]. Find the following values. Round your answer to at least 2 decimal places.
+A circle's circumference is [`[$circumU]`].
-a) This circle's diameter is [_____________]{$diameterU}.
+a. What is this circle's diameter?
+ [_]{$diameterU}{15}
-b) This circle's radius is [_____________]{$radiusU}.
+a. What is this circle's radius?
+ [_]{$radiusU}{15}
END_PGML
@@ -79,21 +83,21 @@ A circle's circumference formula is [` C= \pi d `] or [` C= 2 \pi r `].
When you enter [`\pi`]'s value in a calculator, don't round it to [`3.14`]. Use the [`\pi`] button on your calculator instead. This way, your result is more accurate.
-a) To find the diameter, we substitute the given numbers into the first formula for circumference:
+a. To find the diameter, we substitute the given numbers into the first formula for circumference:
[```
\begin{aligned}
C & = \pi d \\
[$circum] & = \pi d \\
\frac{[$circum]}{\pi} &= \frac{\pi d}{\pi} \\
- \frac{[$circum]}{3.1415926 \ldots} &= \frac{\pi d}{3.1415926 \ldots} \\
+ \frac{[$circum]}{3.1415926 \ldots} &= d \\
[$diameter] & \approx d
\end{aligned}
```]
This circle's diameter is approximately [`[$diameterU]`]. Don't forget the length unit [`\textrm{cm}`].
-b) Once we find the diameter, the radius is simply half of it: [`[$radiusU]`].
+a. Once we find the diameter, the radius is simply half of it: [`[$radiusU]`].
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea10.pg b/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea10.pg
index 0b182a1eb9..2003b2ef7c 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea10.pg
@@ -119,7 +119,7 @@ $picture->lineTo($x[1]-$cornersize,$y[1], red,1,'dashed');
$alt = "The graph shows a polygon with a rectangle at the bottom and a triangle on top of it. The base of the triangle overlaps the top base of the rectangle. For the rectangle, its base is $baseU, and its height is $heightRectangleU. For the triangle, its height is $heightTriangleU, both its left side and right side are $leftSideU.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea20.pg b/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea20.pg
index 052b9ab356..1f3a6c19db 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea20.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/PolygonPerimeterArea20.pg
@@ -128,7 +128,7 @@ $alt[0] = "The graph shows a shape with a rectangle at the bottom and a semicirc
$alt[1] = $alt[0]." The radius of the semicircle is marked as $base/2=$radiusU.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea10.pg b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea10.pg
index b4d3bba30c..b70e9f5403 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea10.pg
@@ -104,7 +104,7 @@ BEGIN_PGML
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
We usually use the following formulas for rectangles:
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea40.pg b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea40.pg
index c77f60d7ff..53dd84dfce 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea40.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea40.pg
@@ -208,7 +208,7 @@ $picture[2]->lineTo($connectLineX[$corner][2],$connectLineY[$corner][2], red,1,'
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
BEGIN_PGML
Find the perimeter and area of this shape.
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea50.pg b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea50.pg
index 9de7b579ff..2508a64813 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea50.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea50.pg
@@ -148,7 +148,7 @@ $alt[1] = "The graph shows a rectangle with one rectangular piece missing. Start
$alt[2] = "The graph shows a rectangle with one rectangular piece missing. Starting at the bottom left corner, a vertical segment travels up for a distance, turns right and travels for $baseLeftU, goes down for $heightCutU, turns right for a distance marked as $base-2*$baseLeft=$baseCutU, goes up for a distance, turns right and travels for $baseLeftU, goes down for $heightU, and finally turns left for $baseU. A dashed line connects the top of the missing rectangle, making it clear this polygon is a bigger rectangle with a smaller rectangle taken out.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/RectangularPrismVolume10.pg b/Contrib/PCC/BasicAlgebra/Geometry/RectangularPrismVolume10.pg
index 5678cb7ce5..c0a878e095 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/RectangularPrismVolume10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/RectangularPrismVolume10.pg
@@ -103,7 +103,7 @@ $ans = NumberWithUnits("$volume in^3");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_TEXT
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles10.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles10.pg
index ef1de2b296..9d98301feb 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles10.pg
@@ -106,7 +106,7 @@ $ans = $baseLong[0];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles20.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles20.pg
index 951b5738b9..c73e3b0f61 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles20.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles20.pg
@@ -111,7 +111,7 @@ $ans = $baseLong[1];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles30.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles30.pg
index af4cac95a8..4fe5a25d48 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles30.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles30.pg
@@ -115,7 +115,7 @@ $ans = $hypotenuse[0];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles40.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles40.pg
index 3cd7b07244..33478aec27 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles40.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles40.pg
@@ -115,7 +115,7 @@ $ans = $hypotenuse[1];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles50.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles50.pg
index 994bc67d1e..fb033aa51c 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles50.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles50.pg
@@ -341,7 +341,7 @@ $ans = $baseShort[0];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles60.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles60.pg
index a99391f451..b07c292e1a 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles60.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles60.pg
@@ -339,7 +339,7 @@ $ans = $baseShort[1];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles70.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles70.pg
index 771132ce2b..0d7c37daff 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles70.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles70.pg
@@ -312,7 +312,7 @@ $ans = $hypotenuse[1];
$ansU = NumberWithUnits("$ans $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles80.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles80.pg
index 2461ff1d36..29b117148e 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles80.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles80.pg
@@ -312,7 +312,7 @@ $ans = $hypotenuse[0];
$ansU = NumberWithUnits("$ans ft");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles90.pg b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles90.pg
index 30ea8331ce..4409e16268 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles90.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/SimilarTriangles90.pg
@@ -341,7 +341,7 @@ $ans1 = $baseShort[1];
$ans1U = NumberWithUnits("$ans1 $unit");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/Trapezoid10.pg b/Contrib/PCC/BasicAlgebra/Geometry/Trapezoid10.pg
index 49fd949e0b..cbd4613c14 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/Trapezoid10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/Trapezoid10.pg
@@ -1,23 +1,3 @@
-#######################################
-### Generated from PreTeXt source
-### on 2017-10-02T18:11:53-07:00
-###
-### http://mathbook.pugetsound.edu
-###
-#######################################
-## DBsubject()
-## DBchapter()
-## DBsection()
-## Level()
-## KEYWORDS()
-## TitleText1(ORCCA (Draft))
-## EditionText1(Fall 2017 MTH 60 Pilot)
-## AuthorText1(Ann Cary, Alex Jordan, Carl Yao)
-## Section1(not reported)
-## Problem1(B.4.3)
-## Author()
-## Institution()
-## Language(en-US)
DOCUMENT();
@@ -33,18 +13,17 @@ loadMacros(
"parserNumberWithUnits.pl",
"PGcourse.pl",
);
-$refreshCachedImages= 1;
+
############################################################
# Header
############################################################
-COMMENT('Authored in PreTeXt');
TEXT(beginproblem());
############################################################
# PG Setup
############################################################
Context("Numeric");
-$refreshCachedImages = 1;
+
$unit = "cm";
@@ -102,7 +81,7 @@ $ansA = NumberWithUnits("$area $unit^2");
BEGIN_PGML
Find the area of the traepzoid.
->> [@image(insertGraph($picture), width=>600, extra_html_tags=>qq!alt=""!)@]* <<
+>> [@image(insertGraph($picture), width=>600, extra_html_tags => "alt = '$alt' title = '$alt' ")@]* <<
Its area is [________]{$ansA}.
@@ -118,7 +97,7 @@ BEGIN_PGML_SOLUTION
A trapezoid's area can be calculated by this formula:
>> [``\newcommand{\amp}{&}\begin{aligned}
-\text{trapezoid area}\amp= \frac{1}{2}(\text{base1}+\text{base2})cdot\text{height}\\
+\text{trapezoid area}\amp= \frac{1}{2}(\text{base1}+\text{base2})\cdot\text{height}\\
\amp= \frac{1}{2}([$base1U]+[$base2U])([$heightU])\\
\amp = [$ansA]
\end{aligned}``] <<
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea10.pg b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea10.pg
index d7829255cd..a2e530229a 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea10.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea10.pg
@@ -90,7 +90,7 @@ $ansA = NumberWithUnits("$area ft^2");
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
$text = "a triangle with one side parallel to the ground; this side is $base ft long; the left side is $leftSide ft long; the right side is $rightSide ft long; the height is $height ft";
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea20.pg b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea20.pg
index 571dc063e6..291333717a 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea20.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea20.pg
@@ -84,7 +84,7 @@ $ansP = NumberWithUnits("$perimeter cm");
$ansA = NumberWithUnits("$area cm^2");
##############################################
-$refreshCachedImages=1;
+
TEXT(beginproblem());
$text = "a right triangle with legs of lengths $base cm and $height cm, and hypotenuse of length $hypotenuse cm";
diff --git a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea30.pg b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea30.pg
index 3fa7b474a1..081ff08c30 100644
--- a/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea30.pg
+++ b/Contrib/PCC/BasicAlgebra/Geometry/TrianglePerimeterArea30.pg
@@ -89,7 +89,7 @@ $ansA = NumberWithUnits($area,"m^2");
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
$text = "an obtuse triangle with legs of lengths $base m, $rightSide m, and $leftSide m; its height perpendicular to the side of length $base m is $height m";
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines10.pg
index 4cb31a660d..5134c5d8fb 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines10.pg
@@ -37,7 +37,7 @@ loadMacros(
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$m=random(1,3,1)*random(-1,1,2);
$b=non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines20.pg
index 1e4fbfc919..a0ee2c1f4e 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines20.pg
@@ -38,7 +38,7 @@ loadMacros(
Context("Fraction");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
do {
$num=random(1,3,1)*random(-1,1,2);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines30.pg
index 69014d7a09..12a8d9eb98 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines30.pg
@@ -39,7 +39,7 @@ loadMacros(
Context("Fraction");
Context()->noreduce('(-x)-y','(-x)+y');
Context()->variables->add(y=>"Real");
-$refreshCachedImages=1;
+
do {
$num=random(1,3,1)*random(-1,1,2);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines40.pg
index c57dc58b01..4275a4fe6b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines40.pg
@@ -39,7 +39,7 @@ loadMacros(
Context("Fraction");
Context()->noreduce('(-x)-y','(-x)+y');
Context()->variables->add(y=>"Real");
-$refreshCachedImages=1;
+
do {
$num=random(1,3,1)*random(-1,1,2);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines50.pg
index d5a50490c5..9f02bec50c 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/ChooseMethodToGraphLines50.pg
@@ -38,7 +38,7 @@ sub PF {PGML::Format(@_)};
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$a = non_zero_random(-3,3,1);
$direction = (random(-1,1,2)>0) ? "horizontal" : "vertical";
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg
index fa88d7fa7b..1d987630b0 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg
@@ -23,7 +23,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -36,7 +37,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = random(1,5,1);
$b = random(-4,4,1);
@@ -58,48 +59,45 @@ Context("Numeric");
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([3*$x2,0,$x1],[$m*3*$x2+$b,0,$y1]);
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
-my @ticksep;
-for my $i (0,1) {
- $ticksep[$i] = ($max[$i] - $min[$i])/$ticknum[$i];
-};
-
-#Make sure the grid lines cover the two points
-$scale[0] = 1;
-while ((Real($scale[0]*$x1 / $ticksep[0]) != Real(int($scale[0]*$x1 / $ticksep[0]))) or (Real($scale[0]*$x2 / $ticksep[0]) != Real(int($scale[0]*$x2 / $ticksep[0])))) {$scale[0] = $scale[0] + 1};
-$scale[1] = 1;
-while ((Real($scale[1]*$y1 / $ticksep[1]) != Real(int($scale[1]*$y1 / $ticksep[1]))) or (Real($scale[1]*$y2 / $ticksep[1]) != Real(int($scale[1]*$y2 / $ticksep[1])))) {$scale[1] = $scale[1] + 1};
-
-for my $i (0,1) {
- $ticknum[$i] = $ticknum[$i]*$scale[$i];
-};
-
-for my $i (0,1) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (Real($j) == 0) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','left','middle','large'));
- }
-
($start,$stop) = (num_sort($min[0],$max[0],($min[1]-$b)/$m,($max[1]-$b)/$m))[1,2];
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($start,$m*$start+$b,'blue',1);
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($stop,$m*$stop+$b,'blue',1);
-}
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+\end{axis}
+END_TIKZ
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[above] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[above] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
+
##############################################
Context("LimitedNumeric");
@@ -112,7 +110,7 @@ END_PGML
BEGIN_TEXT
$PAR
$BCENTER
-\{image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)"') \}
+\{image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)"') \}
$ECENTER
$PAR
END_TEXT
@@ -123,27 +121,6 @@ BEGIN_PGML
END_PGML
##############################################
-if ($m > 0)
-{$p1vert = 'bottom';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'left';}
-else {$p1vert = 'top';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'right';};
-
-$gr[1]->stamps( closed_circle($x1,$y1,'red') );
-$gr[1]->lb( new Label($x1,$y1,"$pt1",'red',$p1hor,$p1vert));
-$gr[1]->stamps( closed_circle($x2,$y2,'red') );
-$gr[1]->lb( new Label($x2,$y2,"$pt2",'red',$p2hor,$p2vert));
-
-$gr[1]->moveTo($x1,$y1);
-$gr[1]->lineTo($x2,$y1,'red',2);
-$gr[1]->lineTo($x2,$y2,'red',2);
-$gr[1]->lb( new Label(($x1+$x2)/2,$y1,"$run",'red','center','top'));
-$gr[1]->lb( new Label($x2,($y1+$y2)/2,"$rise",'red','left','middle'));
-
BEGIN_SOLUTION
@@ -152,7 +129,7 @@ To find the slope of a line from its graph, we first need to identify two points
Next, we sketch a slope triangle and find the $BITALIC rise$EITALIC and $BITALIC run$EITALIC. In the sketch below, the rise is \($rise\) and the run is \($run\).
$BCENTER
-\{ image( insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
+\{ image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
\}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg
index ba67f11a73..7bb80cc596 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg
@@ -38,7 +38,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = -random(1,5,1);
$b = random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg
index d0c1c03ac9..c31b4c513d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg
@@ -3,7 +3,7 @@
#
# Given a graph, find a line's slope. Slope is a positive fraction.
#
-# Last edited: Jordan 8/18/13
+# Last edited: Jordan 4/23/21
#
# ENDDESCRIPTION
@@ -25,13 +25,14 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"contextFraction.pl",
"PCCmacros.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -39,17 +40,16 @@ loadMacros(
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
-$num=random(1,9,1);
-do {$den=random(2,9,1);} until (gcd($den,$num)==1);
+$num=random(3,9,1);
+do {$den=random(3,9,1);} until (gcd($den,$num)==1);
$m = Fraction($num,$den);
$mperl = $num/$den;
Context("Numeric");
-$b = random(-4,4,1);
+$b = non_zero_random(-4,4,1);
$x1 = 0;
$y1 = $b;
@@ -67,115 +67,84 @@ $pt2=Compute("($x2,$y2)");
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([1.5*$x2,0,$x1],[$m*1.5*$x2+$b,0,$y1]);
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
-my @ticksep;
-for my $i (0,1) {
- $ticksep[$i] = ($max[$i] - $min[$i])/$ticknum[$i];
-};
+($start,$stop) = (num_sort($min[0],$max[0],($min[1]-$b)/$mperl,($max[1]-$b)/$mperl))[1,2];
-#Make sure the grid lines cover the two points
-$scale[0] = 1;
-while ((Real($scale[0]*$x1 / $ticksep[0]) != Real(int($scale[0]*$x1 / $ticksep[0]))) or (Real($scale[0]*$x2 / $ticksep[0]) != Real(int($scale[0]*$x2 / $ticksep[0])))) {$scale[0] = $scale[0] + 1};
-$scale[1] = 1;
-while ((Real($scale[1]*$y1 / $ticksep[1]) != Real(int($scale[1]*$y1 / $ticksep[1]))) or (Real($scale[1]*$y2 / $ticksep[1]) != Real(int($scale[1]*$y2 / $ticksep[1])))) {$scale[1] = $scale[1] + 1};
+$firstx = $min[0]+1;
+$firsty = $min[1]+1;
+
+$tikz = <<"END_TIKZ";
+\begin{axis}
+ [
+ width = 0.47\linewidth,
+ xmin = $min[0],
+ ymin = $min[1],
+ xmax = $max[0],
+ ymax = $max[1],
+ xtick = {},
+ ytick = {},
+ minor xtick = {$min[0],$firstx,...,$max[0]},
+ minor ytick = {$min[1],$firsty,...,$max[1]},
+ grid=both,
+ ]
+ \addplot+[domain = $start:$stop] {$mperl*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1) ($x2,$y2)};
+END_TIKZ
+# note final \end{axis} not yet written
for my $i (0,1) {
- $ticknum[$i] = $ticknum[$i]*$scale[$i];
-};
+ $gr[$i] = createTikZImage();
+ $gr[$i]->addToPreamble(latexImagePreamble());
+}
+$gr[0]->tex($tikz. '\end{axis}');
-for my $i (0,1) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top', 'large'));
- }
-
- for my $j (@yticks) {
- if (Real($j) == 0) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','left','middle','large'));
- }
+if ($m > 0)
+{$p1vert = 'above';
+ $p2vert = 'above';
+ $p1hor = 'left';
+ $p2hor = 'left';}
+else {$p1vert = 'below';
+ $p2vert = 'below';
+ $p1hor = 'left';
+ $p2hor = 'left';};
-($start,$stop) = (num_sort($min[0],$max[0],($min[1]-$b)/$mperl,($max[1]-$b)/$mperl))[1,2];
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($start,$mperl*$start+$b,'blue',1);
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($stop,$mperl*$stop+$b,'blue',1);
-$gr[$i]->stamps( closed_circle($x1,$y1,'blue') );
-$gr[$i]->stamps( closed_circle($x2,$y2,'blue') );
+$tikz .= <<"END_TIKZ";
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1)} node[pos=0.5,below] {\($run\)};
+ \addplot[guideline] coordinates {($x2,$y1) ($x2,$y2)} node[pos=0.5,right] {\($rise\)};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[$p1vert $p1hor] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[$p2vert $p2hor] {\(($x2,$y2)\)};
+END_TIKZ
-}
+$gr[1]->tex($tikz.'\end{axis}');
##############################################
Context("LimitedFraction");
BEGIN_PGML
-Below is a line's graph. [@EnlargeImageStatementPGML()@]**
+Find the slope of the line.
+>>[@image(insertGraph($gr[0]), width=>280, tex_size=>1000, alt => "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)")@]*<<
-END_PGML
-BEGIN_TEXT
-$PAR
-$BCENTER
-\{image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line has an upward slant and also passes through the point ($x2,$y2)"') \}
-$ECENTER
-$PAR
-END_TEXT
-BEGIN_PGML
+[@KeyboardInstructions('(If the slope does not exist, enter [|DNE|]* or [|NONE|]*.)')@]**
- The slope of this line is [___________]{$m}. [@KeyboardInstructions('(If the slope does not exist, enter [|DNE|]* or [|NONE|]*.)')@]**
+[_]{$m}{10}
END_PGML
##############################################
-if ($m > 0)
-{$p1vert = 'bottom';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'left';}
-else {$p1vert = 'top';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'right';};
-
-$gr[1]->stamps( closed_circle($x1,$y1,'red') );
-$gr[1]->lb( new Label($x1,$y1,"$pt1",'red',$p1hor,$p1vert,'large'));
-$gr[1]->stamps( closed_circle($x2,$y2,'red') );
-$gr[1]->lb( new Label($x2,$y2,"$pt2",'red',$p2hor,$p2vert,'large'));
-
-$gr[1]->moveTo($x1,$y1);
-$gr[1]->lineTo($x2,$y1,'red',2);
-$gr[1]->lineTo($x2,$y2,'red',2);
-$gr[1]->lb( new Label(($x1+$x2)/2,$y1,"$run",'red','center','top','small'));
-$gr[1]->lb( new Label($x2,($y1+$y2)/2,"$rise",'red','left','middle','small'));
-
-Context()->texStrings;
-BEGIN_SOLUTION
+BEGIN_PGML_SOLUTION
-To find the slope of a line from its graph, we first need to identify two points that the line passes through. It is wise to choose points with integer coordinates. For this problem, we choose \(($x1,$y1)\) and \(($x2,$y2)\).
+To find the slope of a line from its graph, we first need to identify two points that the line passes through. It is wise to choose points with integer coordinates. For this problem, we choose [`([$x1],[$y1])`] and [`([$x2],[$y2])`].
-Next, we sketch a slope triangle and find the $BITALIC rise$EITALIC and $BITALIC run$EITALIC. In the sketch below, the rise is \($rise\) and the run is \($run\).
+Next, we sketch a slope triangle and find the _rise_ and _run_. In the sketch below, the rise is [`[$rise]`] and the run is [`[$run]`].
-$BCENTER
-\{ image( insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
- \}
-$ECENTER
-$PAR
+>>[@image(insertGraph($gr[1]), width=>280, tex_size=>1000, alt => "graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)")@]*<<
-\[\begin{aligned}\text{slope}&=\frac{\text{rise}}{\text{run}}\\
-&=\frac{$rise}{$run}\\
-\end{aligned}\]
+[```\text{slope}=\frac{\text{rise}}{\text{run}}=\frac{[$rise]}{[$run]}```]
-This line's slope is \($m\).
+This line's slope is [`[$m]`].
-END_SOLUTION
+END_PGML_SOLUTION
Context()->normalStrings;
ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg
index 441bcfed1b..ee63e9489a 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -39,7 +40,7 @@ loadMacros(
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num=random(1,9,1);
@@ -66,53 +67,50 @@ $pt1=Compute("($x1,$y1)");
$pt2=Compute("($x2,$y2)");
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([1.5*$x2,0,$x1],[$m*1.5*$x2+$b,0,$y1]);
-
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
-my @ticksep;
-for my $i (0,1) {
- $ticksep[$i] = ($max[$i] - $min[$i])/$ticknum[$i];
-};
-
-#Make sure the grid lines cover the two points
-$scale[0] = 1;
-while ((Real($scale[0]*$x1 / $ticksep[0]) != Real(int($scale[0]*$x1 / $ticksep[0]))) or (Real($scale[0]*$x2 / $ticksep[0]) != Real(int($scale[0]*$x2 / $ticksep[0])))) {$scale[0] = $scale[0] + 1};
-$scale[1] = 1;
-while ((Real($scale[1]*$y1 / $ticksep[1]) != Real(int($scale[1]*$y1 / $ticksep[1]))) or (Real($scale[1]*$y2 / $ticksep[1]) != Real(int($scale[1]*$y2 / $ticksep[1])))) {$scale[1] = $scale[1] + 1};
-
-for my $i (0,1) {
- $ticknum[$i] = $ticknum[$i]*$scale[$i];
-};
-
-
-for my $i (0,1) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (Real($j) == 0) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','left','middle','large'));
- }
+$min[1] = int($min[1]);
+$max[1] = int($max[1]);
($start,$stop) = (num_sort($min[0],$max[0],($min[1]-$b)/$mperl,($max[1]-$b)/$mperl))[1,2];
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($start,$mperl*$start+$b,'blue',1);
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($stop,$mperl*$stop+$b,'blue',1);
-$gr[$i]->stamps( closed_circle($x1,$y1,'blue') );
-$gr[$i]->stamps( closed_circle($x2,$y2,'blue') );
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)};
+ \addplot[soliddot] coordinates {($x2,$y2)};
+\end{axis}
+END_TIKZ
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick = {$min[1],...,$max[1]},
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[above] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[above] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
-}
##############################################
Context("LimitedFraction");
@@ -125,7 +123,7 @@ END_PGML
BEGIN_TEXT
$PAR
$BCENTER
-\{image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line has an downward slant and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line has an downward slant and also passes through the point ($x2,$y2)"') \}
+\{image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line has an downward slant and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line has an downward slant and also passes through the point ($x2,$y2)"') \}
$ECENTER
$PAR
END_TEXT
@@ -136,26 +134,6 @@ BEGIN_PGML
END_PGML
##############################################
-if ($m > 0)
-{$p1vert = 'bottom';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'left';}
-else {$p1vert = 'top';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'right';};
-
-$gr[1]->stamps( closed_circle($x1,$y1,'red') );
-$gr[1]->lb( new Label($x1,$y1,"$pt1",'red',$p1hor,$p1vert));
-$gr[1]->stamps( closed_circle($x2,$y2,'red') );
-$gr[1]->lb( new Label($x2,$y2,"$pt2",'red',$p2hor,$p2vert));
-
-$gr[1]->moveTo($x1,$y1);
-$gr[1]->lineTo($x2,$y1,'red',2);
-$gr[1]->lineTo($x2,$y2,'red',2);
-$gr[1]->lb( new Label(($x1+$x2)/2,$y1,"$run",'red','center','top'));
-$gr[1]->lb( new Label($x2,($y1+$y2)/2,"$rise",'red','left','middle'));
Context()->texStrings;
BEGIN_SOLUTION
@@ -165,7 +143,7 @@ To find the slope of a line from its graph, we first need to identify two points
Next, we sketch a slope triangle and find the $BITALIC rise$EITALIC and $BITALIC run$EITALIC. In the sketch below, the rise is \($rise\) and the run is \($run\).
$BCENTER
-\{ image( insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
+\{ image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
\}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg
index 3a86d9d321..e80caff2e5 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -38,7 +39,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = 0;
$b = non_zero_random(-4,4,1);
@@ -60,48 +61,48 @@ Context("Numeric");
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([3*$x2,0,$x1],[$m*3*$x2+$b,0,$y1]);
-@xticks = @$xticks_ref;
-@yticks = @$yticks_ref;
-
-my @ticksep;
-for my $i (0,1) {
- $ticksep[$i] = ($max[$i] - $min[$i])/$ticknum[$i];
-};
-
-#Make sure the grid lines cover the two points
-$scale[0] = 1;
-while ((Real($scale[0]*$x1 / $ticksep[0]) != Real(int($scale[0]*$x1 / $ticksep[0]))) or (Real($scale[0]*$x2 / $ticksep[0]) != Real(int($scale[0]*$x2 / $ticksep[0])))) {$scale[0] = $scale[0] + 1};
-$scale[1] = 1;
-while ((Real($scale[1]*$y1 / $ticksep[1]) != Real(int($scale[1]*$y1 / $ticksep[1]))) or (Real($scale[1]*$y2 / $ticksep[1]) != Real(int($scale[1]*$y2 / $ticksep[1])))) {$scale[1] = $scale[1] + 1};
-
-for my $i (0,1) {
- $ticknum[$i] = $ticknum[$i]*$scale[$i];
-};
-
-for my $i (0,1) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$ticknum[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','left','middle','large'));
- }
-
-($start,$stop) = ($min[0],$max[0])[1,2];
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($start,$mperl*$start+$b,'blue',1);
-$gr[$i]->moveTo($x1,$y1);
-$gr[$i]->arrowTo($stop,$mperl*$stop+$b,'blue',1);
-
-}
+TEXT(@$yticks_ref);
+$xticks = join(',',@$xticks_ref);
+$yticks = join(',',@$yticks_ref);
+
+$gr[0] = createTikZImage();
+$gr[0]->addToPreamble(latexImagePreamble());
+$gr[0]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$xticks},
+ minor ytick = {$yticks},
+ grid = minor,
+ ]
+ \addplot+[domain=$min[0]:$max[0]] {$m*x+$b};
+\end{axis}
+END_TIKZ
+
+$gr[1] = createTikZImage();
+$gr[1]->addToPreamble(latexImagePreamble());
+$gr[1]->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$xticks},
+ minor ytick = {$yticks},
+ grid = minor,
+ ]
+ \addplot+[domain=$min[0]:$max[0]] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[above left] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[above right] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
##############################################
@@ -115,7 +116,7 @@ END_PGML
BEGIN_TEXT
$PAR
$BCENTER
-\{image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line is horizontal and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line is horizontal and also passes through the point ($x2,$y2)"') \}
+\{image($gr[0], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt = "graph of a line crossing the y-axis at $b; the line is horizontal and also passes through the point ($x2,$y2)" title = "graph of a line crossing the y-axis at $b; the line is horizontal and also passes through the point ($x2,$y2)"') \}
$ECENTER
$PAR
END_TEXT
@@ -126,27 +127,6 @@ BEGIN_PGML
END_PGML
##############################################
-if ($m > 0)
-{$p1vert = 'bottom';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'left';}
-else {$p1vert = 'top';
- $p2vert = 'top';
- $p1hor = 'right';
- $p2hor = 'right';};
-
-$gr[1]->stamps( closed_circle($x1,$y1,'red') );
-$gr[1]->lb( new Label($x1,$y1,"$pt1",'red',$p1hor,$p1vert));
-$gr[1]->stamps( closed_circle($x2,$y2,'red') );
-$gr[1]->lb( new Label($x2,$y2,"$pt2",'red',$p2hor,$p2vert));
-
-$gr[1]->moveTo($x1,$y1);
-$gr[1]->lineTo($x2,$y1,'red',2);
-$gr[1]->lineTo($x2,$y2,'red',2);
-$gr[1]->lb( new Label(($x1+$x2)/2,$y1,"$run",'red','center','top'));
-$gr[1]->lb( new Label($x2,($y1+$y2)/2,"$rise",'red','left','middle'));
-
Context()->texStrings;
BEGIN_SOLUTION
@@ -158,7 +138,7 @@ To be more consistent with how you might approach problems like this that do not
Next, we sketch a slope triangle and find the $BITALIC rise$EITALIC and $BITALIC run$EITALIC. In the sketch below, the rise is \($rise\) and the run is \($run\).
$BCENTER
-\{ image( insertGraph($gr[1]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
+\{ image($gr[1], width=>300, tex_size=>TeXscalar(), extra_html_tags=>'alt="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)" title="graph of the line detailing a slope triangle from ($x1,$y1) to ($x2,$y1) to ($x2,$y2)"' )
\}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg
index 0a9b74e6b2..2b6f63afda 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg
@@ -39,7 +39,7 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = OneOf("DNE","NONE");
$a = non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg
index b8501ed062..2fac87ad4f 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = random(2,6,1);
do {$b = random(2,6,1);} until ($a!=$b);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg
index 03ba7a9efd..2b10250488 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = random(2,6,1);
do {$b = random(2,6,1);} until ($a!=$b);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg
index 4c07803d78..5cf768fd65 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = random(2,6,1);
do {$b = random(2,6,1);} until ($a!=$b);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg
index b468f2435c..8872a6e797 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = random(2,6,1);
do {$b = random(2,6,1);} until ($a!=$b);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg
index eccd9065ea..12317ec53c 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = 1;
$b = non_zero_random(-6,6,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg
index 74b17d7a33..d4ae170c06 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$a = non_zero_random(2,6,1);
$b = 1;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg
index 59e7aa6d23..cc9d5c9c09 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m=random(2,5,1);
@ar_m = ($m,1/$m,2*$m,$m-1,$m);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg
index a9ac740bca..fc070f8c0b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m= -random(2,5,1);
@ar_m = ($m,$m+1,-$m,-1/$m,$m);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg
index c38720869b..0d3a8ead0e 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m=random(2,5,1);
$b=non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg
index e7465fa348..e871e8605f 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m= -random(2,5,1);
$b=non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg
index 9607760579..11d0fda32d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m=1;
do {$b=non_zero_random(-4,4,1)} until ($b != 1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg
index 5b3ed085fc..080c7fb2dd 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m= -1;
do {$b=non_zero_random(-4,4,1)} until ($b != -1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg
index a1ff377479..1ceee82779 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$num = random(1,5,1);
do {$den=random(2,5,1);} until (gcd($num,$den)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg
index b33c905575..d27dd56cee 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
-$refreshCachedImages=1;
+
Context("Fraction");
$num = -random(1,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg
index 79b7ec0a9b..e149df8554 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m=random(2,5,1);
@ar_m = ($m,$m+1,-$m,-$m-1,$m);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg
index f4adda4085..aeb0934edf 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = 0;
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg
index b0cbf8e303..3df129f5e2 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = 0;
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg
index cc5d667522..6db7516433 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m= -random(2,5,1);
@ar_m = ($m,$m+1,-$m,-$m-1,$m);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg
index 0c56a03495..de4ba45fae 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num = random(2,9,1);
do {$den = random(2,9,1);} until (gcd($num,$den)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints35.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints35.pg
index b6483e2569..c12e18ce62 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints35.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints35.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num = 3;
$den = 1;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg
index c21fabe695..12f82bd3f1 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num = 1;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg
index 1f0be36357..a828b22db8 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m=random(2,5,1);
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg
index 44091cd5ad..b8a37069a0 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m=-random(2,5,1);
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints70.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints70.pg
index e8cd72efb8..7f6b415adb 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints70.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints70.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num = 2;
$den = 1;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg
index 9a6a122ad7..d031f76359 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Fraction");
-$refreshCachedImages=1;
+
$num = 2;
$den = 1;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg
index b06b9918b9..31a588afd2 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = 0;
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg
index 76854d38ba..5e59a9757d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$m = 0;
$b=non_zero_random(-5,5,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg
index 8492227945..a7663289d7 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8,8,1);
do {$y = non_zero_random(-8,8,1);} until (abs($x)!=abs($y));
@@ -200,7 +200,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8,8,1);
do {$y = non_zero_random(-8,8,1);} until (abs($x)!=abs($y));
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg
index 37ab89db80..6d1e740eff 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8,8,1);
$y = 0;
@@ -197,7 +197,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8,8,1);
#do {$y = non_zero_random(-8,8,1);} until (abs($x)!=abs($y));
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg
index 85bde7a281..af4d0a70bc 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$x = 0;
$y = non_zero_random(-8,8,1);
@@ -197,7 +197,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$x = 0;
#do {$y = non_zero_random(-8,8,1);} until (abs($x)!=abs($y));
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg
index cf1e3bc723..e92ab2d542 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8.5,8.5,1);
do {$y = non_zero_random(-8.5,8.5,1);} until (abs($x)!=abs($y));
@@ -202,7 +202,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$x = non_zero_random(-8.5,8.5,1);
do {$y = non_zero_random(-8.5,8.5,1);} until (abs($x)!=abs($y));
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs50.pg
index 09e9cee43c..ab67bdb390 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs50.pg
@@ -36,7 +36,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$px1 = random(3,8,1)*random(-1,1,2);
$py1 = random(3,8,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotDouble.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotDouble.pg
new file mode 100644
index 0000000000..e9be9f3156
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotDouble.pg
@@ -0,0 +1,68 @@
+# Plot a point where one coordinate is doubled from a given plotted point.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric");
+
+@xy = (1..7)[NchooseK(7,2)];
+$point = Point(@xy);
+$reflection = list_random(
+ ['first',Point(2*$xy[0],$xy[1])],
+ ['second',Point($xy[0],2*$xy[1])]
+);
+
+$gt = GraphTool("{point,$reflection->[1]}")->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-1, 15, 15, -1],
+ staticObjects => [ "{point,$point}"],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $score = 0;
+ my @errors;
+ my $count = 0;
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) eq $correct->[0]->extract(1) && $j->extract(2) eq $correct->[0]->extract(2)) {
+ $score += 1;
+ next;
+ }
+ push(@errors, "The $nth plotted point is incorrect.");
+ }
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+A point is plotted. Graph the point that comes from doubling the [@$reflection->[0]@] coordinate.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMX.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMX.pg
new file mode 100644
index 0000000000..071ea3d870
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMX.pg
@@ -0,0 +1,96 @@
+# Plot y = mx for positive integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+$m = random(2,7,1);
+($h,$k) = (0,0);
+($u,$v) = ($h+1,$k+$m);
+
+Context("Numeric");
+$f = Formula("$m x")->reduce;
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMXPlusB.pg
new file mode 100644
index 0000000000..ff0b113fe3
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerMXPlusB.pg
@@ -0,0 +1,102 @@
+# Plot y = mx+b for positive integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([2..7],[1]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerPointSlope.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerPointSlope.pg
new file mode 100644
index 0000000000..59c9658157
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotIntegerPointSlope.pg
@@ -0,0 +1,104 @@
+# Plot y = m(x-h)+k for positive integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+do {
+ ($rise,$run) = random_coprime([2..7],[1]);
+ Context("Fraction");
+ $m = Fraction($rise,$run);
+ ($h,$k) = (-7..-1,1..7)[NchooseK(14,2)];
+ ($u,$v) = ($h+$run,$k+$rise);
+ ($p,$q) = ($h-$run,$k-$rise);
+ Context()->flags->set(reduceConstants=>0);
+ $f = Formula("$m (x - $h) + $k")->reduce;
+ $b = $f->eval(x=>0);
+} until (abs($b) > 8 && ((abs($u) < 8 && abs($v) < 8) || (abs($p) < 8 && abs($q) < 8)));
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`] by identifying the slope and one point on the line.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMX.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMX.pg
new file mode 100644
index 0000000000..dfc4ece4ad
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMX.pg
@@ -0,0 +1,101 @@
+# Plot y = mx for positive fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([1..7],[2..7]);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,0);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+$f = Formula("$m x");
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMXPlusB.pg
new file mode 100644
index 0000000000..785f5a0bf5
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotMXPlusB.pg
@@ -0,0 +1,102 @@
+# Plot y = mx+b for positive fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([1..7],[2..7]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMX.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMX.pg
new file mode 100644
index 0000000000..d51eb91ee3
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMX.pg
@@ -0,0 +1,96 @@
+# Plot y = mx for negative integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+$m = -random(2,7,1);
+($h,$k) = (0,0);
+($u,$v) = ($h+1,$k+$m);
+
+Context("Numeric");
+$f = Formula("$m x")->reduce;
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMXPlusB.pg
new file mode 100644
index 0000000000..2f62231f58
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerMXPlusB.pg
@@ -0,0 +1,103 @@
+# Plot y = mx+b for negative integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([-7..-2],[1]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+Context()->noreduce('(-x)+y','(-x)-y');
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerPointSlope.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerPointSlope.pg
new file mode 100644
index 0000000000..6259850cbb
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegIntegerPointSlope.pg
@@ -0,0 +1,105 @@
+# Plot y = m(x-h)+k for negative integer m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+do {
+ ($rise,$run) = random_coprime([-7..-2],[1]);
+ Context("Fraction");
+ $m = Fraction($rise,$run);
+ ($h,$k) = (-7..-1,1..7)[NchooseK(14,2)];
+ ($u,$v) = ($h+$run,$k+$rise);
+ ($p,$q) = ($h-$run,$k-$rise);
+ Context()->flags->set(reduceConstants=>0);
+ Context()->noreduce('(-x)-y','(-x)+y');
+ $f = Formula("$m (x - $h) + $k")->reduce;
+ $b = $f->eval(x=>0);
+} until (abs($b) > 8 && ((abs($u) < 8 && abs($v) < 8) || (abs($p) < 8 && abs($q) < 8)));
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`] by identifying the slope and one point on the line.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMX.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMX.pg
new file mode 100644
index 0000000000..18ebf85961
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMX.pg
@@ -0,0 +1,101 @@
+# Plot y = mx for negative fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([-7..-1],[2..7]);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,0);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+$f = Formula("$m x");
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMXPlusB.pg
new file mode 100644
index 0000000000..efd529f6a4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegMXPlusB.pg
@@ -0,0 +1,103 @@
+# Plot y = mx+b for negative fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([-7..-1],[2..7]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+Context()->noreduce('(-x)+y','(-x)-y');
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegPointSlope.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegPointSlope.pg
new file mode 100644
index 0000000000..1625773d8f
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegPointSlope.pg
@@ -0,0 +1,104 @@
+# Plot y = m(x-h)+k for negative fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+do {
+ ($rise,$run) = random_coprime([-7..-1],[2..7]);
+ Context("Fraction");
+ $m = Fraction($rise,$run);
+ ($h,$k) = (-7..-1,1..7)[NchooseK(14,2)];
+ ($u,$v) = ($h+$run,$k+$rise);
+ ($p,$q) = ($h-$run,$k-$rise);
+ Context()->flags->set(reduceConstants=>0);
+ $f = Formula("$m (x - $h) + $k")->reduce;
+ $b = $f->eval(x=>0);
+} until (int($b) != $b && ((abs($u) < 8 && abs($v) < 8) || (abs($p) < 8 && abs($q) < 8)));
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`] by identifying the slope and one point on the line.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegSlopeThroughPoint.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegSlopeThroughPoint.pg
new file mode 100644
index 0000000000..d67d0d091a
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegSlopeThroughPoint.pg
@@ -0,0 +1,101 @@
+# Plot a line of a given negative fraction slope that passes through a given
+# point in [-3,3]x[-3,3].
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise, $run) = random_coprime([-5..-1],[2..5]);
+($h,$k) = (-3..-1,1..3)[NchooseK(6,2)];
+($u,$v) = ($h+$run,$k+$rise);
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ push(@errors, "The $nth plotted line does not pass through $A.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot a line through the point [`[$A]`] that has slope [`[$m]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegXPlusB.pg
new file mode 100644
index 0000000000..9f7bc809d3
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotNegXPlusB.pg
@@ -0,0 +1,103 @@
+# Plot y = -x+b
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([-1],[1]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+Context()->noreduce('(-x)+y','(-x)-y');
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotPointSlope.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotPointSlope.pg
new file mode 100644
index 0000000000..943a525e1e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotPointSlope.pg
@@ -0,0 +1,104 @@
+# Plot y = m(x-h)+k for positive fraction m
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+do {
+ ($rise,$run) = random_coprime([1..7],[2..7]);
+ Context("Fraction");
+ $m = Fraction($rise,$run);
+ ($h,$k) = (-7..-1,1..7)[NchooseK(14,2)];
+ ($u,$v) = ($h+$run,$k+$rise);
+ ($p,$q) = ($h-$run,$k-$rise);
+ Context()->flags->set(reduceConstants=>0);
+ $f = Formula("$m (x - $h) + $k")->reduce;
+ $b = $f->eval(x=>0);
+} until (int($b) != $b && ((abs($u) < 8 && abs($v) < 8) || (abs($p) < 8 && abs($q) < 8)));
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`] by identifying the slope and one point on the line.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotReflection.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotReflection.pg
new file mode 100644
index 0000000000..9c0a22ebc6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotReflection.pg
@@ -0,0 +1,68 @@
+# Plot a point where one coordinate is negated from a given plotted point.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric");
+
+@xy = (1..7)[NchooseK(7,2)];
+$point = Point(@xy);
+$reflection = list_random(
+ ['first',Point(-$xy[0],$xy[1])],
+ ['second',Point($xy[0],-$xy[1])]
+);
+
+$gt = GraphTool("{point,$reflection->[1]}")->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ staticObjects => [ "{point,$point}"],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $score = 0;
+ my @errors;
+ my $count = 0;
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) eq $correct->[0]->extract(1) && $j->extract(2) eq $correct->[0]->extract(2)) {
+ $score += 1;
+ next;
+ }
+ push(@errors, "The $nth plotted point is incorrect.");
+ }
+ return ($score, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+A point is plotted. Graph the point that comes from negating the [@$reflection->[0]@] coordinate.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotRelation.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotRelation.pg
new file mode 100644
index 0000000000..77c24359d4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotRelation.pg
@@ -0,0 +1,75 @@
+# Plot four points with a simple linear relation.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric");
+
+my $b = non_zero_random(-7,7,1);
+$absb = abs($b);
+$cmp = ($b > 0) ? 'more' : 'less';
+$minx = max(-8,-8-$b);
+$maxx = min(8,8-$b);
+@point = map {Point($_,$_+$b)} ($minx..$maxx);
+$points = '{point,'.join('},{point,',@point).'}';
+
+$gt = GraphTool($points)->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my $extra = 0;
+ my $distinct = 0;
+ my @errors;
+ my $count = 0;
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ if ($j->extract(1) ne 'point' || ($j->extract(2)->value)[1] != ($j->extract(2)->value)[0] + $b) {
+ push(@errors, "The $nth plotted point is incorrect.");
+ $extra++;
+ next STUDENTS;
+ }
+ for my $i (0..($count-2)) {
+ next STUDENTS if ($j->extract(1) eq $student->[$i]->extract(1) && $j->extract(2) eq $student->[$i]->extract(2));
+ }
+ $distinct++;
+ }
+ push(@errors, "You've only plotted $distinct correct point".(($distinct > 1)?'s':'').".") if ($distinct > 0 && $distinct < 4);
+ return (scalar(@{$correct})*min($distinct,4)/4/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Graph at least four distinct points where the [`y`]-coordinate is [`[$absb]`] [$cmp] than the [`x`]-coordinate.
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlope.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlope.pg
new file mode 100644
index 0000000000..bff33a7468
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlope.pg
@@ -0,0 +1,103 @@
+# Plot three lines that each have the given slope.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise, $run) = random_coprime([1..5],[2..5]);
+
+Context("Numeric");
+@A = ();
+for my $x (-8..(8-$run)) {
+ for my $y (-8..(-9+$rise)) {
+ push(@A, Point($x,$y));
+ }
+}
+for my $x (-8..(-9+$run)) {
+ for my $y ((-8+$rise)..(8-$rise)) {
+ push(@A, Point($x,$y));
+ }
+}
+%B = map{$_ => $_+Point($run,$rise)}(@A);
+@gtlines = map{'{line,solid,' . $_ . ',' . $B{$_} .'}'} (@A);
+
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+
+$gt = GraphTool(join(',',@gtlines))->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $extra = 0;
+ my $distinct = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ push(@errors, "You've only plotted $distinct correct line".(($distinct > 1)?'s':'').".") if ($distinct > 0 && $distinct < 3);
+ return (scalar(@{$correct})*min($distinct,3)/3/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot at least three lines that each have slope [`[$m]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlopeThroughPoint.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlopeThroughPoint.pg
new file mode 100644
index 0000000000..c3de374901
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSlopeThroughPoint.pg
@@ -0,0 +1,101 @@
+# Plot a line of a given positive fraction slope that passes through a given
+# point in [-3,3]x[-3,3].
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise, $run) = random_coprime([1..5],[2..5]);
+($h,$k) = (-5..-1,1..3)[NchooseK(8,2)];
+($u,$v) = ($h+$run,$k+$rise);
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ push(@errors, "The $nth plotted line does not pass through $A.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot a line through the point [`[$A]`] that has slope [`[$m]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSmallPoints.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSmallPoints.pg
new file mode 100644
index 0000000000..62757a183f
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotSmallPoints.pg
@@ -0,0 +1,74 @@
+# Plot four points on the [-7,7]x[-7,7] plane.
+# One in each quadrant, except one moved onto an axis.
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserGraphTool.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+Context("Numeric");
+
+@xy = (0..7)[NchooseK(8,8)];
+$point[0] = Point($xy[0],$xy[1]);
+$point[1] = Point(-$xy[2],$xy[3]);
+$point[2] = Point($xy[4],-$xy[5]);
+$point[3] = Point(-$xy[6],-$xy[7]);
+@point = (@point)[NchooseK(4,4)];
+
+$gt = GraphTool("{point,$point[0]},{point,$point[1]},{point,$point[2]},{point,$point[3]}")->with(
+ availableTools => ["PointTool"],
+ showCoordinateHints => 0,
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ my @score = (0,0,0,0);
+ my @errors;
+ my $count = 0;
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+ for my $i (0..3) {
+ if ($j->extract(1) eq $correct->[$i]->extract(1) && $j->extract(2) eq $correct->[$i]->extract(2)) {
+ $score[$i] += 1;
+ next STUDENTS;
+ }
+ }
+ push(@errors, "The $nth plotted point is incorrect.");
+ }
+ my $numerator = ($score[0] ? 1 : 0) + ($score[1] ? 1 : 0) + ($score[2] ? 1 : 0) + ($score[3] ? 1 : 0);
+ push(@errors, "You have only plotted $numerator of the given points.") if ($numerator > 0 && $numerator < 4);
+ my $denominator = 4 + $count - ($score[0] + $score[1] + $score[2] + $score[3]);
+ return ($numerator/$denominator*$count, @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Graph the points [`[$point[0]]`], [`[$point[1]]`], [`[$point[2]]`], and [`[$point[3]]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotXPlusB.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotXPlusB.pg
new file mode 100644
index 0000000000..d3c0777d53
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/PlotXPlusB.pg
@@ -0,0 +1,102 @@
+# Plot y = x+b
+# Author: Alex Jordan
+
+###################################################################################
+# Setup and Macros
+###################################################################################
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserGraphTool.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+###################################################################################
+# Variables and Formulas
+###################################################################################
+TEXT(beginproblem());
+
+($rise,$run) = random_coprime([1],[1]);
+$b = non_zero_random(-7,7);
+
+Context("Fraction");
+$m = Fraction($rise,$run);
+($h,$k) = (0,$b);
+($u,$v) = ($h+$run,$k+$rise);
+Context()->flags->set(reduceConstants=>0);
+$f = Formula("$m x+$b")->reduce;
+
+Context("Numeric");
+$A = Point($h,$k);
+$B = Point($u,$v);
+
+
+$gt = GraphTool("{line,solid,$A,$B}")->with(
+ availableTools => ["LineTool"],
+ bBox => [-8, 8, 8, -8],
+ cmpOptions => {
+ list_checker => sub {
+ my ($correct, $student, $ans, $value) = @_;
+ return 0 if $ans->{isPreview};
+
+ my @errors;
+ my $count = 0;
+ my $distinct = 0;
+ my $extra = 0;
+
+ STUDENTS:
+ for my $j (@$student) {
+ my $nth = Value::List->NameForNumber(++$count);
+
+ my ($p1x, $p1y) = $j->extract(3)->value;
+ my ($p2x, $p2y) = $j->extract(4)->value;
+ if ($p1x == $p2x) {
+ push(@errors, "The $nth plotted line is a vertical line, and therefore does not have slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ my $context = Context();
+ Context("Fraction");
+ my $slope = Fraction($p2y - $p1y, $p2x - $p1x);
+ Context($context);
+ if ($slope != $m) {
+ push(@errors, "The $nth plotted line has slope $slope, not slope $m.");
+ $extra++;
+ next STUDENTS;
+ }
+
+ if ($k != $slope*($h - $p1x) + $p1y) {
+ $extra++;
+ next STUDENTS;
+ }
+
+ for my $i (0..($count-2)) {
+ my ($x,$y) = $student->[$i]->extract(3)->value;
+ next STUDENTS if ($y == $m*($x - $p1x) + $p1y);
+ }
+ $distinct++;
+ }
+ return (max(scalar(@{$correct}),scalar(@{$student}))*min($distinct,1)/1/(($extra)?2:1), @errors);
+ }
+ }
+);
+
+###################################################################################
+# Main Text
+###################################################################################
+
+BEGIN_PGML
+Plot [`y=[$f]`].
+
+[_]{$gt}
+END_PGML
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant20.pg
index 43fc4683f3..690ab5ba5b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant20.pg
@@ -28,14 +28,15 @@ loadMacros(
"MathObjects.pl",
"PGML.pl",
"parserPopUp.pl",
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PCCgraphMacros.pl",
"PGcourse.pl",
);
##############################################
-$refreshCachedImages=1;
+
Context("Numeric");
@conditions = (
@@ -73,49 +74,33 @@ $ymark = 2;
$shift = 0.2;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
- axes=>[0,0],
- grid=>[($xmax-$xmin)/$xmark,($ymax-$ymin)/$ymark],
- size=>[xPixels(),yPixels()]
-);
-
-$gr->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- if (Real($j) == 0) {$gr->lb( new Label(0.1, -0.1, ' '.$j,'black','left','top'));}
- else {$gr->lb( new Label($j, -0.1, $j,'black','center','top'));}
-}
-for ($j=$ymin+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $gr->lb( new Label(0, $j,' '.$j,'black','left','middle'));
-}
-$gr->lb( new Label($xmax, $shift, "x ",'black','right','bottom'));
-$gr->lb( new Label(0, $ymax-$shift, " y",'black','left','top'));
-
-$sample1 = 3;
-$sample2 = 5;
-$sample3 = 6;
-$gr->stamps(closed_circle($sample1,$sample1,'blue'));
-$gr->stamps(closed_circle(-$sample1,$sample1,'blue'));
-$gr->stamps(closed_circle(-$sample1,-$sample1,'blue'));
-$gr->stamps(closed_circle($sample1,-$sample1,'blue'));
-$gr->stamps(closed_circle(0,$sample2,'blue'));
-$gr->stamps(closed_circle(0,-$sample2,'blue'));
-$gr->stamps(closed_circle($sample2,0,'blue'));
-$gr->stamps(closed_circle(-$sample2,0,'blue'));
-
-$gr->lb( new Label($sample1, $sample1+$shift, "($sample1,$sample1)",'blue','center','bottom'));
-$gr->lb( new Label(-$sample1, $sample1+$shift, "(-$sample1,$sample1)",'blue','center','bottom'));
-$gr->lb( new Label(-$sample1, -$sample1-$shift, "(-$sample1,-$sample1)",'blue','center','top'));
-$gr->lb( new Label($sample1, -$sample1-$shift, "($sample1,-$sample1)",'blue','center','top'));
-$gr->lb( new Label(-$shift, $sample2, "(0,$sample2)",'blue','right','middle'));
-$gr->lb( new Label(-$shift, -$sample2, "(0,-$sample2)",'blue','right','middle'));
-$gr->lb( new Label($sample2, $shift, "($sample2,0)",'blue','center','bottom'));
-$gr->lb( new Label(-$sample2, $shift, "(-$sample2,0)",'blue','center','bottom'));
-
-$gr->lb( new Label($sample3, $sample3, "Quadrant I",'red','right','middle'));
-$gr->lb( new Label(-$sample3, $sample3, "Quadrant II",'red','left','middle'));
-$gr->lb( new Label(-$sample3, -$sample3, "Quadrant III",'red','left','middle'));
-$gr->lb( new Label($sample3, -$sample3, "Quadrant IV",'red','right','middle'));
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ ]
+ \addplot[soliddot] coordinates {(5,0)} node[above] {\((5,0)\)};
+ \addplot[soliddot] coordinates {(3,3)} node[above] {\((3,3)\)};
+ \addplot[soliddot] coordinates {(0,5)} node[right] {\((0,5)\)};
+ \addplot[soliddot] coordinates {(-3,3)} node[above] {\((-3,3)\)};
+ \addplot[soliddot] coordinates {(-5,0)} node[above] {\((-5,0)\)};
+ \addplot[soliddot] coordinates {(-3,-3)} node[above] {\((-3,-3)\)};
+ \addplot[soliddot] coordinates {(0,-5)} node[right] {\((0,-5)\)};
+ \addplot[soliddot] coordinates {(3,-3)} node[above] {\((3,-3)\)};
+ \node[above left] at (axis cs: 6,6) {Quadrant I};
+ \node[above right] at (axis cs: -6,6) {Quadrant II};
+ \node[below right] at (axis cs: -6,-6) {Quadrant III};
+ \node[below left] at (axis cs: 6,-6) {Quadrant IV};
+\end{axis}
+END_TIKZ
$alt = "This is a coordinate system with the x-axis and y-axis. The following points are marked and labeled: ($sample1, $sample1) in Quadrant I, (-$sample1, $sample1) in Quadrant II, (-$sample1, -$sample1) in Quadrant III, ($sample1, -$sample1) in Quadrant IV, ($sample2, 0) and (-$sample2, 0) on the x-axis, and (0, $sample2) and (0, -$sample2) on the y-axis.";
@@ -161,17 +146,17 @@ The following graph has some points and their coordinates. They should help you
The correct answers are:
- For the point [`(x,y)`], if [$conditions[$scramble{0}][0]], then the point is in/on [@$popup0->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{0}][0]]`], then the point is in/on [@$popup0->correct_ans()@]*.
- For the point [`(x,y)`], if [$conditions[$scramble{1}][0]], then the point is in/on [@$popup1->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{1}][0]]`], then the point is in/on [@$popup1->correct_ans()@]*.
- For the point [`(x,y)`], if [$conditions[$scramble{2}][0]], then the point is in/on [@$popup2->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{2}][0]]`], then the point is in/on [@$popup2->correct_ans()@]*.
- For the point [`(x,y)`], if [$conditions[$scramble{3}][0]], then the point is in/on [@$popup3->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{3}][0]]`], then the point is in/on [@$popup3->correct_ans()@]*.
- For the point [`(x,y)`], if [$conditions[$scramble{4}][0]], then the point is in/on [@$popup4->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{4}][0]]`], then the point is in/on [@$popup4->correct_ans()@]*.
- For the point [`(x,y)`], if [$conditions[$scramble{5}][0]], then the point is in/on [@$popup5->correct_ans()@]*.
+ For the point [`(x,y)`], if [`[$conditions[$scramble{5}][0]]`], then the point is in/on [@$popup5->correct_ans()@]*.
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant30.pg
index c857d173ab..47cb2a4188 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/Quadrant30.pg
@@ -33,7 +33,7 @@ loadMacros(
##############################################
-$refreshCachedImages=1;
+
Context("Numeric");
@conditions = (
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg
index 5075da55d4..7d00bf5474 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m= -1;
do {$b=non_zero_random(-4,4,1)} until ($b != -1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg
index f491c864ae..c9160504b2 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$a= random(2,6,1);
do {$d= -random(2,6,1);} until (gcd($a,$d)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg
index fc8f10b1d9..bada7227d6 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$a= -random(2,6,1);
do {$d= -random(2,6,1);} until (gcd($a,$d)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg
index 31e11fe4ce..5fd8a4fecb 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$a=random(2,6,1);
do {$d=random(2,6,1)*random(-1,1,2);} until (gcd($a,$d)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg
index 823e5cc286..c770bf2df5 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
Context("Numeric");
-$refreshCachedImages=1;
+
$m=1;
do {$b=non_zero_random(-4,4,1)} until ($b != 1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg
index b4bb5ca62a..db256c8846 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$m=random(2,5,1)*random(-1,1,2);
do {$b=non_zero_random(-4,4,1)} until ($b != $m);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg
index 688cb400b8..072bb4e11c 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$m=random(2,5,1)*random(-1,1,2);
$b=non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg
index a6855053ae..be65e9dfd5 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$d=random(2,5,1);
$c=non_zero_random(-3,3,1)*$d;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg
index f90e8e8a68..4e47491424 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$d= -random(2,5,1);
$c=non_zero_random(-3,3,1)*$d;
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg
index df24eec84c..22a1c2cf5d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
#ax+dy=c
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg
index 67b0ed7641..9db6ae138b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$a=random(2,6,1);
do {$d=random(2,6,1);} until (gcd($a,$d)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg
index 74e0861fec..f2113847c4 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Fraction");
-$refreshCachedImages=1;
+
$a= -random(2,6,1);
do {$d=random(2,6,1);} until (gcd($a,$d)==1);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg
index 10c5b63d8e..4528a91f93 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=ax^2.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg
index a47b5e6961..056500d3f1 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=ax^2.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20ORCCACheckpoint.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20ORCCACheckpoint.pg
index 99cc85461c..58637cbafd 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20ORCCACheckpoint.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20ORCCACheckpoint.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=ax^2.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg
index 86620ae90d..9d8f655c64 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg
@@ -44,7 +44,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=(x+a)^2.
#$gr[0] shows y=(x+a)^2
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg
index 00eae18555..bb2c9a79a5 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg
index 0180a2185d..6fc8f5e710 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=ax^2.
#$a[0], $b[0], $c[0] are used in the correct graph.
@@ -199,12 +199,12 @@ for ($i=0;$i<=4;$i++) {
$gr[$i]->lb( new Label($xmin, $ymax, ' '.$ALPHABET[$inverse{$i}], 'black', 'left', 'top')) unless ($i==4);
add_functions($gr[$i], "$a[$i]*x**2+$b[$i]*x+$c[$i] for x in <$xmin,$xmax> using color:red and weight:1");
- $xpoint1 = $xmin;
+ $xpoint1 = $xmin+1;
$xpoint2 = 0;
- $xpoint3 = $xmax;
- $ypoint1 = $xpoint1**2 + $a[$i]*$xpoint1;
- $ypoint2 = $xpoint2**2 + $a[$i]*$xpoint2;
- $ypoint3 = $xpoint3**2 + $a[$i]*$xpoint3;
+ $xpoint3 = $xmax-1;
+ $ypoint1 = $a[$i]*($xpoint1)**2 + $b[$i]*$xpoint1 + $c[$i];
+ $ypoint2 = $a[$i]*($xpoint2)**2 + $b[$i]*$xpoint2 + $c[$i];
+ $ypoint3 = $a[$i]*($xpoint3)**2 + $b[$i]*$xpoint3 + $c[$i];
if($i==4)
{
push(@alt,"Graph $ALPHABET[$inverse{0}]: graph of a parabola passing through the points ($xpoint1,$ypoint1), ($xpoint2,$ypoint2) and ($xpoint3,$ypoint3). Its vertex is $vertex[$i].");
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg
index 24f319e6e9..e138933754 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg
index 9481f0b2b4..e88c921bc2 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a and b in y= -(x+a)^2+b.
#$a[0], b[0] are the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg
index 3471d23f52..7e7865bf13 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Fraction");
@a=();
@@ -54,7 +54,7 @@ $a[3] = $a[0];
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of b in y=ax^2+b.
#b[0] is in the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg
index 16ec9e5eae..cb6bdf3e83 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg
@@ -43,7 +43,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of b in y=ax^2+b.
#a[0],b[0] is in the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg
index e78d18090e..18642e1179 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#These arrays store value of a,h,k in y= a(x+h)^2+k.
# [0] are used in the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg
index 55fbbf6b84..ed2ef98780 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg
index db61db84d4..4e97f26375 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg
index 3eea15cb7e..0b16411d5e 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg
index 7190021120..d39d1860b0 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg
index 43ab7aeff7..7ffbf1f31f 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg
index bfe4aeae1a..1ecc64f58d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg
index 97de839c73..4e1b818bfa 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a in y=x^2+a.
#$a[0] is the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg
index 3cfb3c215b..1e3d7e7b21 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg
@@ -41,7 +41,7 @@ Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#This array stores value of a and b in y=(x+a)^2+b.
#$a[0], b[0] are the correct graph. The others are used in wrong graphs.
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola10.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola10.pg
index be5cc9f358..e08a53021b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola10.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola10.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola100.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola100.pg
index 84cdd5b942..b0fcad24b0 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola100.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola100.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola110.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola110.pg
index c7e9acfbf2..bc3320657b 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola110.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola110.pg
@@ -45,7 +45,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola20.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola20.pg
index f184db7620..427225a133 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola20.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola20.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola30.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola30.pg
index 3ab6aec30a..09de1c1cbb 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola30.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola30.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola40.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola40.pg
index 7ee53b0c3f..b0f4bec02f 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola40.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola40.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola50.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola50.pg
index 992977f6a8..6a45166a03 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola50.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola50.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola60.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola60.pg
index 3d1e82e487..c4ce55540e 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola60.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola60.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola70.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola70.pg
index 71de0e5c51..97a06de0a6 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola70.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola70.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola80.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola80.pg
index e48c37776f..efde14626d 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola80.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola80.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola90.pg b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola90.pg
index 9dc7d9b480..92abd899d9 100644
--- a/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola90.pg
+++ b/Contrib/PCC/BasicAlgebra/GraphingQuadratics/SketchParabola90.pg
@@ -44,7 +44,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation100.pg b/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation100.pg
index fbbea114ad..aee768fb33 100644
--- a/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation100.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation100.pg
@@ -28,6 +28,7 @@ loadMacros(
"MathObjects.pl",
"PGML.pl",
"parserImplicitPlane.pl",
+ "parserNumberWithUnits.pl",
"contextTypeset.pl",
"PGcourse.pl",
);
@@ -39,13 +40,15 @@ Context()->variables->are(h=>"Real");
Context()->flags->set(reduceConstants=>0);
Context()->flags->set(showExtraParens=>0);
-$base1 = random(1,2,0.5)*12;
-$base2 = random(1,2,0.5)*12;
-$height = random(1,2,0.5)*12;
-$volume = $base1*$base2*$height/1728;
-$volumeInch = $volume*1728;
+$base1 = random(1,2,0.1);
+$base2 = Round($base1*1.6,1);
+$b1U = NumberWithUnits("$base1 ft");
+$b2U = NumberWithUnits("$base2 ft");
+$volume = Round($base1*$base2*random(0.25,0.75,0.05));
+$vU = NumberWithUnits("$volume ft^3");
+$height = $volume/($base1*$base2);
-$ansString = "$base1*$base2*h=$volumeInch";
+$ansString = "$volume=$base1*$base2*h";
$ans = Compute("$ansString");
@@ -55,9 +58,9 @@ TEXT(beginproblem());
BEGIN_PGML
-A cat litter box has a rectangular base that is [`[$base1]`] inches by [`[$base2]`] inches. What will the height of the cat litter be if [`[$volume]`] cubic feet of cat litter is poured? (Hint: [`1 \text{ ft}^3 = 1728 \text{ in}^3`])
+The base of a cat litter box is [`[$b1U]`] by [`[$b2U]`]. What will be the height of the cat litter if [`[$vU]`] of cat litter is poured? (The volume of a rectangular box is [`wdh`], where [`w`] is the width, [`d`] is the depth, and [`h`] is the height.)
-Assume [`h`] inches will be the height of the cat litter if [`[$volume]`] cubic feet of cat litter is poured. Write an equation to model this scenario. There is no need to solve it.
+Let [`h`] be the number of ft high that the cat litter will occupy if [`[$vU]`] of cat litter is poured. Write an equation to model this scenario. There is no need to solve it.
[_________________________]
@@ -91,13 +94,9 @@ The volume of a rectangular prism can be calculated by the formula:
[``\text{Volume}=\text{base1}\cdot\text{base2}\cdot\text{height}``]
-In this problem, we must first convert all units to the same. It's easier to convert [`[$volume]`] cubic feet to cubic inches:
+So we can write an equation based on the volume formula:
- [``[$volume]\text{ ft}^3\cdot\frac{1728\text{ in}^3}{1\text{ ft}^3}=[$volume]\cdot1728\text{ in}^3=[$volumeInch]\text{ in}^3``]
-
-Next, we can write an equation based on the volume formula:
-
- [``[$base1]\cdot[$base2]h=[$volumeInch]``]
+ [``[$volume]=[$base1]\cdot[$base2]h``]
END_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithInequality140.pg b/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithInequality140.pg
index 5a3a019415..e042e7dc1d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithInequality140.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithInequality140.pg
@@ -96,8 +96,8 @@ $evaluator = $ans->cmp(
Value::Error('Write an inequality, not an equation.') if ($sign eq '=');
Value::Error('Your inequality is not using the correct sign.') if ($sign eq '<' or $sign eq '>');
# distinguish between good/bad uses of >=/<=
- my $left = Formula($student->{tree}->{lop})->eval(h=>0);
- my $right = Formula($student->{tree}->{rop})->eval(h=>0);
+ my $left = Formula($student->{tree}->{lop})->eval(h=>10);
+ my $right = Formula($student->{tree}->{rop})->eval(h=>10);
$OK = ($sign eq '>=') ? ($left >= $right) : ($left <= $right);
Value::Error('Your inequality is not using the correct sign.') unless ($OK);
return $OK;
diff --git a/Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints60.pg b/Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints60.pg
index 550e148645..35ea86380d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints60.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints60.pg
@@ -95,12 +95,12 @@ Context("Numeric");
Context()->flags->set(reduceConstants=>0);
Context()->noreduce('(-x)-y','(-x)+y');
$fname = 'P';
-Context()->variables->add(t=>'Real');
+Context()->variables->are(t => 'Real');
parser::Assignment->Allow;
parser::Assignment->Function("$fname");
$m = Real(($b[1] - $b[0])/($a[1] - $a[0]));
$yint = $b[0] - $m*$a[0];
-$f = Formula("$fname(x) = $m x + $yint")->reduce;
+$f = Formula("$fname(t) = $m t + $yint")->reduce;
############################################################
# Body
@@ -138,19 +138,19 @@ To find the equation of [`[$fname](t)=m t+b`], we first try to find the line's s
By the given conditions, the line passes the points [`([$a[0]],[$b[0]])`] and [`([$a[1]],[$b[1]])`]. We will use the slope formula:
- [`` \text{slope}=\frac{y_{2}-y_{1}}{x_{2}-x_{1}} ``]
+ [`` \text{slope}=\frac{y_{2}-y_{1}}{t_{2}-t_{1}} ``]
First, we mark which number corresponds to which variable in the formula:
- [`` ([$a[0]],[$b[0]]) \longrightarrow (x_{1},y_{1}) ``]
+ [`` ([$a[0]],[$b[0]]) \longrightarrow (t_{1},y_{1}) ``]
- [`` ([$a[1]],[$b[1]]) \longrightarrow (x_{2},y_{2}) ``]
+ [`` ([$a[1]],[$b[1]]) \longrightarrow (t_{2},y_{2}) ``]
Now we substitute these numbers into the corresponding variables in the slope formula:
[`` \begin{aligned}
\text{slope}
- &=\frac{y_{2}-y_{1}}{x_{2}-x_{1}}\\
+ &=\frac{y_{2}-y_{1}}{t_{2}-t_{1}}\\
&=\frac{[$b[1]]-[$s6]}{[$a[1]]-[$s7]}\\
&=\frac{[$s8]}{[$a[1]-$a[0]]}\\
&=[$m]
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg
index 73b4da98c4..03beb63b42 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg
index 172764402c..773a0c4035 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg
index 5e39e66af4..31a0eea1f0 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg
@@ -74,7 +74,7 @@ BEGIN_PGML
Solve the compound inequality algebraically.
-[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [|||]* is usually above the [|Enter|]* key')@]**
+[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [| | |]* is usually above the [|Enter|]* key')@]**
[`` [$left] [$comp0] \frac{[$b]}{[$c]}x [$comp1] [$right] ``]
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg
index a70c1fe45b..ecc2447759 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg
@@ -81,7 +81,7 @@ Solve the compound inequality algebraically.
[`` [$left] [$comp0] [$b]-\frac{[$c]}{[$d]}x [$comp1] [$right] ``]
-[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [|||]* is usually above the [|Enter|]* key')@]**
+[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [| | |]* is usually above the [|Enter|]* key')@]**
In set-builder notation, the solution set is [______________]{$setans}.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg
index 814feffc04..f778906335 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg
index 546a2bae74..538e5c2f0e 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg
index ff749814a8..3239e5511c 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg
index e5a5f58f84..c27fe967dd 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg
index e42ad373f5..6635a03798 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg
index 33298a3c79..1d608af1e9 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg
index 2157646e21..ef84012d08 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg
@@ -38,7 +38,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
#$reach is the maximum value shown on the graph.
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg
index 55156d8504..5ba55514aa 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg
@@ -37,7 +37,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg
index 9ac19c929a..1318ad7ad3 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg
@@ -37,7 +37,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg
index 66c3b18ea0..b9c219fa19 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg
@@ -37,7 +37,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation50.pg
new file mode 100644
index 0000000000..158abf304a
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation50.pg
@@ -0,0 +1,116 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,2,1);
+$b = random($a+1,4,1);
+$leftType = random(0,1,1)==0 ? ')' : ']';
+$rightType = random(0,1,1)==0 ? '(' : '[';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$a $leftType U $rightType $b,inf)");
+
+Context("Numeric");
+
+$aspectRatio = 1/5;
+$horPixel = 240;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 6;
+$pixel = 2*$reach/240;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+
+#make the graphs
+$gr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
+ size=>[$horPixel,$verPixel]);
+$gr->moveTo(0,0);
+$gr->arrowTo($reach-2*$pixel,0,'black',1);
+$gr->moveTo(0,0);
+$gr->arrowTo(-$reach+2*$pixel,0,'black',1);
+
+@ticks = ();
+for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
+$gr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
+$gr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
+
+$shadingoffset = $verticalSpace/1.2;
+$gr->lb( new Label($a,$shadingoffset,$leftType,'blue','center','middle','giant'));
+$gr->moveTo($a,$shadingoffset);
+$gr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1);
+
+$gr->lb( new Label($b,$shadingoffset,$rightType,'blue','center','middle','giant'));
+$gr->moveTo($b,$shadingoffset);
+$gr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1);
+
+
+$alt = "This is graph of an interval on a number line. There is a $leftType at $a and everything to the left of $a is shaded; there is a $rightType at $b and everything to the right of $b is shaded.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it in interval notation.
+
+>> [@image( insertGraph($gr), width=>$screenXSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>"title='$alt' alt= '$alt' align='top'" ) @]* <<
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], [|>=|]* for [`\geq`], capitalized U for the union symbol.!)@]**
+
+ In interval notation: [_____________________]{$intans}
+
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation60.pg
new file mode 100644
index 0000000000..4a1eba1143
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToIntervalNotation60.pg
@@ -0,0 +1,112 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,2,1);
+$b = random($a+1,4,1);
+$leftType = random(0,1,1)==0 ? '(' : '[';
+$rightType = random(0,1,1)==0 ? ')' : ']';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("$leftType $a,$b $rightType");
+
+Context("Numeric");
+
+$aspectRatio = 1/5;
+$horPixel = 240;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 6;
+$pixel = 2*$reach/240;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+
+#make the graphs
+$gr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
+ size=>[$horPixel,$verPixel]);
+$gr->moveTo(0,0);
+$gr->arrowTo($reach-2*$pixel,0,'black',1);
+$gr->moveTo(0,0);
+$gr->arrowTo(-$reach+2*$pixel,0,'black',1);
+
+@ticks = ();
+for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
+$gr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
+$gr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
+
+$shadingoffset = $verticalSpace/1.2;
+$gr->lb( new Label($a,$shadingoffset,$leftType,'blue','center','middle','giant'));
+$gr->moveTo($a,$shadingoffset);
+$gr->lineTo($b,$shadingoffset,'blue',1);
+$gr->lb( new Label($b,$shadingoffset,$rightType,'blue','center','middle','giant'));
+
+$alt = "This is graph of an interval on a number line. There is a $leftType at $a and a $rightType at $b. The segment in between is shaded.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it in interval notation.
+
+>> [@image( insertGraph($gr), width=>$screenXSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>"title='$alt' alt= '$alt' align='top'" ) @]* <<
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], [|>=|]* for [`\geq`], capitalized U for the union symbol.!)@]**
+
+ In interval notation: [_____________________]{$intans}
+
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg
index 0889eb4f50..8c6f2d9514 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg
@@ -33,6 +33,8 @@ loadMacros(
"parserPopUp.pl",
"contextInequalitySetBuilder.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -46,7 +48,7 @@ $symbol = '>';
InequalitySetBuilder::UseVerticalSuchThat();
Context("InequalitySetBuilder-Only");
-do {$var = RandomVariableName();} until ($var ne 'y' and $var ne 'p' and $var ne 'q' and $var ne 'g');
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
$setans = Compute("{ $var | $var $symbol $a}");
@@ -55,96 +57,42 @@ Context()->flags->set("formatStudentAnswer"=>'parsed');
$intans = Compute("($a,inf)");
Context("Numeric");
-%answer = (leftType => 'open',
- rightType => 'inf', #use 'inf' regardles of +/- inf
- );
-
-
-$aspectRatio = 1/5;
-$horPixel = 240;
-$verPixel = $horPixel*$aspectRatio;
-$screenXSize = $horPixel;
-$screenYSize = $screenXSize*$aspectRatio;
-$reach = 6;
-$pixel = 2*$reach/240;
-$verticalSpace = $reach*$aspectRatio;
-$hardCopyPercent = 1000; #meaning 100%
-
-
-#initializing...
-@gr=();
-
-#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
-@indices=();
-
-
-#make the graphs
-for $leftType ('open','closed', 'inf')
-{
- for $rightType ('open','closed', 'inf')
- {
- my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
- size=>[$horPixel,$verPixel]
- );
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo($reach-2*$pixel,0,'black',1);
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo(-$reach+2*$pixel,0,'black',1);
- $tempgr->lb( new Label($reach-$pixel,-$verticalSpace/5,$var,'black','right','top','large'));
- @ticks = ();
- for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
-
- $tempgr->h_ticks(0,"black",@ticks);
- $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
- $tempgr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
- $tempgr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
-
- $shadingoffset = $verticalSpace/2;
- if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
- {
- $tempgr->lb( new Label($a,$verticalSpace,$a,'blue','center','bottom','large'));
- if ($leftType eq 'open' or $rightType eq 'open')
- {
- my $bracket = ($leftType eq 'open') ? '(' : ')';
- my $halign = ($leftType eq 'open') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'open') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- }
- else
- {
- my $bracket = ($leftType eq 'closed') ? '[' : ']';
- my $halign = ($leftType eq 'closed') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'closed') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- };
- $tempgr->moveTo($a,$shadingoffset);
- if ($leftType eq 'inf') {$tempgr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1)}
- else {$tempgr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1)};
- push(@gr,$tempgr);
- if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
- {push(@indices, $#gr);}
- else {unshift(@indices, $#gr);}
- }
-
-}};
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[openinfiniteinterval] coordinates {($a,0) (6,0)};
+\end{axis}
+END_TIKZ
+
$alt = "Graph of an interval on a number line. There is a left parenthesis at $a and everything right of that is shaded. To the right of the axis, there is a letter $var.";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
For the interval expressed in the number line, write it using set-builder notation and interval notation.
->> [@image( insertGraph($gr[ $indices[0] ]), width=>$screenXSize, tex_size=>$hardCopyPercent,
- extra_html_tags=>'title="$alt" alt= "$alt" align="top"' ) @]* <<
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
-[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
- In set-builder notation: [_____________________]
+[_]{$setans}{30}
- In interval notation: [_____________________]
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+[_]{$intans}{30}
END_PGML
@@ -153,9 +101,6 @@ END_PGML
##############################################
-ANS( $setans->cmp() );
-
-ANS( $intans->cmp() );
BEGIN_PGML_SOLUTION
@@ -168,3 +113,4 @@ The corresponding interval notation is [`[$intans]`].
END_PGML_SOLUTION
ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg
index a50b40240b..eef96ac55e 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg
@@ -33,6 +33,8 @@ loadMacros(
"parserPopUp.pl",
"contextInequalitySetBuilder.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -46,7 +48,7 @@ $symbol = '\ge';
InequalitySetBuilder::UseVerticalSuchThat();
Context("InequalitySetBuilder-Only");
-do {$var = RandomVariableName();} until ($var ne 'y' and $var ne 'p' and $var ne 'q' and $var ne 'g');
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
$setans = Compute("{ $var | $var >= $a}");
@@ -55,98 +57,42 @@ Context()->flags->set("formatStudentAnswer"=>'parsed');
$intans = Compute("[$a,inf)");
Context("Numeric");
-%answer = (leftType => 'closed',
- rightType => 'inf', #use 'inf' regardles of +/- inf
- );
-
-
-$aspectRatio = 1/5;
-$horPixel = 240;
-$verPixel = $horPixel*$aspectRatio;
-$screenXSize = $horPixel;
-$screenYSize = $screenXSize*$aspectRatio;
-$reach = 6;
-$pixel = 2*$reach/240;
-$verticalSpace = $reach*$aspectRatio;
-$hardCopyPercent = 1000; #meaning 100%
-
-
-#initializing...
-@gr=();
-
-#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
-@indices=();
-
-
-#make the graphs
-for $leftType ('open','closed', 'inf')
-{
- for $rightType ('open','closed', 'inf')
- {
- my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
- size=>[$horPixel,$verPixel]
- );
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo($reach-2*$pixel,0,'black',1);
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo(-$reach+2*$pixel,0,'black',1);
- $tempgr->lb( new Label($reach-$pixel,-$verticalSpace/5,$var,'black','right','top','large'));
- @ticks = ();
- for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
-
- $tempgr->h_ticks(0,"black",@ticks);
- $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
- $tempgr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
- $tempgr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
-
- $shadingoffset = $verticalSpace/2;
- if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
- {
- $tempgr->lb( new Label($a,$verticalSpace,$a,'blue','center','bottom','large'));
- if ($leftType eq 'open' or $rightType eq 'open')
- {
- my $bracket = ($leftType eq 'open') ? '(' : ')';
- my $halign = ($leftType eq 'open') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'open') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- }
- else
- {
- my $bracket = ($leftType eq 'closed') ? '[' : ']';
- my $halign = ($leftType eq 'closed') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'closed') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- };
- $tempgr->moveTo($a,$shadingoffset);
- if ($leftType eq 'inf') {$tempgr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1)}
- else {$tempgr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1)};
- push(@gr,$tempgr);
- if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
- {push(@indices, $#gr);}
- else {unshift(@indices, $#gr);}
- }
-
-}};
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[closedinfiniteinterval] coordinates {($a,0) (6,0)};
+\end{axis}
+END_TIKZ
+
$alt = "Graph of an interval on a number line. There is a left bracket at $a and everything right of that is shaded. To the right of the axis, there is a letter $var.";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
For the interval expressed in the number line, write it using set-builder notation and interval notation.
->> [@image( insertGraph($gr[ $indices[0] ]), width=>$screenXSize, tex_size=>$hardCopyPercent,
- extra_html_tags=>'title="$alt" alt= "$alt" align="top"' ) @]* <<
-
-[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
- In set-builder notation: [_____________________]
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
- In interval notation: [_____________________]
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
+[_]{$setans}{30}
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+[_]{$intans}{30}
END_PGML
@@ -154,10 +100,6 @@ END_PGML
##############################################
-ANS( $setans->cmp() );
-
-ANS( $intans->cmp() );
-
BEGIN_PGML_SOLUTION
Since the given graph shades all the values greater than [`[$a]`] (and equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg
index 9e26419018..11039f4549 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg
@@ -33,6 +33,8 @@ loadMacros(
"parserPopUp.pl",
"contextInequalitySetBuilder.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -46,7 +48,7 @@ $symbol = '<';
InequalitySetBuilder::UseVerticalSuchThat();
Context("InequalitySetBuilder-Only");
-do {$var = RandomVariableName();} until ($var ne 'y' and $var ne 'p' and $var ne 'q' and $var ne 'g');
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
$setans = Compute("{ $var | $var $symbol $a}");
@@ -55,96 +57,41 @@ Context()->flags->set("formatStudentAnswer"=>'parsed');
$intans = Compute("(-inf,$a)");
Context("Numeric");
-%answer = (leftType => 'inf',
- rightType => 'open', #use 'inf' regardles of +/- inf
- );
-
-
-$aspectRatio = 1/5;
-$horPixel = 240;
-$verPixel = $horPixel*$aspectRatio;
-$screenXSize = $horPixel;
-$screenYSize = $screenXSize*$aspectRatio;
-$reach = 6;
-$pixel = 2*$reach/240;
-$verticalSpace = $reach*$aspectRatio;
-$hardCopyPercent = 1000; #meaning 100%
-
-
-#initializing...
-@gr=();
-
-#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
-@indices=();
-
-
-#make the graphs
-for $leftType ('open','closed', 'inf')
-{
- for $rightType ('open','closed', 'inf')
- {
- my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
- size=>[$horPixel,$verPixel]
- );
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo($reach-2*$pixel,0,'black',1);
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo(-$reach+2*$pixel,0,'black',1);
- $tempgr->lb( new Label($reach-$pixel,-$verticalSpace/5,$var,'black','right','top','large'));
- @ticks = ();
- for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
-
- $tempgr->h_ticks(0,"black",@ticks);
- $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
- $tempgr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
- $tempgr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
-
- $shadingoffset = $verticalSpace/2;
- if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
- {
- $tempgr->lb( new Label($a,$verticalSpace,$a,'blue','center','bottom','large'));
- if ($leftType eq 'open' or $rightType eq 'open')
- {
- my $bracket = ($leftType eq 'open') ? '(' : ')';
- my $halign = ($leftType eq 'open') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'open') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- }
- else
- {
- my $bracket = ($leftType eq 'closed') ? '[' : ']';
- my $halign = ($leftType eq 'closed') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'closed') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- };
- $tempgr->moveTo($a,$shadingoffset);
- if ($leftType eq 'inf') {$tempgr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1)}
- else {$tempgr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1)};
- push(@gr,$tempgr);
- if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
- {push(@indices, $#gr);}
- else {unshift(@indices, $#gr);}
- }
-
-}};
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[infiniteopeninterval] coordinates {(-6,0) ($a,0)};
+\end{axis}
+END_TIKZ
$alt = "Graph of an interval on a number line. There is a right parenthesis at $a and everything left of that is shaded. To the right of the axis, there is a letter $var.";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
For the interval expressed in the number line, write it using set-builder notation and interval notation.
->> [@image( insertGraph($gr[ $indices[0] ]), width=>$screenXSize, tex_size=>$hardCopyPercent,
- extra_html_tags=>'title="$alt" alt= "$alt" align="top"' ) @]* <<
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
-[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
- In set-builder notation: [_____________________]
+[_]{$setans}{30}
- In interval notation: [_____________________]
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+[_]{$intans}{30}
END_PGML
@@ -153,10 +100,6 @@ END_PGML
##############################################
-ANS( $setans->cmp() );
-
-ANS( $intans->cmp() );
-
BEGIN_PGML_SOLUTION
Since the given graph shades all the values less than [`[$a]`] (but not equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
@@ -168,3 +111,4 @@ The corresponding interval notation is [`[$intans]`].
END_PGML_SOLUTION
ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg
index 9f71535cf3..50758c6a8b 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg
@@ -33,6 +33,8 @@ loadMacros(
"parserPopUp.pl",
"contextInequalitySetBuilder.pl",
"PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -42,120 +44,61 @@ Context("Numeric");
$a = random(-4,4,0.5);
-$symbol = '<';
+$symbol = '\leq';
InequalitySetBuilder::UseVerticalSuchThat();
Context("InequalitySetBuilder-Only");
-do {$var = RandomVariableName();} until ($var ne 'y' and $var ne 'p' and $var ne 'q' and $var ne 'g');
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
-$setans = Compute("{ $var | $var<= $a}");
+$setans = Compute("{ $var | $var <= $a}");
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
$intans = Compute("(-inf,$a]");
Context("Numeric");
-%answer = (leftType => 'inf',
- rightType => 'closed', #use 'inf' regardles of +/- inf
- );
-
-
-$aspectRatio = 1/5;
-$horPixel = 240;
-$verPixel = $horPixel*$aspectRatio;
-$screenXSize = $horPixel;
-$screenYSize = $screenXSize*$aspectRatio;
-$reach = 6;
-$pixel = 2*$reach/240;
-$verticalSpace = $reach*$aspectRatio;
-$hardCopyPercent = 1000; #meaning 100%
-
-
-#initializing...
-@gr=();
-
-#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
-@indices=();
-
-
-#make the graphs
-for $leftType ('open','closed', 'inf')
-{
- for $rightType ('open','closed', 'inf')
- {
- my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
- size=>[$horPixel,$verPixel]
- );
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo($reach-2*$pixel,0,'black',1);
- $tempgr->moveTo(0,0);
- $tempgr->arrowTo(-$reach+2*$pixel,0,'black',1);
- $tempgr->lb( new Label($reach-$pixel,-$verticalSpace/5,$var,'black','right','top','large'));
- @ticks = ();
- for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
-
- $tempgr->h_ticks(0,"black",@ticks);
- $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
- $tempgr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
- $tempgr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
-
- $shadingoffset = $verticalSpace/2;
- if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
- {
- $tempgr->lb( new Label($a,$verticalSpace,$a,'blue','center','bottom','large'));
- if ($leftType eq 'open' or $rightType eq 'open')
- {
- my $bracket = ($leftType eq 'open') ? '(' : ')';
- my $halign = ($leftType eq 'open') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'open') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- }
- else
- {
- my $bracket = ($leftType eq 'closed') ? '[' : ']';
- my $halign = ($leftType eq 'closed') ? 'left' : 'right';
- $pixeloffset = ($leftType eq 'closed') ? -2*$pixel : 4*$pixel;
- $tempgr->lb( new Label($a+$pixeloffset,$shadingoffset,$bracket,'blue',$halign,'middle','giant'));
- };
- $tempgr->moveTo($a,$shadingoffset);
- if ($leftType eq 'inf') {$tempgr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1)}
- else {$tempgr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1)};
- push(@gr,$tempgr);
- if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
- {push(@indices, $#gr);}
- else {unshift(@indices, $#gr);}
- }
-
-}};
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[infiniteclosedinterval] coordinates {(-6,0) ($a,0)};
+\end{axis}
+END_TIKZ
$alt = "Graph of an interval on a number line. There is a right bracket at $a and everything left of that is shaded. To the right of the axis, there is a letter $var.";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
For the interval expressed in the number line, write it using set-builder notation and interval notation.
->> [@image( insertGraph($gr[ $indices[0] ]), width=>$screenXSize, tex_size=>$hardCopyPercent,
- extra_html_tags=>'title="$alt" alt= "$alt" align="top"' ) @]* <<
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
-[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
- In set-builder notation: [_____________________]
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
- In interval notation: [_____________________]
+[_]{$setans}{30}
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+[_]{$intans}{30}
END_PGML
-##############################################
-
-ANS( $setans->cmp() );
-ANS( $intans->cmp() );
+##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg
index 44bd4ebaaa..9cf187b10d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg
@@ -137,7 +137,7 @@ $pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
Context()->texStrings;
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph20.pg
index e52006c6fe..381ea62bf4 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph20.pg
@@ -137,7 +137,7 @@ $pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
Context()->texStrings;
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph30.pg
index a7a0310b3d..b90149dd07 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph30.pg
@@ -137,7 +137,7 @@ $pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
Context()->texStrings;
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg
index a9a1bc613c..f195f5ee0a 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg
@@ -137,7 +137,7 @@ $pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
Context()->texStrings;
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality10.pg
index 93ade51ed4..4be7945a5a 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality10.pg
@@ -52,7 +52,7 @@ InequalitySetBuilder::UseVerticalSuchThat();
Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x > $c}");
$alt = Compute("{ x | $c < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality100.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality100.pg
index f1ed0b0146..dab5d865d5 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality100.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality100.pg
@@ -50,7 +50,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x >= -$b}");
$alt = Compute("{ x | -$b <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality110.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality110.pg
index cec29914bc..9ce7cf92cc 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality110.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality110.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > $b}");
$alt = Compute("{ x | $b < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality120.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality120.pg
index 87432e1aee..2438e2f972 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality120.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality120.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x >= -$b}");
$alt = Compute("{ x | -$b <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality130.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality130.pg
index e20270e7b2..a282217f52 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality130.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality130.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > -$b}");
$alt = Compute("{ x | -$b < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality140.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality140.pg
index d183dcc4b9..7d62fb0735 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality140.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality140.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x < $b}");
$alt = Compute("{ x | $b > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality150.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality150.pg
index 01acdc13e5..977abbd903 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality150.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality150.pg
@@ -52,7 +52,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > -$c}");
$alt = Compute("{ x | -$c < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality160.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality160.pg
index 1e797f0cf0..e81dfd249f 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality160.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality160.pg
@@ -52,7 +52,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x < $c}");
$alt = Compute("{ x | $c > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg
index 6f9e685c7b..c018d9caf7 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg
@@ -54,7 +54,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > $v}");
$alt = Compute("{ x | $v < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality180.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality180.pg
index d669318196..844f9893ed 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality180.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality180.pg
@@ -54,7 +54,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x <= $v}");
$alt = Compute("{ x | $v >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality190.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality190.pg
index a173ac6655..bdd4c98da8 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality190.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality190.pg
@@ -54,7 +54,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x <= -$v}");
$alt = Compute("{ x | -$v >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality20.pg
index dc7a810b5c..20a26f08ab 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality20.pg
@@ -53,7 +53,7 @@ Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x <= $c}");
$alt = Compute("{ x | $c >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality200.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality200.pg
index 2e82238b78..f2a9df6bd8 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality200.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality200.pg
@@ -54,7 +54,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > $v}");
$alt = Compute("{ x | $v < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality210.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality210.pg
index 4b0139c455..27314f618c 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality210.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality210.pg
@@ -53,7 +53,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x >= 0}");
$alt = Compute("{ x | 0 <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality220.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality220.pg
index 71310f97ad..90e83ff65f 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality220.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality220.pg
@@ -53,7 +53,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x > $v}");
$alt = Compute("{ x | $v < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality230.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality230.pg
index 6ecb3bf863..09eaa89998 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality230.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality230.pg
@@ -54,7 +54,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x >= $v}");
$alt = Compute("{ x | $v <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality240.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality240.pg
index db9a6dbde0..a334c36c1a 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality240.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality240.pg
@@ -57,7 +57,7 @@ Context()->variables->are(t=>"Real");
$setans = Compute("{ t | t < $crit}");
$alt = Compute("{ t | $crit>= t}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality250.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality250.pg
index 5383da1246..0453c62912 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality250.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality250.pg
@@ -62,7 +62,7 @@ Context()->variables->are(z=>"Real");
$setans = Compute("{ z | z >= $crit}");
$alt = Compute("{ z | $crit <= z}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality260.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality260.pg
index d6fd5a91bf..ad5fedf8e1 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality260.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality260.pg
@@ -65,7 +65,7 @@ Context()->variables->are(a=>"Real");
$setans = Compute("{ a | a > $crit}");
$alt = Compute("{ a | $crit < a}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality270.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality270.pg
index 7b66d7582a..7d77dec3fa 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality270.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality270.pg
@@ -60,7 +60,7 @@ Context()->variables->are(p=>"Real");
$setans = Compute("{ p | p <= 0}");
$alt = Compute("{ p | 0 >= p}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality280.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality280.pg
index 6d0519eb53..578ae84fe1 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality280.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality280.pg
@@ -56,7 +56,7 @@ Context()->variables->add(p=>"Real");
$setans = Compute("{ p | p < $crit}");
$alt = Compute("{ p | $crit > p}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality290.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality290.pg
index 23dbd7ad19..4b2fd1aa3a 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality290.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality290.pg
@@ -55,7 +55,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x <= $crit }");
$alt = Compute("{ x | $crit >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality30.pg
index 7e00a14106..7222e34172 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality30.pg
@@ -52,7 +52,7 @@ Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x >= $c}");
$alt = Compute("{ x | $c <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality300.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality300.pg
index fdd6a1f2b6..55e5e3df83 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality300.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality300.pg
@@ -57,7 +57,7 @@ Context()->variables->are(z=>"Real");
$setans = Compute("{ z | z <= $crit}");
$alt = Compute("{ z | $crit >= z}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality310.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality310.pg
index 867db53b94..ee368200f9 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality310.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality310.pg
@@ -56,7 +56,7 @@ Context()->variables->are(y=>"Real");
$setans = Compute("{ y | y > $crit}");
$alt = Compute("{ y | $crit < y}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality320.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality320.pg
index 944a7bd52d..8f5cadb719 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality320.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality320.pg
@@ -58,7 +58,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x < $crit}");
$alt = Compute("{ x | $crit > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality40.pg
index 8975612e39..6533f5148d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality40.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality40.pg
@@ -52,7 +52,7 @@ Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x < $c}");
$alt = Compute("{ x | $c > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality41.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality41.pg
index d608614a03..04282acd13 100755
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality41.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality41.pg
@@ -52,7 +52,7 @@ Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x < $c}");
$alt = Compute("{ x | $c > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality50.pg
index 2e8eea2a38..f3db36aed6 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality50.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality50.pg
@@ -51,7 +51,7 @@ Context("InequalitySetBuilder-Only");
$setans = Compute("{ x | x <= $c}");
$alt = Compute("{ x | $c >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality60.pg
index 9715e6dc54..736da4b9d7 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality60.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality60.pg
@@ -63,7 +63,7 @@ Context()->flags->set(
$setans = Compute("{ x | x > $c}");
$alt = Compute("{ x | $c < x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
$ansLatexString="\left\{ x \mid x > ".$c->TeX."\right\}";
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality70.pg
index f924e2ad42..4fb074045f 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality70.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality70.pg
@@ -52,7 +52,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x <= -$c}");
$alt = Compute("{ x | -$c >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality80.pg
index 7ee2f0384c..cf6aaff4cd 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality80.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality80.pg
@@ -52,7 +52,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x >= -$c}");
$alt = Compute("{ x | -$c <= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality90.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality90.pg
index fede26956d..c96be29090 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality90.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality90.pg
@@ -50,7 +50,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x < -$b}");
$alt = Compute("{ x | -$b > x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg
index 413b8b36dc..8543f428e0 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x <= $crit}");
$alt = Compute("{ x | $crit >= x}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg
index d65ea1b9c1..0d1762125d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg
@@ -70,7 +70,7 @@ Context()->flags->set(
Context()->variables->are(y=>"Real");
$setans = Compute("{ y | y > -($critNum/$critDen)}");
$alt = Compute("{ y | -($critNum/$critDen) < y}");
-$ans = OneOf($setans, $alt);
+$ans = $setans;
$ansLatexString = "\left\{ y \mid y > ".$crit->TeX."\right\}";
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg
index 50dfe1569b..7a824b171d 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg
@@ -72,7 +72,7 @@ Context()->variables->are(t=>"Real");
$setans = Compute("{ t | t< $ans}");
$alt = Compute("{ t | $ans > t}");
-$options = OneOf($setans, $alt);
+$options = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg
index ebeeff63de..1f0271396a 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg
@@ -59,7 +59,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x<= $ans}");
$alt = Compute("{ x | $ans >= x}");
-$options = OneOf($setans, $alt);
+$options = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg
index fa4caa3ea6..e4fe5a9c74 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg
@@ -60,7 +60,7 @@ Context()->variables->are(z=>'Real');
$setans = Compute("{ z | z> $ans}");
$alt = Compute("{ z | $ans < z}");
-$options = OneOf($setans, $alt);
+$options = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg
index 24248eb3da..bcae192e46 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg
@@ -57,7 +57,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x>= -$ans}");
$alt = Compute("{ x | -$ans <= x}");
-$options = OneOf($setans, $alt);
+$options = $setans;
Context("Interval");
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg
index 2fc2202e66..32b249b9e2 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg
@@ -60,7 +60,7 @@ Context()->variables->are(y=>'Real');
$setans = Compute("{ y | y<= $ans}");
$alt = Compute("{ y | $ans >= y}");
-$options = OneOf($setans, $alt);
+$options = $setans;
Context("Interval");
Context()->flags->set("formatStudentAnswer"=>'parsed');
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg
index 4ed5ccc6f9..55d2d9aece 100644
--- a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg
@@ -73,7 +73,7 @@ Context()->flags->set(formatStudentAnswer=>'parsed');
$setans = Compute("{ x | x> $ans}");
$alt = Compute("{ x | $ans < x}");
-$options = OneOf($setans, $alt);
+$options = $setans;
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph10.pg
new file mode 100644
index 0000000000..1ff8a1a60e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph10.pg
@@ -0,0 +1,204 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+Context('Numeric');
+
+do {
+ $numerator = random(1,5,1);
+ $denominator = random(1,5,1);
+ $h = non_zero_random(-6,6,1);
+ do {$k = non_zero_random(-6,6,1);} until ($h != $k);
+ $m = $numerator/$denominator*$h*$k/abs($h*$k);
+ $k2 = ($k > 0) ? $k - $numerator : $k + $numerator;
+ $h2 = ($k2-$k)/$m+$h;
+} until ($k2 != $h2);
+
+@k = num_sort($k,$k2);
+@h = num_sort($h,$h2);
+$f = Formula("$m*(x - $h)+$k")->reduce;
+
+@gr = ( );
+@xvalues = num_sort(-7,7,(7-$k)/$m+$h,(-7-$k)/$m+$h);
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i]->lb('reset');
+ for $j (-6..6){
+ if ($j==0 or $j%2!=0) {next;}
+ $gr[$i]->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i]->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+ $gr[$i]->moveTo($h,$k);
+ $gr[$i]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'blue',1);
+ $gr[$i]->moveTo($h,$k);
+ $gr[$i]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'blue',1);
+}
+
+$alt[0] = "This is the graph of a straight line which passes the points ($h,$k) and ($h2,$k2).";
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+$i0 = random(0,3,1);
+if (random(0,1,1)==0) {
+ $i1 = 0;
+ $i2 = 1;
+} else {
+ $i1 = 1;
+ $i2 = 0;
+}
+$symbol0 = $symbols[$i0];
+$symbol1 = $symbols[$i1];
+$symbol2 = $symbols[$i2];
+
+@leftBrackets = ('(','[');
+@rightBrackets = (')',']');
+
+@ans = ( );
+
+$gr[1]->moveTo($h,$k);
+if ($m > 0) {
+ if ($i0 == 0) {
+ $ans[0] = Interval("(-inf,$h)");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is open.";
+ } elsif ($i0 == 1) {
+ $ans[0] = Interval("(-inf,$h]");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is closed.";
+ } elsif ($i0 == 2) {
+ $ans[0] = Interval("($h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is open.";
+ } else {
+ $ans[0] = Interval("[$h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is closed.";
+ }
+} else {
+ if ($i0 == 0) {
+ $ans[0] = Interval("($h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is open.";
+ } elsif ($i0 == 1) {
+ $ans[0] = Interval("[$h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is closed.";
+ } elsif ($i0 == 2) {
+ $ans[0] = Interval("(-inf,$h)");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is open.";
+ } else {
+ $ans[0] = Interval("(-inf,$h]");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is closed.";
+ }
+}
+
+$y0 = $f->eval(x=>$h[0]);
+$y1 = $f->eval(x=>$h[1]);
+$ans[1] = Interval("$leftBrackets[$i2] $h[0],$h[1] $rightBrackets[$i1]");
+$gr[2]->moveTo($h[0],$y0);
+$gr[2]->lineTo($h[1],$y1,'red',1);
+$alt[2] = $alt[0]." The segment from ($h[0],$y0) to ($h[1],$y1) is highlighted in red.";
+if ($i1==1) {
+ $gr[2]->stamps( open_circle($h[0],$y0,'red') );
+ $alt[2] .= " The point ($h[0],$y1) is open,";
+} else {
+ $gr[2]->stamps( closed_circle($h[0],$y0,'red') );
+ $alt[2] .= " The point ($h[0],$y0) is closed,";
+}
+if ($i2==1) {
+ $gr[2]->stamps( open_circle($h[1],$y1,'red') );
+ $alt[2] .= " and the point ($h[1],$y1) is open.";
+} else {
+ $gr[2]->stamps( closed_circle($h[1],$y1,'red') );
+ $alt[2] .= " and the point ($h[1],$y1) is closed.";
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbols[$i0]] [$k]`]
+
+ [__________]{$ans[0]}
+
+1. [`[$k[0]] [$symbols[$i1]] f(x) [$symbols[$i2]] [$k[1]]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbols[$i0]] [$k]`], the function's [`y`]-value must be [$words[$i0]] [`[$k]`]. The corresponding segment is highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`[$k[0]] [$symbols[$i1]] f(x) [$symbols[$i2]] [$k[1]]`], the function's [`y`]-value must be between [`[$k[0]]`] and [`[$k[1]]`]. The corresponding segment is highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph20.pg
new file mode 100644
index 0000000000..e82945ef36
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph20.pg
@@ -0,0 +1,230 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+
+
+Context('Numeric');
+$h = random(-4,4,1);
+$k = random(-4,4,1);
+$x = ($h < 0) ? random(-6,$h-1,1) : random($h+1,6,1);
+$y = ($k < 0) ? random($k+1,6,1) : random(-6,$k-1,1);
+$c = ($y-$k)/($x - $h)**2;
+$f = Formula("$c*(x-$h)^2+$k");
+
+@gr = ();
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i]->lb('reset');
+ for $j (-6..6){
+ if (Real($j)==0) {next;}
+ $gr[$i]->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i]->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+ $yexit = ($c < 0) ? -7 : 7;
+ @xvalues = num_sort(-7,7,sqrt(($yexit-$k)/$c)+$h,-sqrt(($yexit-$k)/$c)+$h);
+ add_functions($gr[$i], "$f for x in <$xvalues[1],$xvalues[2]> using color:blue and weight:1");
+ $px = 14/240;
+
+ $gr[$i]->moveTo($xvalues[1]+$px,$c*($xvalues[1]+$px-$h)**2+$k);
+ $gr[$i]->arrowTo($xvalues[1],$c*($xvalues[1]-$h)**2+$k,'blue',1);
+ $gr[$i]->moveTo($xvalues[2]-$px,$c*($xvalues[2]-$px-$h)**2+$k);
+ $gr[$i]->arrowTo($xvalues[2],$c*($xvalues[2]-$h)**2+$k,'blue',1);
+}
+
+@x = num_sort($x,2*$h-$x);
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+@in = ();
+if (random(0,1,1)==0) {
+ $in[0] = random(0,1,1);
+ $in[1] = random(2,3,1);
+} else {
+ $in[0] = random(2,3,1);
+ $in[1] = random(0,1,1);
+}
+$symbol0 = $symbols[$in[0]];
+$symbol1 = $symbols[$in[1]];
+
+@alt = ( );
+$uod = $c > 0 ? 'upward' : 'downward';
+$alt[0] = "This is the graph of a parabola with its vertex at ($h,$k). The parabola faces $uod. It passes the points ($x[0],$y) and ($x[1],$y).";
+
+@s0 = (
+ " Those two points are open.",
+ " Those two points are closed."
+);
+
+@s1 = (
+ " On the parabola, the segment between x=$x[0] to x=$x[1] are highlighted.",
+ " On the parabola, the segment from negative infinity to x=$x[0], and the segment from x=$x[1] to infinity are highlighted.",
+);
+
+@s2 = (
+ Interval("($x[0],$x[1])"),
+ Interval("[$x[0],$x[1]]"),
+ Union("(-inf,$x[0])U($x[1],inf)"),
+ Union("(-inf,$x[0]]U[$x[1],inf)"),
+);
+
+sub graphOpenDots {
+ my $p = shift;
+ $gr[$p]->stamps( open_circle($x[0],$y,'red') );
+ $gr[$p]->stamps( open_circle($x[1],$y,'red') );
+}
+
+sub graphClosedDots {
+ my $p = shift;
+ $gr[$p]->stamps( closed_circle($x[0],$y,'red') );
+ $gr[$p]->stamps( closed_circle($x[1],$y,'red') );
+}
+
+sub highlightBetween {
+ my $p = shift;
+ add_functions($gr[$p], "$f for x in <$x[0],$x[1]> using color:red and weight:1");
+}
+
+sub highlightEnds {
+ my $p = shift;
+ add_functions($gr[$p], "$f for x in <$xvalues[1],$x[0]> using color:red and weight:1");
+ add_functions($gr[$p], "$f for x in <$x[1],$xvalues[2]> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p]->moveTo($xvalues[1]+$px,$c*($xvalues[1]+$px-$h)**2+$k);
+ $gr[$p]->arrowTo($xvalues[1],$c*($xvalues[1]-$h)**2+$k,'red',1);
+ $gr[$p]->moveTo($xvalues[2]-$px,$c*($xvalues[2]-$px-$h)**2+$k);
+ $gr[$p]->arrowTo($xvalues[2],$c*($xvalues[2]-$h)**2+$k,'red',1);
+}
+
+$alt[1] .= $alt[0];
+$alt[2] .= $alt[0];
+@ans = ();
+for my $i (0..1) {
+ if ($in[$i]==0) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ } else {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ }
+ &graphOpenDots($i+1);
+ } elsif ($in[$i]==1) {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ } else {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ }
+ &graphClosedDots($i+1);
+ } elsif ($in[$i]==2) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ } else {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ }
+ &graphOpenDots($i+1);
+ } else {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ } else {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ }
+ &graphClosedDots($i+1);
+ }
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbol0] [$y]`]
+
+ [__________]{$ans[0]}
+
+1. [`f(x) [$symbol1] [$y]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbol0] [$y]`], the function's [`y`]-value must be [$words[$in[0]]] [`[$y]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`f(x) [$symbol1] [$y]`], the function's [`y`]-value must be [$words[$in[1]]] [`[$y]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph30.pg
new file mode 100644
index 0000000000..6dfa2465bc
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/SolvingInequalityByGraph30.pg
@@ -0,0 +1,241 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+Context('Numeric');
+
+$s = Real(random(-3,3,1));
+$r = $s - random(1,3,1);
+$t = $s + random(2,3,1);
+
+$f = Formula("(x-$r)(x-$s)(x-$t)");
+@hts = map{abs($f->eval(x=>$_))}($r..$t);
+$amplitude = random(1,3,1);
+$c = $amplitude/max(@hts)*random(-1,1,2);
+$k = random(1,6-$amplitude,1)*random(-1,1,2);
+$f = $c*$f+$k;
+
+@gr = ();
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i] ->lb('reset');
+ for $j (-6..6){
+ if (Real($j)==0) {next;}
+ $gr[$i] ->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i] ->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+
+ $start = $r;
+ while (abs($f->eval(x=>$start-0.1))<7 and $start > -7) {$start = $start - 0.1};
+ $stop = $t;
+ while (abs($f->eval(x=>$stop+0.1))<7 and $stop < 7) {$stop = $stop + 0.1};
+
+ add_functions($gr[$i] , "$f for x in <$start,$stop> using color:blue and weight:1");
+ $px = 14/240;
+ $gr[$i] ->moveTo($start+$px,$f->eval(x=>$start+$px));
+ $gr[$i] ->arrowTo($start,$f->eval(x=>$start),'blue',1);
+ $gr[$i] ->moveTo($stop-$px,$f->eval(x=>$stop-$px));
+ $gr[$i] ->arrowTo($stop,$f->eval(x=>$stop),'blue',1);
+}
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+@in = ();
+if (random(0,1,1)==0) {
+ $in[0] = random(0,1,1);
+ $in[1] = random(2,3,1);
+} else {
+ $in[0] = random(2,3,1);
+ $in[1] = random(0,1,1);
+}
+$symbol0 = $symbols[$in[0]];
+$symbol1 = $symbols[$in[1]];
+
+@alt = ( );
+$startL = $c > 0 ? 'negative infinity' : 'positive infinity';
+$endR = $c > 0 ? 'positive infinity' : 'negative infinity';
+$uod0 = $c > 0 ? 'up' : 'down';
+$uod1 = $c > 0 ? 'down' : 'up';
+$alt[0] = "This is the graph of a cubic function which starts at $startL as x-value approaches negative infinity, going $uod0 through the point ($r,$k), curving $uod1 to pass ($s,$k), curving $uod0 to pass ($t,$k), and finally approaching $endR as x-value approaches positive infinity.";
+
+@s0 = (
+ " Those three points are open.",
+ " Those three points are closed."
+);
+
+@s1 = (
+ " On the function, the segment between infinity and x=$r, and the segment from to x=$s to x=$t are highlighted.",
+ " On the function, the segment from x=$r and x=$s, and the segment from x=$t to infinity are highlighted.",
+);
+
+@s2 = (
+ Union("(-inf,$r)U($s,$t)"),
+ Union("(-inf,$r]U[$s,$t]"),
+ Union("($r,$s)U($t,inf)"),
+ Union("[$r,$s]U[$t,inf)"),
+);
+
+sub graphOpenDots {
+ my $p = shift;
+ $gr[$p]->stamps( open_circle($r,$k,'red') );
+ $gr[$p]->stamps( open_circle($s,$k,'red') );
+ $gr[$p]->stamps( open_circle($t,$k,'red') );
+}
+
+sub graphClosedDots {
+ my $p = shift;
+ $gr[$p]->stamps( closed_circle($r,$k,'red') );
+ $gr[$p]->stamps( closed_circle($s,$k,'red') );
+ $gr[$p]->stamps( closed_circle($t,$k,'red') );
+}
+
+sub highlightLeft {
+ my $p = shift;
+ add_functions($gr[$p] , "$f for x in <$start,$r> using color:red and weight:1");
+ add_functions($gr[$p] , "$f for x in <$s,$t> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p] ->moveTo($start+$px,$f->eval(x=>$start+$px));
+ $gr[$p] ->arrowTo($start,$f->eval(x=>$start),'red',1);
+}
+
+sub highlightRight {
+ my $p = shift;
+ add_functions($gr[$p] , "$f for x in <$r,$s> using color:red and weight:1");
+ add_functions($gr[$p] , "$f for x in <$t,$stop> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p] ->moveTo($stop-$px,$f->eval(x=>$stop-$px));
+ $gr[$p] ->arrowTo($stop,$f->eval(x=>$stop),'red',1);
+}
+
+$alt[1] .= $alt[0];
+$alt[2] .= $alt[0];
+@ans = ();
+for my $i (0..1) {
+ if ($in[$i]==0) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ } else {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ }
+ &graphOpenDots($i+1);
+ } elsif ($in[$i]==1) {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ } else {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ }
+ &graphClosedDots($i+1);
+ } elsif ($in[$i]==2) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ } else {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ }
+ &graphOpenDots($i+1);
+ } else {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ } else {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ }
+ &graphClosedDots($i+1);
+ }
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbol0] [$k]`]
+
+ [__________]{$ans[0]}
+
+1. [`f(x) [$symbol1] [$k]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbol0] [$k]`], the function's [`y`]-value must be [$words[$in[0]]] [`[$k]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`f(x) [$symbol1] [$k]`], the function's [`y`]-value must be [$words[$in[1]]] [`[$k]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd10.pg
new file mode 100644
index 0000000000..4e98f8db20
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd10.pg
@@ -0,0 +1,103 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 4 < 2x <= 10
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$b=random(2,5,1);
+$a=$b*random(1,4,1);
+$c=$b*random($a+1,$a+5,1);
+$left = Compute("$a");
+$comp0 = "\lt";
+$middle = Compute("$b*x");
+$comp1 = "\leq";
+$right = Compute("$c");
+
+$leftEnd = $a/$b;
+$rightEnd = $c/$b;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x <= $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] [$middle] [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \lt [$b]x \leq [$c] \\
+ \frac{[$a]}{[$b]} & \lt \frac{[$b]x}{[$b]} \leq \frac{[$c]}{[$b]} \\
+ [$leftEnd] & \lt x \leq [$rightEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd100.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd100.pg
new file mode 100644
index 0000000000..03beb63b42
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd100.pg
@@ -0,0 +1,202 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: -2x-1<=7 and 3x+3<30.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$a = random(-$reach+2,-$reach+10,1);
+$c0 = random(-5,-2,1);
+$c1 = non_zero_random(-5,5,1);
+$c2 = $c0*$a+$c1;
+
+# $symbol0 is the inequality symbol in the solution.
+# $symbol0Original is the symbol in the inequality.
+$left0 = Compute("$c0*x+$c1")->reduce;
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$right0 = Compute("$c2");
+$symbol0Original = ($symbol0 eq '>') ? '<' : '\leq';
+
+$b = random($a+1,$reach-2,1);
+$d0 = random(2,5,1);
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$right1 = Compute("$d2");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("$leftEnd $a,$b $rightEnd");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->lineTo($b,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of an interval on a number line. The segment from $a to $b is shaded. The endpoint $a is $leftEndType, and the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0Original] [$right0] \text{ and } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ [$c0]x+[$c1] &[$symbol0Original] [$c2] & [$d0]x+[$d1] &[$symbol1] [$d2] \\
+ [$c0]x+[$c1] \mathbf{{}-[$c1]} &[$symbol0Original] [$c2] \mathbf{{}-[$c1]} & [$d0]x+[$d1]\mathbf{{}-[$d1]} &[$symbol1] [$d2] \mathbf{{}-[$d1]}\\
+ [$c0]x &[$symbol0Original] [$c2-$c1] & [$d0]x &[$symbol1] [$d2-$d1] \\
+ \frac{[$c0]x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & \frac{[$d0]x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ x &[$symbol0] [$a] & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that, in the first inequality, the direction of inequality symbol changed from [`[$symbol0Original]`] to [`[$symbol0]`] once we divided a negative number on both sides.
+
+Notice that the keyword *"and"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ and } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the left endpoint is [$leftEndType]; the right endpoint is [$rightEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd110.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd110.pg
new file mode 100644
index 0000000000..773a0c4035
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd110.pg
@@ -0,0 +1,246 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: -2x<=4 and -3x-4<1.
+#
+# Last edited by Carl Yao 07/27/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+# $direction decides whether the problem is x>1 and x>2
+# or x<1 and x<2
+$direction = (random(-1,1,2)==1) ? 'left' : 'right';
+
+# $symbol0 is the inequality symbol in the solution.
+# $symbol0Original is the symbol in the inequality.
+
+$a = random(-$reach+2,-$reach+7,1);
+$c0 = random(-5,-2,1);
+$c1 = non_zero_random(-5,5,1);
+$c2 = $c0*$a+$c1;
+
+$b = random($a+1,$reach-2,1);
+do {$d0 = random(-5,-2,1);} until ($d0!=$c0);
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+if ($direction eq 'left') {
+ $symbol0 = random(-1,1,2)>0 ? "<" : "\leq";
+ $symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+ $aEndType = ($symbol0 eq '<') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '<') ? "open" : "closed";
+ $symbol0Original = ($symbol0 eq '<') ? '>' : '\geq';
+ $symbol1Original = ($symbol1 eq '<') ? '>' : '\geq';
+} else {
+ $symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+ $symbol1 = random(-1,1,2)>0 ? ">" : "\geq";
+ $aEndType = ($symbol0 eq '>') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '>') ? "open" : "closed";
+ $symbol0Original = ($symbol0 eq '>') ? '<' : '\leq';
+ $symbol1Original = ($symbol1 eq '>') ? '<' : '\leq';
+}
+
+
+$left0 = Compute("$c0*x+$c1")->reduce;
+$right0 = Compute("$c2");
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$right1 = Compute("$d2");
+
+
+#These are needed to show inequality symbols in dynamic images.
+if ($direction eq 'left') {
+ $symbol0Show = $symbol0 eq '<' ? '<' : '<=';
+ $symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+} else {
+ $symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+ $symbol1Show = $symbol1 eq '>' ? '>' : '>=';
+}
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+if ($direction eq 'left') {
+ $endpoint = ($symbol0 eq '<') ? ')' : ']';
+ $numberLineEndType = ($symbol0 eq '<') ? 'open' : 'closed';
+ $ans = Compute("(-inf, $a $endpoint");
+} else {
+ $endpoint = ($symbol1 eq '>') ? '(' : '[';
+ $numberLineEndType = ($symbol1 eq '>') ? 'open' : 'closed';
+ $ans = Compute("$endpoint $b, inf)");
+}
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+
+
+if ($direction eq 'left') {
+ if ($symbol0 eq '<') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ $gr->stamps( open_circle($a,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ $gr->stamps( closed_circle($a,0,'blue') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+
+ if ($symbol1 eq '<') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+
+ $gr->moveTo($a,0);
+ $gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $a to negative infinity is shaded. The endpoint $a is $aEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward negative infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $bEndType.";
+
+} else {
+
+ if ($symbol1 eq '>') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ $gr->stamps( open_circle($b,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ $gr->stamps( closed_circle($b,0,'blue') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+
+ if ($symbol0 eq '>') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+
+ $gr->moveTo($b,0);
+ $gr->arrowTo(0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $b to positive infinity is shaded. The endpoint $b is $bEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward positive infinity, while the endpoint $b is $bEndType.";
+}
+
+
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0Original] [$right0] \text{ and } [$left1] [$symbol1Original] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ [$c0]x+[$c1] &[$symbol0Original] [$c2] & [$d0]x+[$d1] &[$symbol1Original] [$d2] \\
+ [$c0]x+[$c1] \mathbf{{}-[$c1]} &[$symbol0Original] [$c2] \mathbf{{}-[$c1]} & [$d0]x+[$d1]\mathbf{{}-[$d1]} &[$symbol1Original] [$d2] \mathbf{{}-[$d1]}\\
+ [$c0]x &[$symbol0Original] [$c2-$c1] & [$d0] x &[$symbol1Original] [$d2-$d1] \\
+ \frac{[$c0]x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & \frac{[$d0] x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ x &[$symbol0] [$a] & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that, in both inequalities, the direction of inequality symbol changed once we divided a negative number on both sides.
+
+Notice that the keyword *"and"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ and } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the right endpoint is [$numberLineEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd20.pg
new file mode 100644
index 0000000000..d6c03f43de
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd20.pg
@@ -0,0 +1,103 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 10 >= 2x > 4
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$b=random(2,5,1);
+$c=$b*random(1,4,1);
+$a=$b*random($c+1,$c+5,1);
+$left = Compute("$a");
+$comp0 = "\geq";
+$middle = Compute("$b*x");
+$comp1 = "\gt";
+$right = Compute("$c");
+
+$leftEnd = $c/$b;
+$rightEnd = $a/$b;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x <= $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] [$middle] [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \geq [$b]x \gt [$c] \\
+ \frac{[$a]}{[$b]} & \geq \frac{[$b]x}{[$b]} \gt \frac{[$c]}{[$b]} \\
+ [$rightEnd] & \geq x \gt [$leftEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd30.pg
new file mode 100644
index 0000000000..17f2be20fa
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd30.pg
@@ -0,0 +1,105 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 10 > -x > -4
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+do {$c=random(-5,-1,1);} until (abs($c)!=abs($a));
+$b=-1;
+$left = Compute("$a");
+$comp0 = "\gt";
+$middle = Compute("-x");
+$comp1 = "\gt";
+$right = Compute("$c");
+
+$leftEnd = -$a;
+$rightEnd = -$c;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x < $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] [$middle] [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \gt -x \gt [$c] \\
+ (-1)\cdot [$a] & \lt (-1)\cdot (-x) \lt (-1)\cdot ([$c]) \\
+ [$leftEnd] & \lt x \lt [$rightEnd] \\
+\end{aligned}
+ ``]
+
+Note that the direction of an inequality symbol changes when we multiply a negative number on both sides.
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd40.pg
new file mode 100644
index 0000000000..19202d421b
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd40.pg
@@ -0,0 +1,113 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 5 <= 1-2x <= 11
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+do {
+ $c=random(2,5,1);
+
+ $dMinusB = -$c*random(2,5,1);
+ $b = non_zero_random(-5,5,1);
+ $d = $b+$dMinusB;
+
+ $aMinusB = -$c*random(2,10,1);
+ $a = $b+$aMinusB;
+} until ($a<$d);
+
+$left = Compute("$a");
+$comp0 = "\leq";
+$middle = Compute("$b-$c*x");
+$comp1 = "\leq";
+$right = Compute("$d");
+
+$leftEnd = ($d-$b)/(-$c);
+$rightEnd = ($a-$b)/(-$c);
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd <= x <= $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$leftEnd,$rightEnd]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] [$middle] [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \leq [$b]-[$c]x \leq [$d] \\
+ [$a]\mathbf{{}-[$b]} & \leq [$b]-[$c]x \mathbf{{}-[$b]} \leq [$d] \mathbf{{}-[$b]}\\
+ [$aMinusB] & \leq -[$c]x \leq [$dMinusB]\\
+ \frac{[$aMinusB]}{-[$c]} & \geq \frac{-[$c]x}{-[$c]} \geq \frac{[$dMinusB]}{-[$c]} \\
+ [$rightEnd] & \geq x \geq [$leftEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd50.pg
new file mode 100644
index 0000000000..2fcf26ba91
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd50.pg
@@ -0,0 +1,117 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like -3 > 1-(2-2x) >= -11
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+do {
+ $d=random(2,5,1);
+ $bMinusC=random(2,5,1);
+ $c = random(1,5,1);
+ $b = $c+$bMinusC;
+
+ $right1 = $d*random(-5,-1,1);
+ $e = $right1+$b-$c;
+
+ $left1 = $d*random(-5,-1,1);
+ $a = $left1+$b-$c;
+} until (($e<0) && ($a>$e));
+
+$left = Compute("$a");
+$comp0 = "\gt";
+$middle = Compute("$b-($c-$d*x)");
+$comp1 = "\geq";
+$right = Compute("$e");
+
+$leftEnd = ($e-$bMinusC)/($d);
+$rightEnd = ($a-$bMinusC)/($d);
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd <= x < $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$leftEnd,$rightEnd)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] [$middle] [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \gt [$b]-([$c]-[$d]x) \geq [$e] \\
+ [$a] & \gt [$b]-[$c]+[$d]x \geq [$e] \\
+ [$a] & \gt [$b-$c]+[$d]x \geq [$e] \\
+ [$a]\mathbf{{}-[$b-$c]}& \gt [$b-$c]+[$d]x \mathbf{{}-[$b-$c]} \geq [$e] \mathbf{{}-[$b-$c]}\\
+ [$left1] & \gt [$d]x \geq [$right1] \\
+ \frac{[$left1]}{[$d]} & \gt \frac{[$d]x}{[$d]} \geq \frac{[$right1]}{[$d]} \\
+ [$rightEnd] & \gt x \geq [$leftEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd60.pg
new file mode 100644
index 0000000000..31a0eea1f0
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd60.pg
@@ -0,0 +1,109 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 10 >= (2/3)x > 4
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+ "contextFraction.pl",
+);
+
+##############################################
+
+Context("LimitedNumeric");
+
+do {
+ $b=random(2,5,1);
+ $c=random(2,8,1);
+} until (gcd($b,$c)==1);
+
+$a=$b*random(1,5,1);
+$d=$b*random($a+1,$a+5,1);
+
+$left = Compute("$a");
+$comp0 = "\lt";
+
+$comp1 = "\lt";
+$right = Compute("$d");
+
+$leftEnd = $a*$c/$b;
+$rightEnd = $d*$c/$b;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x < $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve the compound inequality algebraically.
+
+[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [| | |]* is usually above the [|Enter|]* key')@]**
+
+ [`` [$left] [$comp0] \frac{[$b]}{[$c]}x [$comp1] [$right] ``]
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \lt \frac{[$b]}{[$c]}x \lt [$d] \\
+ \mathbf{[$c]\cdot{}} [$a] & \lt \mathbf{[$c]\cdot{}}\frac{[$b]}{[$c]}x \lt \mathbf{[$c]\cdot{}}[$d] \\
+ [$a*$c] & \lt [$b]x \lt [$d*$c] \\
+ \frac{[$a*$c]}{[$b]} & \lt \frac{[$b]x}{[$b]} \lt \frac{[$d*$c]}{[$b]} \\
+ [$leftEnd] & \lt x \lt [$rightEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd70.pg
new file mode 100644
index 0000000000..ecc2447759
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd70.pg
@@ -0,0 +1,116 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 10 > 1-(2/3)x >= 4
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+ "contextFraction.pl",
+);
+
+##############################################
+
+Context("LimitedNumeric");
+
+do {
+ $c=random(2,5,1);
+ $d=random(2,8,1);
+} until (gcd($c,$d)==1);
+$b=non_zero_random(-5,5,1);
+
+do {
+ $aMinusB=(-$c)*random(2,5,1)*random(-1,1,2);
+ $eMinusB=(-$c)*random(2,5,1)*random(-1,1,2);
+} until ($eMinusB<$aMinusB);
+$a = $b+$aMinusB;
+$e = $b+$eMinusB;
+
+$left = Compute("$a");
+$comp0 = "\gt";
+
+$comp1 = "\geq";
+$right = Compute("$e");
+
+$leftEnd = ($a-$b)*$d/(-$c);
+$rightEnd = ($e-$b)*$d/(-$c);
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x <= $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve the compound inequality algebraically.
+
+ [`` [$left] [$comp0] [$b]-\frac{[$c]}{[$d]}x [$comp1] [$right] ``]
+
+[@KeyboardInstructions('For the [`\infty`] symbol, type [|INF|]*. For the union symbol [`\cup`], type [|U|]*. For [`\leq`], type [|<=|]*. For [`\geq`], type [|>=|]*. For the such that symbol in set-builder notation, [| | |]* is usually above the [|Enter|]* key')@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \gt [$b]-\frac{[$c]}{[$d]}x \geq [$e] \\
+ \mathbf{[$d]\cdot{}}[$a] & \gt \mathbf{[$d]\cdot{}}([$b])-\mathbf{[$d]\cdot{}}\frac{[$c]}{[$d]}x \geq \mathbf{[$d]\cdot{}}[$e] \\
+ [$a*$d] & \gt [$b*$d]-[$c]x \geq [$e*$d] \\
+ [$a*$d] \mathbf{{}-[$b*$d]} & \gt [$b*$d]-[$c]x\mathbf{{}-[$b*$d]} \geq [$e*$d] \mathbf{{}-[$b*$d]}\\
+ [$a*$d-$b*$d] & \gt -[$c]x \geq [$e*$d-$b*$d] \\
+ \frac{[$a*$d-$b*$d]}{-[$c]} & \lt \frac{-[$c]x}{-[$c]} \leq \frac{[$e*$d-$b*$d]}{-[$c]} \\
+ [$leftEnd] & \lt x \leq [$rightEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd80.pg
new file mode 100644
index 0000000000..d325e9ad25
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd80.pg
@@ -0,0 +1,116 @@
+# WeBWorK problem written by Carl Yao, 2014
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type), and write solution in both set notation
+# and interval notation.
+# The equation looks like 10 >= (1+2x)/3 > 4
+#
+# Last updated: Yao, 04/18/2014
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+ "contextFraction.pl",
+);
+
+##############################################
+
+Context("LimitedNumeric");
+
+do {
+$c=random(2,5,1);
+$right1 = $c*random(-3,3,1);
+$left1 = $right1+$c*random(2,5,1);
+
+$b=random(1,5,1);
+$d=random(2,5,1);
+$a=($left1+$b)/$d;
+$e=($right1+$b)/$d;
+} until ( ($a==int($a)) && ($e==int($e)) );
+
+$left = Compute("$a");
+$comp0 = "\geq";
+
+$comp1 = "\gt";
+$right = Compute("$e");
+
+$rightEnd = ($a*$d-$b)/$c;
+$leftEnd = ($e*$d-$b)/$c;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | $leftEnd < x <= $rightEnd}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($leftEnd,$rightEnd]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality:
+
+ [`` [$left] [$comp0] \frac{[$b]+[$c]x}{[$d]} [$comp1] [$right] ``]
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$setans}.
+ An example of set-builder notation is [`\{x\mid 10>x>9\}`]. The *|* symbol is above the keyboard's Enter key.
+
+ In interval notation, the solution set is [______________]{$intans}.
+ An example of interval notation is [`(1,2)`].
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$a] & \geq \frac{[$b]+[$c]x}{[$d]} \gt [$e] \\
+ \mathbf{[$d]\cdot{}}[$a] & \geq \mathbf{[$d]\cdot{}}\frac{[$b]+[$c]x}{[$d]} \gt \mathbf{[$d]\cdot{}}[$e] \\
+ [$a*$d] & \geq [$b]+[$c]x \gt [$e*$d] \\
+ [$a*$d] \mathbf{{}-[$b]}& \geq [$b]+[$c]x \mathbf{{}-[$b]} \gt [$e*$d]\mathbf{{}-[$b]} \\
+ [$left1] & \geq [$c]x \gt [$e*$d-$b] \\
+ \frac{[$left1]}{[$c]} & \geq \frac{[$c]x}{[$c]} \gt \frac{[$e*$d-$b]}{[$c]} \\
+ [$rightEnd] & \geq x \gt [$leftEnd] \\
+\end{aligned}
+ ``]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd85.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd85.pg
new file mode 100644
index 0000000000..31a7de27a4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd85.pg
@@ -0,0 +1,87 @@
+# WeBWorK problem written by Carl Yao, 2016
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type) application problem.
+# The equation looks like 10 >= (1+2x)/3 > 4
+#
+# Last updated: Yao, 06/28/2016
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(30,50,5);
+$b = random(450,600,10);
+$ans1 = random(2030,2050,5);
+$ans2 = random(2055,2085,5);
+
+$func = Compute("$a*(x-2000)+$b");
+$small = $func->eval(x=>$ans1);
+$big = $func->eval(x=>$ans2);
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A city's homeless population since the year 2000 can be modeled by this function:
+
+ [`` f(x)=[$func] ``]
+
+where [`x`] represents the number of year passed since 2000, and [`f(x)`] represents the number of homeless people. Estimate the years when this city's homeless population will be between [`[$small]`] and [`[$big]`] people. Use an inequality to solve this problem.
+
+*Solution*: This city's homeless population will be between [`[$small]`] and [`[$big]`] people between the year [__________]{$ans1} (smaller value) and the year [__________]{$ans2} (bigger value).
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+It's given that the function [`[f(x)]`] represents this city's homeless population. To make this value between [`[$small]`] and [`[$big]`] people, we write the compound inequality [`[$small] \le [$func] \le [$big]`], and then solve it:
+
+ [``
+\begin{aligned}
+ [$small] &\le [$func] \le [$big] \\
+ [$small] \mathbf{-[$b]} &\le [$func] \mathbf{-[$b]} \le [$big] \mathbf{-[$b]} \\
+ [$small-$b] & \le [$a](x-2000) \le [$big-$b] \\
+ \frac{[$small-$b]}{[$a]} & \le \frac{[$a](x-2000)}{[$a]} \le \frac{[$big-$b]}{[$a]} \\
+ [$ans1-2000] & \le x-2000 \le [$ans2-2000] \\
+ [$ans1-2000] \mathbf{+2000} & \le x-2000 \mathbf{+2000} \le [$ans2-2000] \mathbf{+2000} \\
+ [$ans1] &\le x \le [$ans2]
+\end{aligned}
+ ``]
+
+*Solution*: This city's homeless population will be between [`[$small]`] and [`[$big]`] people between the year [`[$ans1]`] and the year [`[$ans2]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd86.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd86.pg
new file mode 100644
index 0000000000..c51b8fe1a7
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd86.pg
@@ -0,0 +1,88 @@
+# WeBWorK problem written by Carl Yao, 2016
+# Portland Community College
+#
+# Solve compound linear inequality ("and" type) application problem.
+# The equation looks like 10 >= (1+2x)/3 > 4
+#
+# Last updated: Yao, 06/28/2016
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','compound','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(2,6,1);
+$b = random(2,6,1);
+$ans1 = random(2,5,1);
+$ans2 = random(6,10,1);
+
+$small = (2*$a+2)*$ans1-2*$b;
+$big = (2*$a+2)*$ans2-2*$b;
+
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A rectangle's length is [`[$b]`] yards less than [`[$a]`] times of its width. If the rectangle's perimeter must be between [`[$small]`] and [`[$big]`] yards, what is the range of its width? Use an inequality to solve this problem.
+
+*Solution*: The rectangle's width must be between [__________]{$ans1} yards (smaller value) and [__________]{$ans2} yards (bigger value).
+
+END_PGML
+
+##############################################
+
+$t1 = 2*$a+2;
+$t2 = $b*2;
+
+BEGIN_PGML_SOLUTION
+
+Assume the rectangle's width is [`w`] yards, then its length is [`[$a]w-[$b]`] yards, and its perimeter is:
+
+ [`` 2([$a]w-[$b])+2w = [$t1]w-[$t2] ``] yards.
+
+Since the rectangle's perimeter is limited to [`[$small]`] and [`[$big]`] yards, we can write an inequality and then solve it:
+
+ [``
+\begin{aligned}
+ [$small] &\le [$t1]w-[$t2] \le [$big] \\
+ [$small] \mathbf{+[$t2]} &\le [$t1]w-[$t2] \mathbf{+[$t2]} \le [$big] \mathbf{+[$t2]} \\
+ [$small+$t2] & \le [$t1]w \le [$big+$t2] \\
+ \frac{[$small+2*$b]}{[$t1]} & \le \frac{[$t1]w}{[$t1]} \le \frac{[$big+2*$b]}{[$t1]} \\
+ [$ans1] &\le w \le [$ans2]
+\end{aligned}
+ ``]
+
+*Solution*: The rectangle's width must be between [`[$ans1]`] yards (smaller value) and [`[$ans2]`] yards (bigger value).
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd90.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd90.pg
new file mode 100644
index 0000000000..f778906335
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityAnd90.pg
@@ -0,0 +1,195 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: 2x-1>=7 and 3x+3<30.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$a = random(-$reach+2,-$reach+10,1);
+$c0 = random(2,5,1);
+$c1 = non_zero_random(-5,5,1);
+$c2 = $c0*$a+$c1;
+
+$left0 = Compute("$c0*x+$c1")->reduce;
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$right0 = Compute("$c2");
+
+$b = random($a+1,$reach-2,1);
+$d0 = random(2,5,1);
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$right1 = Compute("$d2");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("$leftEnd $a,$b $rightEnd");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->lineTo($b,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of an interval on a number line. The segment from $a to $b is shaded. The endpoint $a is $leftEndType, and the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ and } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ [$c0]x+[$c1] &[$symbol0] [$c2] & [$d0]x+[$d1] &[$symbol1] [$d2] \\
+ [$c0]x+[$c1] \mathbf{{}-[$c1]} &[$symbol0] [$c2] \mathbf{{}-[$c1]} & [$d0]x+[$d1]\mathbf{{}-[$d1]} &[$symbol1] [$d2] \mathbf{{}-[$d1]}\\
+ [$c0]x &[$symbol0] [$c2-$c1] & [$d0]x &[$symbol1] [$d2-$d1] \\
+ \frac{[$c0]x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & \frac{[$d0]x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ x &[$symbol0] [$a] & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that the keyword *"and"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ and } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the left endpoint is [$leftEndType]; the right endpoint is [$rightEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics10.pg
new file mode 100644
index 0000000000..538e5c2f0e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics10.pg
@@ -0,0 +1,173 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>=4 and x<9.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$left0 = Compute("x");
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$a = random(-$reach+3,2,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$b = random($a+1,$reach-3,1);
+$right1 = Compute("$b");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("$leftEnd $a,$b $rightEnd");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->lineTo($b,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of an interval on a number line. The segment from $a to $b is shaded. The endpoint $a is $leftEndType, and the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ and } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the left endpoint is [$leftEndType]; the right endpoint is [$rightEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics20.pg
new file mode 100644
index 0000000000..3239e5511c
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics20.pg
@@ -0,0 +1,212 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>=4 and x>1.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+# $direction decides whether the problem is x>1 and x>2
+# or x<1 and x<2
+$direction = (random(-1,1,2)==1) ? 'left' : 'right';
+
+$left0 = Compute("x");
+if ($direction eq 'left') {
+ $symbol0 = random(-1,1,2)>0 ? "<" : "\leq";
+ $symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+ $aEndType = ($symbol0 eq '<') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '<') ? "open" : "closed";
+} else {
+ $symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+ $symbol1 = random(-1,1,2)>0 ? ">" : "\geq";
+ $aEndType = ($symbol0 eq '>') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '>') ? "open" : "closed";
+}
+$a = random(-$reach+3,2,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$b = random($a+1,$reach-3,1);
+$right1 = Compute("$b");
+
+
+
+#These are needed to show inequality symbols in dynamic images.
+if ($direction eq 'left') {
+ $symbol0Show = $symbol0 eq '<' ? '<' : '<=';
+ $symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+} else {
+ $symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+ $symbol1Show = $symbol1 eq '>' ? '>' : '>=';
+}
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+if ($direction eq 'left') {
+ $endpoint = ($symbol0 eq '<') ? ')' : ']';
+ $numberLineEndType = ($symbol0 eq '<') ? 'open' : 'closed';
+ $ans = Compute("(-inf, $a $endpoint");
+} else {
+ $endpoint = ($symbol1 eq '>') ? '(' : '[';
+ $numberLineEndType = ($symbol1 eq '>') ? 'open' : 'closed';
+ $ans = Compute("$endpoint $b, inf)");
+}
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+
+
+if ($direction eq 'left') {
+ if ($symbol0 eq '<') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ $gr->stamps( open_circle($a,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ $gr->stamps( closed_circle($a,0,'blue') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+
+ if ($symbol1 eq '<') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+
+ $gr->moveTo($a,0);
+ $gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $a to negative infinity is shaded. The endpoint $a is $aEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward negative infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $bEndType.";
+
+} else {
+
+ if ($symbol1 eq '>') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ $gr->stamps( open_circle($b,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ $gr->stamps( closed_circle($b,0,'blue') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+
+ if ($symbol0 eq '>') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+
+ $gr->moveTo($b,0);
+ $gr->arrowTo(0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $b to positive infinity is shaded. The endpoint $b is $bEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward positive infinity, while the endpoint $b is $bEndType.";
+}
+
+
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ and } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the right endpoint is [$numberLineEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics30.pg
new file mode 100644
index 0000000000..c27fe967dd
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics30.pg
@@ -0,0 +1,172 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>3 and x<1.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$left0 = Compute("x");
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$a = random($reach-5,$reach-1,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$b = random(-$reach+1,$a-1,1);
+$right1 = Compute("$b");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("DNE");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+# $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+# $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+# $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+# $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+#$gr->moveTo($a,0);
+#$gr->lineTo($b,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of a number line. Nothing on the number line is shaded. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ and } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "and", numbers in the solution set must meet the conditions of both inequalities. In other words, we are look for the intersection of both sets.
+
+Notice that no number can meet the conditions of both inequalities, so the solution is an empty set, or DNE (Does Not Exist).
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics40.pg
new file mode 100644
index 0000000000..6635a03798
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics40.pg
@@ -0,0 +1,173 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>=4 or x<9.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$left0 = Compute("x");
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$a = random(-$reach+3,2,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$b = random($a+1,$reach-3,1);
+$right1 = Compute("$b");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("(-inf,inf)");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+# $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+# $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+# $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+# $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo(0,0);
+$gr->arrowTo(0.99*$reach,0,'blue',3);
+$gr->moveTo(0,0);
+$gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of a number line. The whole number line is shaded. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ or } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in either solution set will be in the final solution. In other words, we are look for the union of both sets. In this case, the final solution covers the whole number line, so the solution is [`(-\infty,\infty)`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics50.pg
new file mode 100644
index 0000000000..1d608af1e9
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics50.pg
@@ -0,0 +1,173 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>=4 or x<1.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$left0 = Compute("x");
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$a = random($reach-10,$reach-1,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$b = random(-$reach+1,$a-1,1);
+$right1 = Compute("$b");
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("(-inf,$b $rightEnd U $leftEnd $a, inf)");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->arrowTo(0.99*$reach,0,'blue',3);
+$gr->moveTo($b,0);
+$gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of a number line. Two segments are shaded. The first segment starts at $a, and goes toward positive infinity, while the endpoint $a is $leftEndType. The second segment starts at $b, and goes toward negative infinity, while the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ or } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in either solution set will be in the final solution. In other words, we are look for the union of both given sets. The solution is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics60.pg
new file mode 100644
index 0000000000..ef84012d08
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityBasics60.pg
@@ -0,0 +1,212 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: x>=4 or x>1.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+# $direction decides whether the problem is x>1 or x>2
+# or x<1 or x<2
+$direction = (random(-1,1,2)==1) ? 'left' : 'right';
+
+$left0 = Compute("x");
+if ($direction eq 'left') {
+ $symbol0 = random(-1,1,2)>0 ? "<" : "\leq";
+ $symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+ $aEndType = ($symbol0 eq '<') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '<') ? "open" : "closed";
+} else {
+ $symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+ $symbol1 = random(-1,1,2)>0 ? ">" : "\geq";
+ $aEndType = ($symbol0 eq '>') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '>') ? "open" : "closed";
+}
+$a = random(-$reach+3,2,1);
+$right0 = Compute("$a");
+
+$left1 = Compute("x");
+$b = random($a+1,$reach-3,1);
+$right1 = Compute("$b");
+
+
+
+#These are needed to show inequality symbols in dynamic images.
+if ($direction eq 'left') {
+ $symbol0Show = $symbol0 eq '<' ? '<' : '<=';
+ $symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+} else {
+ $symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+ $symbol1Show = $symbol1 eq '>' ? '>' : '>=';
+}
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+if ($direction eq 'left') {
+ $endpoint = ($symbol1 eq '<') ? ')' : ']';
+ $numberLineEndType = ($symbol1 eq '<') ? 'open' : 'closed';
+ $ans = Compute("(-inf, $b $endpoint");
+} else {
+ $endpoint = ($symbol0 eq '>') ? '(' : '[';
+ $numberLineEndType = ($symbol0 eq '>') ? 'open' : 'closed';
+ $ans = Compute("$endpoint $a, inf)");
+}
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+
+
+if ($direction eq 'left') {
+ if ($symbol1 eq '<') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ $gr->stamps( open_circle($b,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ $gr->stamps( closed_circle($b,0,'blue') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+
+ if ($symbol0 eq '<') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+
+ $gr->moveTo($b,0);
+ $gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $b to negative infinity is shaded. The endpoint $b is $bEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward negative infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $bEndType.";
+
+} else {
+
+ if ($symbol0 eq '>') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ $gr->stamps( open_circle($a,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ $gr->stamps( closed_circle($a,0,'blue') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+
+ if ($symbol1 eq '>') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+
+ $gr->moveTo($a,0);
+ $gr->arrowTo(0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $a to positive infinity is shaded. The endpoint $a is $aEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward positive infinity, while the endpoint $b is $bEndType.";
+}
+
+
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|U|]* for the union symbol [`\cup`], and [|DNE|]* if there are no solutions.!)@]**
+
+ [`` [$left0] [$symbol0] [$right0] \text{ or } [$left1] [$symbol1] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in the solution set need to meet the conditions of either inequality. In other words, we are look for the union of both given sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the right endpoint is [$numberLineEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr10.pg
new file mode 100644
index 0000000000..5ba55514aa
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr10.pg
@@ -0,0 +1,206 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: 2x+2>=8 or -x+3>-2.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+$a = random($reach-10,$reach-1,1);
+$c0 = random(2,5,1);
+$c1 = non_zero_random(-5,5,1);
+$c2 = $c0*$a+$c1;
+
+$left0 = Compute("$c0*x+$c1")->reduce;
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$right0 = Compute("$c2");
+
+# $symbol1 is the inequality symbol in the solution.
+# $symbol1Original is the symbol in the inequality.
+
+$b = random(-$reach+1,$a-1,1);
+$d0 = -1;
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$right1 = Compute("$d2");
+$symbol1Original = ($symbol1 eq '<') ? '>' : '\geq';
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("(-inf,$b $rightEnd U $leftEnd $a, inf)");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->arrowTo(0.99*$reach,0,'blue',3);
+$gr->moveTo($b,0);
+$gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of a number line. Two segments are shaded. The first segment starts at $a, and goes toward positive infinity, while the endpoint $a is $leftEndType. The second segment starts at $b, and goes toward negative infinity, while the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+Please type:
+
+* *inf* for [`\infty`],
+* [|DNE|]* for "no solution"
+* *U* for the union symbol [`\cup`]
+
+ [`` [$left0] [$symbol0] [$right0] \text{ or } [$left1] [$symbol1Original] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ [$c0]x+[$c1] &[$symbol0] [$c2] & -x+[$d1] &[$symbol1Original] [$d2] \\
+ [$c0]x+[$c1] \mathbf{{}-[$c1]} &[$symbol0] [$c2] \mathbf{{}-[$c1]} & -x+[$d1]\mathbf{{}-[$d1]} &[$symbol1Original] [$d2] \mathbf{{}-[$d1]}\\
+ [$c0]x &[$symbol0] [$c2-$c1] & [$d0]\cdot x &[$symbol1Original] [$d2-$d1] \\
+ \frac{[$c0]x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & \frac{[$d0] \cdot x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ x &[$symbol0] [$a] & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that, in the second inequality, the direction of inequality symbol changed from [`[$symbol1Original]`] to [`[$symbol1]`] once we divided a negative number on both sides.
+
+Notice that the keyword *"or"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ or } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in either solution set will be in the final solution. In other words, we are look for the union of both sets. The solution is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr20.pg
new file mode 100644
index 0000000000..1318ad7ad3
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr20.pg
@@ -0,0 +1,210 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: -2x+2<=-4 or -x+3>-2.
+#
+# Last edited by Carl Yao 07/10/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+# $symbol0 is the inequality symbol in the solution.
+# $symbol0Original is the symbol in the inequality.
+
+$a = random($reach-10,$reach-1,1);
+$c0 = random(-5,-2,1);
+$c1 = non_zero_random(-5,5,1);
+$c2 = $c0*$a+$c1;
+
+$left0 = Compute("$c0*x+$c1")->reduce;
+$symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+$right0 = Compute("$c2");
+$symbol0Original = ($symbol0 eq '>') ? '<' : '\leq';
+
+# $symbol1 is the inequality symbol in the solution.
+# $symbol1Original is the symbol in the inequality.
+
+$b = random(-$reach+1,$a-1,1);
+$d0 = -1;
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+$right1 = Compute("$d2");
+$symbol1Original = ($symbol1 eq '<') ? '>' : '\geq';
+
+#These are needed to show inequality symbols in dynamic images.
+$symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+$symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+
+$leftEnd = ($symbol0 eq ">") ? '(' : '[';
+$rightEnd = ($symbol1 eq "<") ? ')' : ']';
+$ans = Compute("(-inf,$b $rightEnd U $leftEnd $a, inf)");
+
+
+Context("Numeric");
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+if ($leftEnd eq '(') {
+ $gr->stamps( open_circle($a,0,'blue') );
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+} else {
+ $gr->stamps( closed_circle($a,0,'blue') );
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+};
+
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+if ($rightEnd eq ')') {
+ $gr->stamps( open_circle($b,0,'blue') );
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+} else {
+ $gr->stamps( closed_circle($b,0,'blue') );
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+};
+
+$gr->moveTo($a,0);
+$gr->arrowTo(0.99*$reach,0,'blue',3);
+$gr->moveTo($b,0);
+$gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+$gr->moveTo($a,$line0Height);
+if ( ($symbol0 eq '>') or ($symbol0 eq '\geq') ) {
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+} else {
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+}
+
+$gr->moveTo($b,$line1Height);
+if ( ($symbol1 eq '<') or ($symbol1 eq '\leq') ) {
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+} else {
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+}
+
+$leftEndType = ($leftEnd eq '(') ? 'open' : 'closed';
+$rightEndType = ($rightEnd eq ')') ? 'open' : 'closed';
+
+$ALT = "Graph of a number line. Two segments are shaded. The first segment starts at $a, and goes toward positive infinity, while the endpoint $a is $leftEndType. The second segment starts at $b, and goes toward negative infinity, while the endpoint $b is $rightEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $leftEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $rightEndType.";
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+Please type:
+
+* *inf* for [`\infty`],
+* [|DNE|]* for "no solution"
+* *U* for the union symbol [`\cup`]
+
+ [`` [$left0] [$symbol0Original] [$right0] \text{ or } [$left1] [$symbol1Original] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ [$c0]x+[$c1] &[$symbol0Original] [$c2] & -x+[$d1] &[$symbol1Original] [$d2] \\
+ [$c0]x+[$c1] \mathbf{{}-[$c1]} &[$symbol0Original] [$c2] \mathbf{{}-[$c1]} & -x+[$d1]\mathbf{{}-[$d1]} &[$symbol1Original] [$d2] \mathbf{{}-[$d1]}\\
+ [$c0]x &[$symbol0Original] [$c2-$c1] & [$d0]\cdot x &[$symbol1Original] [$d2-$d1] \\
+ \frac{[$c0]x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & \frac{[$d0] \cdot x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ x &[$symbol0] [$a] & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that, in both inequalities, the direction of inequality symbol changed once we divided a negative number on both sides.
+
+Notice that the keyword *"or"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ or } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in either solution set will be in the final solution. In other words, we are look for the union of both sets. The solution is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr30.pg
new file mode 100644
index 0000000000..b9c219fa19
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/CompoundInequalityOr30.pg
@@ -0,0 +1,250 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Solve basic compound inequalities. Problem is like: -x+3<=4 or -2x<10.
+#
+# Last edited by Carl Yao 07/27/2014
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+# "PCCgraphMacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserPopUp.pl",
+# "contextInequalitySetBuilder.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+#$reach is the maximum value shown on the graph.
+$reach = 7;
+
+# $direction decides whether the problem is x>1 or x>2
+# or x<1 or x<2
+$direction = (random(-1,1,2)==1) ? 'left' : 'right';
+
+# $symbol0 is the inequality symbol in the solution.
+# $symbol0Original is the symbol in the inequality.
+
+$a = random(-$reach+2,-$reach+7,1);
+$c0 = -1;
+$c1 = 0;
+$c2 = $c0*$a+$c1;
+
+$b = random($a+1,$reach-2,1);
+do {$d0 = random(-5,-2,1);} until ($d0!=$c0);
+$d1 = non_zero_random(-5,5,1);
+$d2 = $d0*$b+$d1;
+
+$left0 = Compute("x");
+if ($direction eq 'left') {
+ $symbol0 = random(-1,1,2)>0 ? "<" : "\leq";
+ $symbol1 = random(-1,1,2)>0 ? "<" : "\leq";
+ $aEndType = ($symbol0 eq '<') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '<') ? "open" : "closed";
+ $symbol0Original = ($symbol0 eq '<') ? '>' : '\geq';
+ $symbol1Original = ($symbol1 eq '<') ? '>' : '\geq';
+} else {
+ $symbol0 = random(-1,1,2)>0 ? ">" : "\geq";
+ $symbol1 = random(-1,1,2)>0 ? ">" : "\geq";
+ $aEndType = ($symbol0 eq '>') ? "open" : "closed";
+ $bEndType = ($symbol1 eq '>') ? "open" : "closed";
+ $symbol0Original = ($symbol0 eq '>') ? '<' : '\leq';
+ $symbol1Original = ($symbol1 eq '>') ? '<' : '\leq';
+}
+
+$left0 = Compute("$c0*x+$c1")->reduce;
+$right0 = Compute("$c2");
+
+$left1 = Compute("$d0*x+$d1")->reduce;
+$right1 = Compute("$d2");
+
+
+
+#These are needed to show inequality symbols in dynamic images.
+if ($direction eq 'left') {
+ $symbol0Show = $symbol0 eq '<' ? '<' : '<=';
+ $symbol1Show = $symbol1 eq '<' ? '<' : '<=';
+} else {
+ $symbol0Show = $symbol0 eq '>' ? '>' : '>=';
+ $symbol1Show = $symbol1 eq '>' ? '>' : '>=';
+}
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+
+if ($direction eq 'left') {
+ $endpoint = ($symbol1 eq '<') ? ')' : ']';
+ $numberLineEndType = ($symbol1 eq '<') ? 'open' : 'closed';
+ $ans = Compute("(-inf, $b $endpoint");
+} else {
+ $endpoint = ($symbol0 eq '>') ? '(' : '[';
+ $numberLineEndType = ($symbol0 eq '>') ? 'open' : 'closed';
+ $ans = Compute("$endpoint $a, inf)");
+}
+
+Context("Numeric");
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio*3;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio*3;
+$aboveSpace = $reach*$aspectRatio*3;
+$belowSpace = $reach*$aspectRatio;
+$hardCopyPercent = 400; #meaning 40%
+
+$line0Height = $reach*$aspectRatio;
+$line1Height = $reach*$aspectRatio*2;
+
+$gr = init_graph(-$reach,-$belowSpace,$reach,$aboveSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+);
+@ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$belowSpace/4,0,'black','center','top'));
+$gr->lb( new Label($a,-$belowSpace/4,$a,'blue','center','top'));
+$gr->lb( new Label($b,-$belowSpace/4,$b,'blue','center','top'));
+
+
+if ($direction eq 'left') {
+ if ($symbol1 eq '<') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ $gr->stamps( open_circle($b,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ $gr->stamps( closed_circle($b,0,'blue') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(-0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b+$reach/20,$line1Height,"x $symbol1Show $b",'black','left','middle'));
+
+ if ($symbol0 eq '<') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(-0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a+$reach/20,$line0Height,"x $symbol0Show $a",'red','left','middle'));
+
+ $gr->moveTo($b,0);
+ $gr->arrowTo(-0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $b to negative infinity is shaded. The endpoint $b is $bEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward negative infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward negative infinity, while the endpoint $b is $bEndType.";
+
+} else {
+
+ if ($symbol0 eq '>') {
+ $gr->stamps( open_circle($a,$line0Height,'red') );
+ $gr->stamps( open_circle($a,0,'blue') );
+ } else {
+ $gr->stamps( closed_circle($a,$line0Height,'red') );
+ $gr->stamps( closed_circle($a,0,'blue') );
+ }
+ $gr->moveTo($a,$line0Height);
+ $gr->arrowTo(0.99*$reach,$line0Height,'red',3);
+ $gr->lb( new Label($a-$reach/20,$line0Height,"x $symbol0Show $a",'red','right','middle'));
+
+ if ($symbol1 eq '>') {
+ $gr->stamps( open_circle($b,$line1Height,'black') );
+ } else {
+ $gr->stamps( closed_circle($b,$line1Height,'black') );
+ }
+ $gr->moveTo($b,$line1Height);
+ $gr->arrowTo(0.99*$reach,$line1Height,'black',3);
+ $gr->lb( new Label($b-$reach/20,$line1Height,"x $symbol1Show $b",'black','right','middle'));
+
+ $gr->moveTo($a,0);
+ $gr->arrowTo(0.99*$reach,0,'blue',3);
+
+ $ALT = "Graph of an interval on a number line. The segment from $a to positive infinity is shaded. The endpoint $a is $aEndType. Above the number line, there are two arrowed lines. The first arrow starts from $a and goes toward positive infinity, while the endpoint $a is $aEndType. The second arrow starts from $b and goes toward positive infinity, while the endpoint $b is $bEndType.";
+}
+
+
+
+##############################################
+
+
+
+BEGIN_PGML
+
+Solve this compound inequality, and write your answer in _interval notation_.
+
+Please type:
+
+* *inf* for [`\infty`],
+* [|DNE|]* for "no solution"
+* *U* for the union symbol [`\cup`]
+
+ [`` [$left0] [$symbol0Original] [$right0] \text{ or } [$left1] [$symbol1Original] [$right1] ``]
+
+[___________]{$ans}
+
+END_PGML
+
+
+
+##############################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+We first need to solve both inequalities.
+
+ [``
+\begin{aligned}[t]
+ -x &[$symbol0Original] [$c2] & [$d0]x+[$d1] &[$symbol1Original] [$d2] \\
+ [$c0] \cdot x &[$symbol0Original] [$c2] & [$d0]x+[$d1]\mathbf{{}-[$d1]} &[$symbol1Original] [$d2] \mathbf{{}-[$d1]}\\
+ \frac{[$c0] \cdot x}{[$c0]} &[$symbol0] \frac{[$c2-$c1]}{[$c0]} & [$d0] x &[$symbol1Original] [$d2-$d1] \\
+ x &[$symbol0] [$a] & \frac{[$d0] x}{[$d0]} &[$symbol1] \frac{[$d2-$d1]}{[$d0]} \\
+ & & x &[$symbol1] [$b]
+\end{aligned}
+ ``]
+
+Notice that, in both inequalities, the direction of inequality symbol changed once we divided a negative number on both sides.
+
+Notice that the keyword *"or"* connects those two inequalities, so the solution is [` x [$symbol0] [$a] \textbf{ or } x [$symbol1] [$b] `]. Next, we need to find the combined solution.
+
+When there are two inequalities, it's helpful to graph them on a number line.
+
+>>[@ image( insertGraph($gr), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent, extra_html_tags=>"alt = '$ALT' title = '$ALT' ") @]*<<
+
+Since the operation connecting both inequalities is "or", numbers in the solution set need to meet the conditions of either inequality. In other words, we are look for the union of both given sets. The blue segment on the number line represents the solutions.
+
+We need to pay special attention to the endpoints. Notice that, in the solution set, the right endpoint is [$numberLineEndType]. So the solution set in interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation50.pg
new file mode 100644
index 0000000000..158abf304a
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation50.pg
@@ -0,0 +1,116 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,2,1);
+$b = random($a+1,4,1);
+$leftType = random(0,1,1)==0 ? ')' : ']';
+$rightType = random(0,1,1)==0 ? '(' : '[';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$a $leftType U $rightType $b,inf)");
+
+Context("Numeric");
+
+$aspectRatio = 1/5;
+$horPixel = 240;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 6;
+$pixel = 2*$reach/240;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+
+#make the graphs
+$gr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
+ size=>[$horPixel,$verPixel]);
+$gr->moveTo(0,0);
+$gr->arrowTo($reach-2*$pixel,0,'black',1);
+$gr->moveTo(0,0);
+$gr->arrowTo(-$reach+2*$pixel,0,'black',1);
+
+@ticks = ();
+for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
+$gr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
+$gr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
+
+$shadingoffset = $verticalSpace/1.2;
+$gr->lb( new Label($a,$shadingoffset,$leftType,'blue','center','middle','giant'));
+$gr->moveTo($a,$shadingoffset);
+$gr->arrowTo(-$reach+2*$pixel,$shadingoffset,'blue',1);
+
+$gr->lb( new Label($b,$shadingoffset,$rightType,'blue','center','middle','giant'));
+$gr->moveTo($b,$shadingoffset);
+$gr->arrowTo($reach-2*$pixel,$shadingoffset,'blue',1);
+
+
+$alt = "This is graph of an interval on a number line. There is a $leftType at $a and everything to the left of $a is shaded; there is a $rightType at $b and everything to the right of $b is shaded.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it in interval notation.
+
+>> [@image( insertGraph($gr), width=>$screenXSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>"title='$alt' alt= '$alt' align='top'" ) @]* <<
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], [|>=|]* for [`\geq`], capitalized U for the union symbol.!)@]**
+
+ In interval notation: [_____________________]{$intans}
+
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation60.pg
new file mode 100644
index 0000000000..4a1eba1143
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToIntervalNotation60.pg
@@ -0,0 +1,112 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,2,1);
+$b = random($a+1,4,1);
+$leftType = random(0,1,1)==0 ? '(' : '[';
+$rightType = random(0,1,1)==0 ? ')' : ']';
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("$leftType $a,$b $rightType");
+
+Context("Numeric");
+
+$aspectRatio = 1/5;
+$horPixel = 240;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 6;
+$pixel = 2*$reach/240;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+
+#make the graphs
+$gr = init_graph(-$reach,-$verticalSpace,$reach,2*$verticalSpace,
+ size=>[$horPixel,$verPixel]);
+$gr->moveTo(0,0);
+$gr->arrowTo($reach-2*$pixel,0,'black',1);
+$gr->moveTo(0,0);
+$gr->arrowTo(-$reach+2*$pixel,0,'black',1);
+
+@ticks = ();
+for my $j ((-$reach+1)..($reach-1)) {push(@ticks,$j);};
+$gr->h_ticks(0,"black",@ticks);
+$gr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top','large'));
+$gr->lb( new Label(4,-$verticalSpace/5,4,'black','center','top','large'));
+$gr->lb( new Label(-4,-$verticalSpace/5,-4,'black','center','top','large'));
+
+$shadingoffset = $verticalSpace/1.2;
+$gr->lb( new Label($a,$shadingoffset,$leftType,'blue','center','middle','giant'));
+$gr->moveTo($a,$shadingoffset);
+$gr->lineTo($b,$shadingoffset,'blue',1);
+$gr->lb( new Label($b,$shadingoffset,$rightType,'blue','center','middle','giant'));
+
+$alt = "This is graph of an interval on a number line. There is a $leftType at $a and a $rightType at $b. The segment in between is shaded.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it in interval notation.
+
+>> [@image( insertGraph($gr), width=>$screenXSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>"title='$alt' alt= '$alt' align='top'" ) @]* <<
+
+[@KeyboardInstructions(q!Please type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], [|>=|]* for [`\geq`], capitalized U for the union symbol.!)@]**
+
+ In interval notation: [_____________________]{$intans}
+
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation10.pg
new file mode 100644
index 0000000000..8c6f2d9514
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation10.pg
@@ -0,0 +1,116 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Give a graph of an inequality, write the set notation and interval notation.
+# Answer is like (3, inf).
+#
+# Last edited by Jordan 8/28/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,4,0.5);
+
+$symbol = '>';
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
+do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
+$setans = Compute("{ $var | $var $symbol $a}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($a,inf)");
+Context("Numeric");
+
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[openinfiniteinterval] coordinates {($a,0) (6,0)};
+\end{axis}
+END_TIKZ
+
+
+$alt = "Graph of an interval on a number line. There is a left parenthesis at $a and everything right of that is shaded. To the right of the axis, there is a letter $var.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it using set-builder notation and interval notation.
+
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
+
+[_]{$setans}{30}
+
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+
+[_]{$intans}{30}
+
+
+END_PGML
+
+
+
+##############################################
+
+
+BEGIN_PGML_SOLUTION
+
+Since the given graph shades all the values greater than [`[$a]`] (but not equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
+
+The corresponding set notation is [`[$setans]`].
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation20.pg
new file mode 100644
index 0000000000..eef96ac55e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation20.pg
@@ -0,0 +1,113 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Give a graph of an inequality, write the set notation and interval notation.
+# Answer is like [3, inf).
+#
+# Last edited by Jordan 8/28/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,4,0.5);
+
+$symbol = '\ge';
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
+do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
+$setans = Compute("{ $var | $var >= $a}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$a,inf)");
+Context("Numeric");
+
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[closedinfiniteinterval] coordinates {($a,0) (6,0)};
+\end{axis}
+END_TIKZ
+
+
+$alt = "Graph of an interval on a number line. There is a left bracket at $a and everything right of that is shaded. To the right of the axis, there is a letter $var.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it using set-builder notation and interval notation.
+
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
+
+[_]{$setans}{30}
+
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+
+[_]{$intans}{30}
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+Since the given graph shades all the values greater than [`[$a]`] (and equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
+
+The corresponding set notation is [`[$setans]`].
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation30.pg
new file mode 100644
index 0000000000..11039f4549
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation30.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Give a graph of an inequality, write the set notation and interval notation.
+# Answer is like (-inf,3).
+#
+# Last edited by Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,4,0.5);
+
+$symbol = '<';
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
+do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
+$setans = Compute("{ $var | $var $symbol $a}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$a)");
+Context("Numeric");
+
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[infiniteopeninterval] coordinates {(-6,0) ($a,0)};
+\end{axis}
+END_TIKZ
+
+$alt = "Graph of an interval on a number line. There is a right parenthesis at $a and everything left of that is shaded. To the right of the axis, there is a letter $var.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it using set-builder notation and interval notation.
+
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
+
+[_]{$setans}{30}
+
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+
+[_]{$intans}{30}
+
+
+END_PGML
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+Since the given graph shades all the values less than [`[$a]`] (but not equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
+
+The corresponding set notation is [`[$setans]`].
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation40.pg
new file mode 100644
index 0000000000..50758c6a8b
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/GraphToSetAndIntervalNotation40.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Give a graph of an inequality, write the set notation and interval notation.
+# Answer is like (-inf,3].
+#
+# Last edited by Jordan 8/28/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation','interval notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "contextInequalitySetBuilder.pl",
+ "PCCmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+TEXT(beginproblem());
+Context("Numeric");
+
+$a = random(-4,4,0.5);
+
+$symbol = '\leq';
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+$var = list_random('a'..'d','f'..'k','m','n','p'..'r','t'..'z');
+do {Context()->variables->add($var => 'Real');} unless ($var eq 'x');
+$setans = Compute("{ $var | $var <= $a}");
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$a]");
+Context("Numeric");
+
+$numberline = createTikZImage();
+$numberline->addToPreamble(latexImagePreamble());
+$numberline->BEGIN_TIKZ
+\begin{axis}
+ [
+ numberline,
+ xmin=-6,
+ xmax=6,
+ xtick={-5,0,...,5},
+ minor xtick={-5,-4,...,5},
+ xlabel = {\($var\)},
+ ]
+ \addplot[infiniteclosedinterval] coordinates {(-6,0) ($a,0)};
+\end{axis}
+END_TIKZ
+
+$alt = "Graph of an interval on a number line. There is a right bracket at $a and everything left of that is shaded. To the right of the axis, there is a letter $var.";
+
+##############################################
+
+
+BEGIN_PGML
+For the interval expressed in the number line, write it using set-builder notation and interval notation.
+
+>> [@image(insertGraph($numberline), width => 360, tex_size => 1000, alt => "$alt") @]* <<
+
+[@KeyboardInstructions(q!Type [|INF|]* for [`\infty`], [|<=|]* for [`\leq`], and [|>=|]* for [`\geq`].!)@]**
+
+[@KeyboardInstructions(q!Enter the set in set-builder notation here.!)@]**
+
+[_]{$setans}{30}
+
+[@KeyboardInstructions(q!Enter the set in interval notation here.!)@]**
+
+[_]{$intans}{30}
+
+END_PGML
+
+
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+Since the given graph shades all the values less than [`[$a]`] (and equal to [`[$a]`]) the graph represents the inequality [`[$var] [$symbol] [$a]`].
+
+The corresponding set notation is [`[$setans]`].
+
+The corresponding interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot10.pg
new file mode 100644
index 0000000000..db10e77b45
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot10.pg
@@ -0,0 +1,173 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Tell whether a number x is a solution of an inequality ax+b>c.
+# a, b, c are positive or negative integers.
+#
+# Last updated: Jordan 8/28/13; Carl Yao, 7/15/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear')
+## DBCCSS('7.EE.4','A-REI.3','6.EE.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "unionTables.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+$symbol = '>';
+
+$a=random(2,5,1)*random(-1,1,2);
+$cMinusB = random(1,5,1)*$a;
+$c=random(-10,10,1);
+$b=$c-$cMinusB;
+
+$critical = ($c-$b)/$a;
+
+$popupYes = PopUp(
+ ['?',"is","is not"],
+ 1,
+);
+
+$popupNo = PopUp(
+ ['?',"is","is not"],
+ 2,
+);
+
+
+
+do {$x1=random($critical-10,$critical-1,1);} until ($x1!=0);
+if ($a*$x1+$b>$c) {
+$popup1 = $popupYes;
+}
+else {
+$popup1 = $popupNo;
+}
+
+$x2=$critical;
+$popup2 = $popupNo;
+
+$x3=0;
+if ($a*$x3+$b>$c) {
+$popup3 = $popupYes;
+}
+else {
+$popup3 = $popupNo;
+}
+
+
+do {$x4=random($critical+1,$critical+10,1);} until ($x4!=0);
+if ($a*$x4+$b>$c) {
+$popup4 = $popupYes;
+}
+else {
+$popup4 = $popupNo;
+}
+
+
+if ($popup1 == $popupYes) {$trueFalse1 = 'true'; $isIsNot1 = 'is';}
+ else {$trueFalse1 = 'not true'; $isIsNot1 = 'is not';};
+if ($popup2 == $popupYes) {$trueFalse2 = 'true'; $isIsNot2 = 'is';}
+ else {$trueFalse2 = 'not true'; $isIsNot2 = 'is not';};
+if ($popup3 == $popupYes) {$trueFalse3 = 'true'; $isIsNot3 = 'is';}
+ else {$trueFalse3 = 'not true'; $isIsNot3 = 'is not';}
+if ($popup4 == $popupYes) {$trueFalse4 = 'true'; $isIsNot4 = 'is';}
+ else {$trueFalse4 = 'not true'; $isIsNot4 = 'is not';};
+
+#randomize the answers
+$ref_ans = [
+ [ $x1, $popup1, $trueFalse1, $isIsNot1],
+ [ $x2, $popup2, $trueFalse2, $isIsNot2],
+ [ $x3, $popup3, $trueFalse3, $isIsNot3],
+ [ $x4, $popup4, $trueFalse4, $isIsNot4],
+];
+
+for ($i=0;$i<=2;$i++) {
+ $j=random(0,3,1);
+ do {$k=random(0,3,1);} until ($j!=$k);
+ $temp=$ref_ans->[$j];
+ $ref_ans->[$j]=$ref_ans->[$k];
+ $ref_ans->[$k]=$temp;
+}
+
+($x0,$x1,$x2,$x3) = ($ref_ans->[0][0],$ref_ans->[1][0],$ref_ans->[2][0],$ref_ans->[3][0]);
+($popup0,$popup1,$popup2,$popup3) = ($ref_ans->[0][1],$ref_ans->[1][1],$ref_ans->[2][1],$ref_ans->[3][1]);
+($trueFalse0,$trueFalse1,$trueFalse2,$trueFalse3) = ($ref_ans->[0][2],$ref_ans->[1][2],$ref_ans->[2][2],$ref_ans->[3][2]);
+($isIsNot0,$isIsNot1,$isIsNot2,$isIsNot3) = ($ref_ans->[0][3],$ref_ans->[1][3],$ref_ans->[2][3],$ref_ans->[3][3]);
+
+
+
+##############################################
+
+TEXT(beginproblem());
+
+
+BEGIN_PGML
+
+Decide whether each value is a solution to the given inequality.
+
+[`` [$a] x +[$b] [$symbol] [$c] ``]
+a. [`x=[$x0]`] [__]{$popup0} a solution.
+
+b. [`x=[$x1]`] [__]{$popup1} a solution.
+
+c. [`x=[$x2]`] [__]{$popup2} a solution.
+
+d. [`x=[$x3]`] [__]{$popup3} a solution.
+
+
+
+END_PGML
+
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+We substitute each [`x`] value into the inequality [` [$a] x + [$b] [$symbol] [$c]`] and see whether the inequality is true.
+
+a. [` \begin{aligned}[t]
+ [$a] ([$x0]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x0+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse0], [$x0] [$isIsNot0] a solution to the inequality.
+----
+b. [` \begin{aligned}[t]
+ [$a] ([$x1]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x1+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse1], [$x1] [$isIsNot1] a solution to the inequality.
+----
+c. [` \begin{aligned}[t]
+ [$a] ([$x2]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x2+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse2], [$x2] [$isIsNot2] a solution to the inequality.
+----
+d. [` \begin{aligned}[t]
+ [$a] ([$x3]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x3+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse3], [$x3] [$isIsNot3] a solution to the inequality.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot20.pg
new file mode 100644
index 0000000000..fae79dcba9
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot20.pg
@@ -0,0 +1,178 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Tell whether a number x is a solution of an inequality ax+b>=c.
+# a, b, c are positive or negative integers.
+#
+# Last updated: Jordan 8/29/13; Carl Yao, 7/15/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear')
+## DBCCSS('7.EE.4','A-REI.3',,'6.EE.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "unionTables.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+$symbol = '\ge';
+
+$a=random(2,5,1)*random(-1,1,2);
+$cMinusB = random(1,5,1)*$a;
+$c=random(-10,10,1);
+$b=$c-$cMinusB;
+
+$critical = ($c-$b)/$a;
+
+$popupYes = PopUp(
+ ['?',"is","is not"],
+ 1,
+);
+
+$popupNo = PopUp(
+ ['?',"is","is not"],
+ 2,
+);
+
+
+
+do {$x1=random($critical-10,$critical-1,1);} until ($x1!=0);
+if ($a*$x1+$b>=$c) {
+$popup1 = $popupYes;
+}
+else {
+$popup1 = $popupNo;
+}
+
+$x2=$critical;
+if ($a*$x2+$b>=$c) {
+$popup2 = $popupYes;
+}
+else {
+$popup2 = $popupNo;
+}
+
+
+$x3=0;
+if ($a*$x3+$b>=$c) {
+$popup3 = $popupYes;
+}
+else {
+$popup3 = $popupNo;
+}
+
+
+do {$x4=random($critical+1,$critical+10,1);} until ($x4!=0);
+if ($a*$x4+$b>=$c) {
+$popup4 = $popupYes;
+}
+else {
+$popup4 = $popupNo;
+}
+
+
+if ($popup1 == $popupYes) {$trueFalse1 = 'true'; $isIsNot1 = 'is';}
+ else {$trueFalse1 = 'not true'; $isIsNot1 = 'is not';};
+if ($popup2 == $popupYes) {$trueFalse2 = 'true'; $isIsNot2 = 'is';}
+ else {$trueFalse2 = 'not true'; $isIsNot2 = 'is not';};
+if ($popup3 == $popupYes) {$trueFalse3 = 'true'; $isIsNot3 = 'is';}
+ else {$trueFalse3 = 'not true'; $isIsNot3 = 'is not';}
+if ($popup4 == $popupYes) {$trueFalse4 = 'true'; $isIsNot4 = 'is';}
+ else {$trueFalse4 = 'not true'; $isIsNot4 = 'is not';};
+
+#randomize the answers
+$ref_ans = [
+ [ $x1, $popup1, $trueFalse1, $isIsNot1],
+ [ $x2, $popup2, $trueFalse2, $isIsNot2],
+ [ $x3, $popup3, $trueFalse3, $isIsNot3],
+ [ $x4, $popup4, $trueFalse4, $isIsNot4],
+];
+
+for ($i=0;$i<=2;$i++) {
+ $j=random(0,3,1);
+ do {$k=random(0,3,1);} until ($j!=$k);
+ $temp=$ref_ans->[$j];
+ $ref_ans->[$j]=$ref_ans->[$k];
+ $ref_ans->[$k]=$temp;
+}
+
+($x0,$x1,$x2,$x3) = ($ref_ans->[0][0],$ref_ans->[1][0],$ref_ans->[2][0],$ref_ans->[3][0]);
+($popup0,$popup1,$popup2,$popup3) = ($ref_ans->[0][1],$ref_ans->[1][1],$ref_ans->[2][1],$ref_ans->[3][1]);
+($trueFalse0,$trueFalse1,$trueFalse2,$trueFalse3) = ($ref_ans->[0][2],$ref_ans->[1][2],$ref_ans->[2][2],$ref_ans->[3][2]);
+($isIsNot0,$isIsNot1,$isIsNot2,$isIsNot3) = ($ref_ans->[0][3],$ref_ans->[1][3],$ref_ans->[2][3],$ref_ans->[3][3]);
+
+
+##############################################
+
+TEXT(beginproblem());
+
+
+BEGIN_PGML
+
+Decide whether each value is a solution to the given inequality.
+
+[`` [$a] x +[$b] [$symbol] [$c] ``]
+a. [`x=[$x0]`] [__]{$popup0} a solution.
+
+b. [`x=[$x1]`] [__]{$popup1} a solution.
+
+c. [`x=[$x2]`] [__]{$popup2} a solution.
+
+d. [`x=[$x3]`] [__]{$popup3} a solution.
+
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+We substitute each [`x`] value into the inequality [` [$a] x + [$b] [$symbol] [$c]`] and see whether the inequality is true.
+
+a. [` \begin{aligned}[t]
+ [$a] ([$x0]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x0+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse0], [$x0] [$isIsNot0] a solution to the inequality.
+----
+b. [` \begin{aligned}[t]
+ [$a] ([$x1]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x1+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse1], [$x1] [$isIsNot1] a solution to the inequality.
+----
+c. [` \begin{aligned}[t]
+ [$a] ([$x2]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x2+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse2], [$x2] [$isIsNot2] a solution to the inequality.
+----
+d. [` \begin{aligned}[t]
+ [$a] ([$x3]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x3+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse3], [$x3] [$isIsNot3] a solution to the inequality.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot30.pg
new file mode 100644
index 0000000000..78d6413919
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalitySolutionOrNot30.pg
@@ -0,0 +1,180 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Tell whether a number x is a solution of an inequality c<=b+ax.
+# a, b, c are positive or negative integers.
+#
+# Last updated: Jordan 8/29/13; Carl Yao, 7/15/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear')
+## DBCCSS('7.EE.4','A-REI.3',,'6.EE.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "unionTables.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+$symbol = '\le';
+
+$a=random(2,5,1)*random(-1,1,2);
+$cMinusB = random(1,5,1)*$a;
+$c=random(-10,10,1);
+$b=$c-$cMinusB;
+
+$critical = ($c-$b)/$a;
+
+
+$popupYes = PopUp(
+ ['?',"is","is not"],
+ 1,
+);
+
+$popupNo = PopUp(
+ ['?',"is","is not"],
+ 2,
+);
+
+
+do {$x1=random($critical-10,$critical-1,1);} until ($x1!=0);
+if ($a*$x1+$b<=$c) {
+$popup1 = $popupYes;
+}
+else {
+$popup1 = $popupNo;
+}
+
+$x2=$critical;
+if ($a*$x2+$b<=$c) {
+$popup2 = $popupYes;
+}
+else {
+$popup2 = $popupNo;
+}
+
+
+$x3=0;
+if ($a*$x3+$b<=$c) {
+$popup3 = $popupYes;
+}
+else {
+$popup3 = $popupNo;
+}
+
+
+do {$x4=random($critical+1,$critical+10,1);} until ($x4!=0);
+if ($a*$x4+$b<=$c) {
+$popup4 = $popupYes;
+}
+else {
+$popup4 = $popupNo;
+}
+
+
+if ($popup1 == $popupYes) {$trueFalse1 = 'true'; $isIsNot1 = 'is';}
+ else {$trueFalse1 = 'not true'; $isIsNot1 = 'is not';};
+if ($popup2 == $popupYes) {$trueFalse2 = 'true'; $isIsNot2 = 'is';}
+ else {$trueFalse2 = 'not true'; $isIsNot2 = 'is not';};
+if ($popup3 == $popupYes) {$trueFalse3 = 'true'; $isIsNot3 = 'is';}
+ else {$trueFalse3 = 'not true'; $isIsNot3 = 'is not';}
+if ($popup4 == $popupYes) {$trueFalse4 = 'true'; $isIsNot4 = 'is';}
+ else {$trueFalse4 = 'not true'; $isIsNot4 = 'is not';};
+
+#randomize the answers
+$ref_ans = [
+ [ $x1, $popup1, $trueFalse1, $isIsNot1],
+ [ $x2, $popup2, $trueFalse2, $isIsNot2],
+ [ $x3, $popup3, $trueFalse3, $isIsNot3],
+ [ $x4, $popup4, $trueFalse4, $isIsNot4],
+];
+
+for ($i=0;$i<=2;$i++) {
+ $j=random(0,3,1);
+ do {$k=random(0,3,1);} until ($j!=$k);
+ $temp=$ref_ans->[$j];
+ $ref_ans->[$j]=$ref_ans->[$k];
+ $ref_ans->[$k]=$temp;
+}
+
+($x0,$x1,$x2,$x3) = ($ref_ans->[0][0],$ref_ans->[1][0],$ref_ans->[2][0],$ref_ans->[3][0]);
+($popup0,$popup1,$popup2,$popup3) = ($ref_ans->[0][1],$ref_ans->[1][1],$ref_ans->[2][1],$ref_ans->[3][1]);
+($trueFalse0,$trueFalse1,$trueFalse2,$trueFalse3) = ($ref_ans->[0][2],$ref_ans->[1][2],$ref_ans->[2][2],$ref_ans->[3][2]);
+($isIsNot0,$isIsNot1,$isIsNot2,$isIsNot3) = ($ref_ans->[0][3],$ref_ans->[1][3],$ref_ans->[2][3],$ref_ans->[3][3]);
+
+
+##############################################
+
+TEXT(beginproblem());
+
+
+BEGIN_PGML
+
+Decide whether each value is a solution to the given inequality.
+
+[`` [$a] x +[$b] [$symbol] [$c] ``]
+a. [`x=[$x0]`] [__]{$popup0} a solution.
+
+b. [`x=[$x1]`] [__]{$popup1} a solution.
+
+c. [`x=[$x2]`] [__]{$popup2} a solution.
+
+d. [`x=[$x3]`] [__]{$popup3} a solution.
+
+
+
+END_PGML
+
+
+##############################################
+
+
+BEGIN_PGML_SOLUTION
+
+We substitute each [`x`] value into the inequality [` [$a] x + [$b] [$symbol] [$c]`] and see whether the inequality is true.
+
+a. [` \begin{aligned}[t]
+ [$a] ([$x0]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x0+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse0], [$x0] [$isIsNot0] a solution to the inequality.
+----
+b. [` \begin{aligned}[t]
+ [$a] ([$x1]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x1+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse1], [$x1] [$isIsNot1] a solution to the inequality.
+----
+c. [` \begin{aligned}[t]
+ [$a] ([$x2]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x2+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse2], [$x2] [$isIsNot2] a solution to the inequality.
+----
+d. [` \begin{aligned}[t]
+ [$a] ([$x3]) + [$b] &\stackrel{?}{[$symbol]} [$c]\\
+ [$a*$x3+$b] &\stackrel{?}{[$symbol]} [$c]\end{aligned}`]
+ Since this inequality is [$trueFalse3], [$x3] [$isIsNot3] a solution to the inequality.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem10.pg
new file mode 100644
index 0000000000..c632237ceb
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem10.pg
@@ -0,0 +1,138 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Write an one-variable linear inequality to solve word problems.
+#
+# Last updated: Jordan 7/27/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','interval notation','subtract','divide')
+## DBCCSS('7.EE.4','A-CED.1','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserMultiAnswer.pl",
+ "parserNumberWithUnits.pl",
+ "contextCurrency.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+package MultiAnswer;
+our $separator = ' ';
+package main;
+
+$a=random(20,40,5);
+$b=random(2.5,3.5,0.1);
+$m=random(30,70,10);
+$m=Compute($m);
+$mmi = NumberWithUnits($m, 'mi');
+$c=$a+$b*$m;
+
+Context("Currency");
+Context()->currency->addSymbol("dollars","dollar");
+Context()->flags->set(trimTrailingZeros=>1);
+$ac = Currency("$a");
+$bc = Currency("$b");
+$cc = Currency("$c");
+
+
+Context("Interval");
+$interval = Interval("[0,$m]");
+
+$left = Formula("$a+$b x");
+$right = Formula("$c");
+Context()->strings->add("<"=>{}, ">"=>{}, "="=>{}, "<="=>{}, ">="=>{}, "!="=>{});
+
+$comparitor = String("<=");
+$opposite = String(">=");
+
+
+$multians = MultiAnswer($left, $comparitor, $right)->with(
+ singleResult => 1,
+ checker => sub {
+ my ( $correct, $student, $self ) = @_;
+ my ( $stuLeft, $stuComp, $stuRight ) = @{$student};
+ my ( $corLeft, $corComp, $corRight ) = @{$correct};
+ if ( ($corLeft == $stuLeft && $corComp == $stuComp && $corRight == $stuRight) ||
+ ($corLeft == $stuRight && $opposite == $stuComp && $corRight == $stuLeft) ) {
+ return 1;
+ }
+ }
+);
+
+$newUnits = [
+ {name=>'miles',conversion=>{factor=>5280*12*2.54/100,m=>1}},
+ {name=>'mile',conversion=>{factor=>5280*12*2.54/100,m=>1}},
+ {name=>'mi',conversion=>{factor=>5280*12*2.54/100,m=>1}},
+];
+$miles = NumberWithUnits("$m miles",{newUnit=>$newUnits});
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+You are riding in a taxi and can only pay with cash. You have to pay a flat fee of [`[$ac]`], and then pay [`[$bc]`] per mile. You have a total of [`[$cc]`] in your pocket. Let [`x`] be the number of miles the taxi will drive you. You want to know how many miles you can afford.
+
+a. Write an inequality to represent this situation in terms of how many miles you can afford.
+ [@KeyboardInstructions(q?Your inequality has three parts, a left side, a right side, and a comparison operator in the middle: [`<`], [`>`], [`\leq`], [`\geq`], [`=`], or [`\neq`]. Enter these as [|<|], [|>|]*, [|<=|]*, [|>=|]*, [|=|]*, and [|!=|]*.?)@]**
+ [__]{$multians}{width=>10} [__]{$multians}{width=>2} [__]{$multians}{width=>10}
+
+a. Solve this inequality. At most how many miles can you afford?
+ [___]{$miles}
+
+a. Use interval notation to express the number of miles you can afford.
+ [________]{$interval}
+
+END_PGML
+
+##############################################
+
+$showPartialCorrectAnswers=1;
+
+
+
+$s1=$c-$a;
+
+BEGIN_PGML_SOLUTION
+
+Let [`x`] be the number of miles the taxi will drive.
+
+ [`
+\begin{aligned}
+ [$b]x+[$a] & \leq [$c] \\
+ [$b]x+[$a]\mathbf{{}-[$a]} & \leq [$c]\mathbf{{}-[$a]} \\
+ [$b]x & \leq [$s1] \\
+ \frac{[$b]x}{[$b]} & \leq \frac{[$s1]}{[$b]} \\
+ x & \leq [$m]
+\end{aligned}
+`]
+
+You can afford at most [`[$m]`] miles.
+
+The interval that represents the number of miles that you can afford is [`[$interval]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem20.pg
new file mode 100644
index 0000000000..a93193f02f
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/InequalityWordProblem20.pg
@@ -0,0 +1,130 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Write an one-variable linear inequality to solve word problems.
+#
+# Last updated: Jordan 8/29/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','multiply','subtract')
+## DBCCSS('7.EE.4','A-CED.1','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserMultiAnswer.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+package MultiAnswer;
+our $separator = ' ';
+package main;
+
+Context("Numeric");
+
+$a=random(70,75,1);
+$b=random(85,90,1);
+$m=random(76,84,1);
+$ans2=Compute($m*3-$a-$b);
+while ($ans2==($a+$b)/2) {
+ $m=random(76,84,1);
+ $ans2=Compute($m*3-$a-$b);
+}
+
+Context("Interval");
+$interval = Interval("[$ans2,100]");
+
+$left = Formula("($a+$b+x)/3");
+$right = Formula("$m");
+
+Context()->strings->add("<"=>{}, ">"=>{}, "="=>{}, "<="=>{}, ">="=>{}, "!="=>{});
+
+$comparitor = String(">=");
+$opposite = String("<=");
+
+
+$multians = MultiAnswer($left, $comparitor, $right)->with(
+ singleResult => 1,
+ checker => sub {
+ my ( $correct, $student, $self ) = @_;
+ my ( $stuLeft, $stuComp, $stuRight ) = @{$student};
+ my ( $corLeft, $corComp, $corRight ) = @{$correct};
+ if ( ($corLeft == $stuLeft && $corComp == $stuComp && $corRight == $stuRight) ||
+ ($corLeft == $stuRight && $opposite == $stuComp && $corRight == $stuLeft) ) {
+ return 1;
+ }
+ }
+);
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+[%Not using percentages to avoid confusion%]
+Your grade in a class is determined by the average of three test scores. You scored [`[$a]`] and [`[$b]`] on the first two tests. To earn at least [`[$m]`] for this course, how much do you have to score on the third test? Let [`x`] be the score you will earn on the third test.
+
+a. Write an inequality to represent this situation.
+ [@KeyboardInstructions(q?Your inequality has three parts, a left side, a right side, and a comparison operator in the middle: [`<`], [`>`], [`\leq`], [`\geq`], [`=`], or [`\neq`]. Enter these as [|<|]*, [|>|]*, [|<=|]*, [|>=|]*, [|=|]*, and [|!=|]*.?)@]**
+ [__]{$multians}{width=>10} [__]{$multians}{width=>2} [__]{$multians}{width=>10}
+
+a. Solve this inequality. What is the minimum that you have to earn on the third test in order to earn a [`[$m]`] for the course?
+ [___________]{$ans2}
+
+a. You cannot score over [`100`] on the third test. Use interval notation to represent the range of scores you can earn on the third test in order to earn at least [`[$m]`] for this course.
+ [______________]{$interval}
+
+
+
+
+END_PGML
+
+##############################################
+
+$showPartialCorrectAnswers=1;
+
+
+$s1=3*$m;
+$s2=$a+$b;
+
+BEGIN_PGML_SOLUTION
+
+Let [`x`] be the score you will earn on the third test.
+
+ [`
+\begin{aligned}
+ \frac{[$a]+[$b]+x}{3} & \geq [$m] \\
+ 3 \cdot \frac{[$a]+[$b]+x}{3} & \geq 3 \cdot [$m] \\
+ [$a]+[$b]+x & \geq [$s1] \\
+ [$s2] +x & \geq [$s1] \\
+ [$s2] +x \mathbf{{}-[$s2]}& \geq [$s1]\mathbf{{}-[$s2]} \\
+ x & \geq [$ans2]
+\end{aligned}
+`]
+
+You have to score at least [`[$ans2]`] on the third test in order to earn [`[$m]`] in this course.
+
+To earn at least [`[$m]`] in this course, the interval for your score on the third test is [`[$interval]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation10.pg
new file mode 100644
index 0000000000..1bde95f4fd
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation10.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,#].
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = Compute("x");
+$comp = '\leq';
+$right = non_zero_random(-10,10,1);
+
+Context("Interval");
+$ans = Compute("(-inf,$right]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [$right]. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation100.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation100.pg
new file mode 100644
index 0000000000..e3abfcca71
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation100.pg
@@ -0,0 +1,96 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,#]. The number is a fraction.
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("LimitedFraction");
+Context()->flags->set(allowMixedNumbers=>0);
+Context()->flags->set(requirePureFractions=>1);
+Context()->flags->set(showMixedNumbers=>0);
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+
+$left = Compute("x");
+$comp = '\leq';
+$right = Fraction(-$num,$den);
+
+Context("Interval");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+($num, $den) = abs($right)->value;
+$ans_latex_string = "\left(-\infty,{-\frac{$num}{$den}}\right]";
+$ans_string = "(-inf, $right]";
+$ans = Compute("(-inf, $right]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \left\{ x \mid {[$left]} [$comp] [$right] \right\} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans->cmp(correct_ans=>$ans_string, correct_ans_latex_string=>$ans_latex_string)}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [`[$right]`]. Shading these on a number line may help you to see that the interval notation is [`[$ans_latex_string]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation110.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation110.pg
new file mode 100644
index 0000000000..61c0e905c4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation110.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,0].
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = Compute("x");
+$comp = '\leq';
+$right = 0;
+
+Context("Interval");
+$ans = Compute("(-inf,$right]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid [$left] [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [`[$right]`]. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation120.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation120.pg
new file mode 100644
index 0000000000..2d83ad3f12
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation120.pg
@@ -0,0 +1,83 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (0,inf).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = 0;
+$comp = '\lt';
+$right = Compute("x");
+
+Context("Interval");
+$ans = Compute("($left,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid [$left] [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [`[$left]`] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation20.pg
new file mode 100644
index 0000000000..9923a4b0cd
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation20.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like [#,inf).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = Compute("x");
+$comp = '\geq';
+$right = non_zero_random(-10,10,1);
+
+Context("Interval");
+$ans = Compute("[$right,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [$right]. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation30.pg
new file mode 100644
index 0000000000..e0c31af91e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation30.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,#).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = Compute("x");
+$comp = '\lt';
+$right = non_zero_random(-10,10,1);
+
+Context("Interval");
+$ans = Compute("(-inf,$right)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid{[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [$right]. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation40.pg
new file mode 100644
index 0000000000..9562bff81e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation40.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (#,inf).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = Compute("x");
+$comp = '\gt';
+$right = non_zero_random(-10,10,1);
+
+Context("Interval");
+$ans = Compute("($right,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers that are [$solnString] [$right]. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation50.pg
new file mode 100644
index 0000000000..7ca6c1e27f
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation50.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,#).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = non_zero_random(-10,10,1);
+$comp = '\gt';
+$right = Compute("x");
+
+Context("Interval");
+$ans = Compute("(-inf,$left)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [$left] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation60.pg
new file mode 100644
index 0000000000..fafdf08896
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation60.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (-inf,#].
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = non_zero_random(-10,10,1);
+$comp = '\geq';
+$right = Compute("x");
+
+Context("Interval");
+$ans = Compute("(-inf,$left]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [$left] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation70.pg
new file mode 100644
index 0000000000..d1fdde4326
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation70.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like [#,inf).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = non_zero_random(-10,10,1);
+$comp = '\leq';
+$right = Compute("x");
+
+Context("Interval");
+$ans = Compute("[$left,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x\mid{[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [$left] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation80.pg
new file mode 100644
index 0000000000..25b7e0f947
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation80.pg
@@ -0,0 +1,84 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (#,inf).
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$left = non_zero_random(-10,10,1);
+$comp = '\lt';
+$right = Compute("x");
+
+Context("Interval");
+$ans = Compute("($left,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \{ x \mid {[$left]} [$comp] [$right] \} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans}
+
+END_PGML
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [$left] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation90.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation90.pg
new file mode 100644
index 0000000000..f15d50a801
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/IntervalNotation90.pg
@@ -0,0 +1,99 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Convert an inequality from set notation to interval notation.
+# Answer looks like (#,inf). The number is a fraction.
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+Context()->flags->set(allowMixedNumbers=>0);
+Context()->flags->set(requirePureFractions=>1);
+Context()->flags->set(showMixedNumbers=>0);
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+
+$left = Fraction($num,$den);
+$comp = '\lt';
+$right = Compute("x");
+
+Context("Interval");
+($num, $den) = $left->value;
+$ans_latex_string = "\left(\frac{$num}{$den},\infty\right)";
+$ans_string = "($left, inf)";
+Context()->flags->set(formatStudentAnswer=>'parsed');
+$ans = Compute("($left,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+A set is written using set-builder notation. Write it using interval notation.
+
+ [`` \left\{ x \mid {[$left]} [$comp] [$right] \right\} ``]
+
+[@KeyboardInstructions(q!Please use [|INF|]* to represent [`\infty`].!)@]**
+
+ [_____________]{$ans->cmp(correct_ans=>$ans_string, correct_ans_latex_string=>$ans_latex_string)}
+
+END_PGML
+
+
+
+
+##############################################
+
+
+$solnString = '';
+if ($comp eq '\leq')
+ {$solnString = 'less than or equal to'}
+elsif ($comp eq '\geq')
+ {$solnString = 'greater than or equal to'}
+elsif ($comp eq '\lt')
+ {$solnString = 'strictly less than'}
+elsif ($comp eq '\gt')
+ {$solnString = 'strictly greater than'};
+
+
+BEGIN_PGML_SOLUTION
+
+We are working will all numbers such that [`[$left]`] is [$solnString] those numbers. Shading these on a number line may help you to see that the interval notation is [`[$ans_latex_string]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph10.pg
new file mode 100644
index 0000000000..9cf187b10d
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph10.pg
@@ -0,0 +1,189 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Change set notation to graph: x>3
+#
+# Last edited by Jordan 8/29/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(-4,4,1);
+
+$symbol = $GTS; #Don't use < or > directly.
+
+%answer = (leftType => 'open',
+ rightType => 'inf', #use 'inf' regardles of +/- inf
+ );
+
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 5;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+@alts=();
+
+#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
+@indices=();
+
+
+#make the graphs
+for $leftType ('open','closed', 'inf')
+{
+ for $rightType ('open','closed', 'inf')
+ {
+ my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,$verticalSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+ );
+ @ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+ $tempgr->h_ticks(0,"black",@ticks);
+ $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top'));
+
+ if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
+ {
+ $altText = "";
+ $altText = "This is the graph of a number line. ";
+ $tempgr->lb( new Label($a,-$verticalSpace/5,$a,'blue','center','top'));
+ if ($leftType eq 'open' or $rightType eq 'open')
+ {
+ $altText = $altText."It has a hollow circle at $a, ";
+ $tempgr->stamps( open_circle($a,0,'blue') )
+ }
+ else
+ {
+ $altText = $altText."It has a filled circle at $a, ";
+ $tempgr->stamps( closed_circle($a,0,'blue') )
+ };
+ $tempgr->moveTo($a,0);
+ if ($leftType eq 'inf') {
+ $altText = $altText."and the number line is shaded everywhere left from $a.";
+ $tempgr->arrowTo(-0.99*$reach,0,'blue',3);
+ } else {
+ $altText = $altText."and the number line is shaded everywhere right from $a.";
+ $tempgr->arrowTo(0.99*$reach,0,'blue',3);
+ }
+ push(@gr,$tempgr);push(@alts,$altText);
+ if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
+ {push(@indices, $#gr);}
+ else {unshift(@indices, $#gr);}
+ }
+
+}};
+
+#A permutation function
+sub shufflemap {
+ my $n = shift();
+ my $m = $n - 1;
+ my $zeroind;
+ my %map = ();
+ my @vals = (0..$m);
+ for ( my $i=0; $i<$m; $i++ ) {
+ my $j = random(0,$m-$i,1);
+ $map{$i} = $vals[$j];
+ $zeroind = $i if ( $map{$i} == 0 );
+ splice(@vals, $j, 1);
+ }
+ $map{$m} = $vals[0];
+ $zeroind = $m if ( $map{$m} == 0 );
+ return( { %map }, $zeroind );
+}
+
+($shuffle, $zero) = shufflemap(4); #$zero is the preimage of 0.
+
+
+@ar_choice = ("A","B","C","D");
+
+$pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
+
+
+##############################################
+
+TEXT(beginproblem());
+Context()->texStrings;
+
+BEGIN_TEXT
+
+$PAR
+Choose the graph showing the solutions to \(x $symbol $a\).
+$PAR
+
+A. \{ image( insertGraph($gr[ $indices[$shuffle->{0}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{0}] ]" alt="$alts[ $indices[$shuffle->{0}] ]" align="top" ' ) \}
+$PAR
+
+B. \{ image( insertGraph($gr[ $indices[$shuffle->{1}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{1}] ]" alt="$alts[ $indices[$shuffle->{1}] ]" align="top" ' ) \}
+$PAR
+C. \{ image( insertGraph($gr[ $indices[$shuffle->{2}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{2}] ]" alt="$alts[ $indices[$shuffle->{2}] ]" align="top" ' ) \}
+$PAR
+D. \{ image( insertGraph($gr[ $indices[$shuffle->{3}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{3}] ]" alt="$alts[ $indices[$shuffle->{3}] ]" align="top" ' ) \}
+
+$PAR
+
+$SPACE $SPACE $SPACE \{ $pop->menu() \}
+
+
+
+END_TEXT
+
+Context()->normalStrings;
+
+##############################################
+
+ANS( $pop->cmp() );
+
+BEGIN_PGML_SOLUTION
+
+The inequality is [`x [$symbol] [$a]`].
+
+Since [`x`] needs to be greater than [`[$a]`], we should shade all numbers to the _right_ of [`[$a]`], moving toward [` +\infty `].
+
+Since the inequality symbol is [`[$symbol]`], we should use an open ending at [`[$a]`].
+
+The correct answer is [@ $pop->correct_ans() @]*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph20.pg
new file mode 100644
index 0000000000..381ea62bf4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph20.pg
@@ -0,0 +1,190 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Change set notation to graph: x<3
+#
+# Last edited by Jordan 8/28/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(-4,4,1);
+
+$symbol = $LTS; #Don't use < or > directly.
+
+%answer = (leftType => 'inf',
+ rightType => 'open', #use 'inf' regardles of +/- inf
+ );
+
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 5;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+@alts=();
+
+#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
+@indices=();
+
+
+#make the graphs
+for $leftType ('open','closed', 'inf')
+{
+ for $rightType ('open','closed', 'inf')
+ {
+ my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,$verticalSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+ );
+ @ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+ $tempgr->h_ticks(0,"black",@ticks);
+ $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top'));
+
+ if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
+ {
+ $altText = "";
+ $altText = "This is the graph of a number line. ";
+ $tempgr->lb( new Label($a,-$verticalSpace/5,$a,'blue','center','top'));
+ if ($leftType eq 'open' or $rightType eq 'open')
+ {
+ $altText = $altText."It has a hollow circle at $a, ";
+ $tempgr->stamps( open_circle($a,0,'blue') )
+ }
+ else
+ {
+ $altText = $altText."It has a filled circle at $a, ";
+ $tempgr->stamps( closed_circle($a,0,'blue') )
+ };
+ $tempgr->moveTo($a,0);
+ if ($leftType eq 'inf') {
+ $altText = $altText."and the number line is shaded everywhere left from $a.";
+ $tempgr->arrowTo(-0.99*$reach,0,'blue',3);
+ } else {
+ $altText = $altText."and the number line is shaded everywhere right from $a.";
+ $tempgr->arrowTo(0.99*$reach,0,'blue',3);
+ }
+ push(@gr,$tempgr);push(@alts,$altText);
+ if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
+ {push(@indices, $#gr);}
+ else {unshift(@indices, $#gr);}
+ }
+
+}};
+
+#A permutation function
+sub shufflemap {
+ my $n = shift();
+ my $m = $n - 1;
+ my $zeroind;
+ my %map = ();
+ my @vals = (0..$m);
+ for ( my $i=0; $i<$m; $i++ ) {
+ my $j = random(0,$m-$i,1);
+ $map{$i} = $vals[$j];
+ $zeroind = $i if ( $map{$i} == 0 );
+ splice(@vals, $j, 1);
+ }
+ $map{$m} = $vals[0];
+ $zeroind = $m if ( $map{$m} == 0 );
+ return( { %map }, $zeroind );
+}
+
+($shuffle, $zero) = shufflemap(4); #$zero is the preimage of 0.
+
+
+@ar_choice = ("A","B","C","D");
+
+$pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
+
+
+##############################################
+
+TEXT(beginproblem());
+Context()->texStrings;
+
+BEGIN_TEXT
+
+$PAR
+Choose the graph showing the solutions to \(x $symbol $a\).
+$PAR
+
+A. \{ image( insertGraph($gr[ $indices[$shuffle->{0}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{0}] ]" alt="$alts[ $indices[$shuffle->{0}] ]" align="top" ' ) \}
+$PAR
+
+B. \{ image( insertGraph($gr[ $indices[$shuffle->{1}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{1}] ]" alt="$alts[ $indices[$shuffle->{1}] ]" align="top" ' ) \}
+$PAR
+C. \{ image( insertGraph($gr[ $indices[$shuffle->{2}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{2}] ]" alt="$alts[ $indices[$shuffle->{2}] ]" align="top" ' ) \}
+$PAR
+D. \{ image( insertGraph($gr[ $indices[$shuffle->{3}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{3}] ]" alt="$alts[ $indices[$shuffle->{3}] ]" align="top" ' ) \}
+
+
+$PAR
+
+$SPACE $SPACE $SPACE \{ $pop->menu() \}
+
+
+
+END_TEXT
+
+Context()->normalStrings;
+
+##############################################
+
+ANS( $pop->cmp() );
+
+BEGIN_PGML_SOLUTION
+
+The inequality is [`x [$symbol] [$a]`].
+
+Since [`x`] needs to be smaller than [`[$a]`], we should shade all numbers to the _left_ of [`[$a]`], moving toward [` -\infty `].
+
+Since the inequality symbol is [`[$symbol]`], we should use an open ending at [`[$a]`].
+
+The correct answer is [@ $pop->correct_ans() @]*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph30.pg
new file mode 100644
index 0000000000..b90149dd07
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph30.pg
@@ -0,0 +1,190 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Change set notation to graph: x>=3
+#
+# Last edited by Jordan 8/29/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(-4,4,1);
+
+$symbol = '\ge';
+
+%answer = (leftType => 'closed',
+ rightType => 'inf', #use 'inf' regardles of +/- inf
+ );
+
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 5;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+@alts=();
+
+#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
+@indices=();
+
+
+#make the graphs
+for $leftType ('open','closed', 'inf')
+{
+ for $rightType ('open','closed', 'inf')
+ {
+ my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,$verticalSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+ );
+ @ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+ $tempgr->h_ticks(0,"black",@ticks);
+ $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top'));
+
+ if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
+ {
+ $altText = "";
+ $altText = "This is the graph of a number line. ";
+ $tempgr->lb( new Label($a,-$verticalSpace/5,$a,'blue','center','top'));
+ if ($leftType eq 'open' or $rightType eq 'open')
+ {
+ $altText = $altText."It has a hollow circle at $a, ";
+ $tempgr->stamps( open_circle($a,0,'blue') )
+ }
+ else
+ {
+ $altText = $altText."It has a filled circle at $a, ";
+ $tempgr->stamps( closed_circle($a,0,'blue') )
+ };
+ $tempgr->moveTo($a,0);
+ if ($leftType eq 'inf') {
+ $altText = $altText."and the number line is shaded everywhere left from $a.";
+ $tempgr->arrowTo(-0.99*$reach,0,'blue',3);
+ } else {
+ $altText = $altText."and the number line is shaded everywhere right from $a.";
+ $tempgr->arrowTo(0.99*$reach,0,'blue',3);
+ }
+ push(@gr,$tempgr);push(@alts,$altText);
+ if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
+ {push(@indices, $#gr);}
+ else {unshift(@indices, $#gr);}
+ }
+
+}};
+
+#A permutation function
+sub shufflemap {
+ my $n = shift();
+ my $m = $n - 1;
+ my $zeroind;
+ my %map = ();
+ my @vals = (0..$m);
+ for ( my $i=0; $i<$m; $i++ ) {
+ my $j = random(0,$m-$i,1);
+ $map{$i} = $vals[$j];
+ $zeroind = $i if ( $map{$i} == 0 );
+ splice(@vals, $j, 1);
+ }
+ $map{$m} = $vals[0];
+ $zeroind = $m if ( $map{$m} == 0 );
+ return( { %map }, $zeroind );
+}
+
+($shuffle, $zero) = shufflemap(4); #$zero is the preimage of 0.
+
+
+@ar_choice = ("A","B","C","D");
+
+$pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
+
+
+##############################################
+
+TEXT(beginproblem());
+Context()->texStrings;
+
+BEGIN_TEXT
+
+$PAR
+Choose the graph showing the solutions to \(x $symbol $a\).
+$PAR
+
+A. \{ image( insertGraph($gr[ $indices[$shuffle->{0}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{0}] ]" alt="$alts[ $indices[$shuffle->{0}] ]" align="top" ' ) \}
+$PAR
+
+B. \{ image( insertGraph($gr[ $indices[$shuffle->{1}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{1}] ]" alt="$alts[ $indices[$shuffle->{1}] ]" align="top" ' ) \}
+$PAR
+C. \{ image( insertGraph($gr[ $indices[$shuffle->{2}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{2}] ]" alt="$alts[ $indices[$shuffle->{2}] ]" align="top" ' ) \}
+$PAR
+D. \{ image( insertGraph($gr[ $indices[$shuffle->{3}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{3}] ]" alt="$alts[ $indices[$shuffle->{3}] ]" align="top" ' ) \}
+
+
+$PAR
+
+$SPACE $SPACE $SPACE \{ $pop->menu() \}
+
+
+
+END_TEXT
+
+Context()->normalStrings;
+
+##############################################
+
+ANS( $pop->cmp() );
+
+BEGIN_PGML_SOLUTION
+
+The inequality is [`x [$symbol] [$a]`].
+
+Since [`x`] needs to be greater than [`[$a]`], we should shade all numbers to the _right_ of [`[$a]`], moving toward [` +\infty `].
+
+Since the inequality symbol is [`[$symbol]`], we should use a closed ending at [`[$a]`].
+
+The correct answer is [@ $pop->correct_ans() @]*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph40.pg
new file mode 100644
index 0000000000..f195f5ee0a
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SetNotationToGraph40.pg
@@ -0,0 +1,189 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Change set notation to graph: x<=3
+#
+# Last edited by Jordan 8/29/13; Carl Yao on 7/21/13
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('linear','inequality', 'number line','set notation')
+## DBCCSS('7.EE.4')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserPopUp.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a = random(-4,4,1);
+
+$symbol = '\le';
+
+%answer = (leftType => 'inf',
+ rightType => 'closed', #use 'inf' regardles of +/- inf
+ );
+
+
+$aspectRatio = 1/8;
+$horPixel = 400;
+$verPixel = $horPixel*$aspectRatio;
+$screenXSize = $horPixel;
+$screenYSize = $screenXSize*$aspectRatio;
+$reach = 5;
+$verticalSpace = $reach*$aspectRatio;
+$hardCopyPercent = 1000; #meaning 100%
+
+
+#initializing...
+@gr=();
+@alts=();
+
+#indices will be 0..$#gr in some order, with the index of the correct graph in the 0th position.
+@indices=();
+
+
+#make the graphs
+for $leftType ('open','closed', 'inf')
+{
+ for $rightType ('open','closed', 'inf')
+ {
+ my $tempgr = init_graph(-$reach,-$verticalSpace,$reach,$verticalSpace,
+ axes=>[$reach+1,0],
+ size=>[$horPixel,$verPixel]
+ );
+ @ticks = ();
+ for my $j ((-$reach)..($reach)) {push(@ticks,$j);};
+
+ $tempgr->h_ticks(0,"black",@ticks);
+ $tempgr->lb( new Label(0,-$verticalSpace/5,0,'black','center','top'));
+
+ if (($leftType eq 'inf' or $rightType eq 'inf') and !(($leftType eq 'inf' and $rightType eq 'inf')))
+ {
+ $altText = "";
+ $altText = "This is the graph of a number line. ";
+ $tempgr->lb( new Label($a,-$verticalSpace/5,$a,'blue','center','top'));
+ if ($leftType eq 'open' or $rightType eq 'open')
+ {
+ $altText = $altText."It has a hollow circle at $a, ";
+ $tempgr->stamps( open_circle($a,0,'blue') )
+ }
+ else
+ {
+ $altText = $altText."It has a filled circle at $a, ";
+ $tempgr->stamps( closed_circle($a,0,'blue') )
+ };
+ $tempgr->moveTo($a,0);
+ if ($leftType eq 'inf') {
+ $altText = $altText."and the number line is shaded everywhere left from $a.";
+ $tempgr->arrowTo(-0.99*$reach,0,'blue',3);
+ } else {
+ $altText = $altText."and the number line is shaded everywhere right from $a.";
+ $tempgr->arrowTo(0.99*$reach,0,'blue',3);
+ }
+ push(@gr,$tempgr);push(@alts,$altText);
+ if ($answer{leftType} ne $leftType or $answer{rightType} ne $rightType)
+ {push(@indices, $#gr);}
+ else {unshift(@indices, $#gr);}
+ }
+
+}};
+
+#A permutation function
+sub shufflemap {
+ my $n = shift();
+ my $m = $n - 1;
+ my $zeroind;
+ my %map = ();
+ my @vals = (0..$m);
+ for ( my $i=0; $i<$m; $i++ ) {
+ my $j = random(0,$m-$i,1);
+ $map{$i} = $vals[$j];
+ $zeroind = $i if ( $map{$i} == 0 );
+ splice(@vals, $j, 1);
+ }
+ $map{$m} = $vals[0];
+ $zeroind = $m if ( $map{$m} == 0 );
+ return( { %map }, $zeroind );
+}
+
+($shuffle, $zero) = shufflemap(4); #$zero is the preimage of 0.
+
+
+@ar_choice = ("A","B","C","D");
+
+$pop = PopUp( [qw(? A B C D)], $ar_choice[$zero] );
+
+
+##############################################
+
+TEXT(beginproblem());
+Context()->texStrings;
+
+BEGIN_TEXT
+
+$PAR
+Choose the graph showing the solutions to \(x $symbol $a\).
+$PAR
+
+A. \{ image( insertGraph($gr[ $indices[$shuffle->{0}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{0}] ]" alt="$alts[ $indices[$shuffle->{0}] ]" align="top" ' ) \}
+$PAR
+
+B. \{ image( insertGraph($gr[ $indices[$shuffle->{1}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{1}] ]" alt="$alts[ $indices[$shuffle->{1}] ]" align="top" ' ) \}
+$PAR
+C. \{ image( insertGraph($gr[ $indices[$shuffle->{2}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{2}] ]" alt="$alts[ $indices[$shuffle->{2}] ]" align="top" ' ) \}
+$PAR
+D. \{ image( insertGraph($gr[ $indices[$shuffle->{3}] ]), width=>$screenXSize, height=>$screenYSize, tex_size=>$hardCopyPercent,
+ extra_html_tags=>'title="$alts[ $indices[$shuffle->{3}] ]" alt="$alts[ $indices[$shuffle->{3}] ]" align="top" ' ) \}
+
+$PAR
+
+$SPACE $SPACE $SPACE \{ $pop->menu() \}
+
+
+
+END_TEXT
+
+Context()->normalStrings;
+
+##############################################
+
+ANS( $pop->cmp() );
+
+BEGIN_PGML_SOLUTION
+
+The inequality is [`x [$symbol] [$a]`].
+
+Since [`x`] needs to be smaller than [`[$a]`], we should shade all numbers to the _left_ of [`[$a]`], moving toward [` -\infty `].
+
+Since the inequality symbol is [`[$symbol]`], we should use a closed ending at [`[$a]`].
+
+The correct answer is [@ $pop->correct_ans() @]*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality10.pg
new file mode 100644
index 0000000000..93ade51ed4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality10.pg
@@ -0,0 +1,97 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like x+a>b.
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextArbitraryString.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$left = Compute("x+$a");
+$comp = '>';
+$right = Compute("$b");
+
+$c = $b-$a;
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+$setans = Compute("{ x | x > $c}");
+$alt = Compute("{ x | $c < x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($c,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ x+[$a] &> [$b]\\
+ x+[$a]\mathbf{{}-[$a]} &> [$b]\mathbf{{}-[$a]} \\
+ x &> [$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality100.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality100.pg
new file mode 100644
index 0000000000..f1ed0b0146
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality100.pg
@@ -0,0 +1,96 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -x <= a
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','multiply','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$b=random(2,10,1);
+$left = Compute("-x");
+$comp = "\leq";
+$right = Compute("$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x >= -$b}");
+$alt = Compute("{ x | -$b <= x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[-$b,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -x & \leq [$b] \\
+ -1(-x) & \geq -1([$b]) \\
+ x & \geq -[$b] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality110.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality110.pg
new file mode 100644
index 0000000000..cec29914bc
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality110.pg
@@ -0,0 +1,107 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like (a/b)x > c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+$frac = Fraction($num,$den);
+
+$a=$num*list_random((1,2,3,4));
+$left = Compute("$frac*x");
+$comp = ">";
+$right = Compute("$a");
+$b=$a/$num*$den;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > $b}");
+$alt = Compute("{ x | $b < x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($b,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+$s1=$den*$a;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{[$num]}{[$den]}x &> [$a] \\
+ [$den] \cdot \frac{[$num]}{[$den]}x &> [$den] \cdot [$a] \\
+ [$num]x &> [$s1] \\
+ \frac{[$num]x}{[$num]} &> \frac{[$s1]}{[$num]} \\
+ x &> [$b]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality120.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality120.pg
new file mode 100644
index 0000000000..87432e1aee
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality120.pg
@@ -0,0 +1,109 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -(a/b)x <= c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+$frac = Fraction($num,$den);
+
+$a=$num*list_random((1,2,3,4));
+$left = Compute("-$frac*x");
+$comp = "\leq";
+$right = Compute("$a");
+$b=$a/$num*$den;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x >= -$b}");
+$alt = Compute("{ x | -$b <= x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[-$b,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+$s1=$den*$a;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -\frac{[$num]}{[$den]}x & \leq [$a] \\
+ [$den] \cdot -\frac{[$num]}{[$den]}x & \leq [$den] \cdot [$a] \\
+ -[$num]x & \leq [$s1] \\
+ (-1) \cdot -[$num]x & \geq (-1) \cdot [$s1] \\
+ [$num]x & \geq -[$s1] \\
+ \frac{[$num]x}{[$num]} & \geq \frac{-[$s1]}{[$num]} \\
+ x & \geq -[$b]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality130.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality130.pg
new file mode 100644
index 0000000000..e20270e7b2
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality130.pg
@@ -0,0 +1,108 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -a < (b/c) x
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+$frac = Fraction($num,$den);
+
+$a=$num*list_random((1,2,3,4));
+$left = Compute("-$a");
+$comp = "<";
+$right = Compute("$frac*x");
+$b=$a/$num*$den;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > -$b}");
+$alt = Compute("{ x | -$b < x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-$b,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+$s1=$den*$a;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$a] & < \frac{[$num]}{[$den]}x \\
+ [$den] \cdot (-[$a]) & < [$den] \cdot \frac{[$num]}{[$den]}x \\
+ -[$s1] & < [$num]x \\
+ \frac{-[$s1]}{[$num]} & < \frac{[$num]x}{[$num]} \\
+ -[$b] & < x \\
+ x & > -[$b]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality140.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality140.pg
new file mode 100644
index 0000000000..d183dcc4b9
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality140.pg
@@ -0,0 +1,110 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -a < -(a/b) x
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($num,$den)!=1) {$den=random(2,10,1);}
+$frac = Fraction($num,$den);
+
+$a=$num*list_random((1,2,3,4));
+$left = Compute("-$a");
+$comp = "<";
+$right = Compute("-$frac*x");
+$b=$a/$num*$den;
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x < $b}");
+$alt = Compute("{ x | $b > x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$b)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+$s1=$den*$a;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$a] & < -\frac{[$num]}{[$den]}x \\
+ [$den] \cdot (-[$a]) & < [$den] \cdot (-\frac{[$num]}{[$den]}x) \\
+ -[$s1] & < -[$num]x \\
+ (-1) \cdot (-[$s1]) & > (-1) \cdot (-[$num]x) \\
+ [$s1] & > [$num]x \\
+ \frac{[$s1]}{[$num]} & > \frac{[$num]x}{[$num]} \\
+ [$b] & > x \\
+ x & < [$b]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality150.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality150.pg
new file mode 100644
index 0000000000..01acdc13e5
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality150.pg
@@ -0,0 +1,98 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like ax > -b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,5,1);
+$c=list_random((2,3,4));
+$b=$a*$c;
+$left = Compute("$a*x");
+$comp = ">";
+$right = Compute("-$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > -$c}");
+$alt = Compute("{ x | -$c < x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-$c,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a]x & > -[$b] \\
+ \frac{[$a]x}{[$a]} & > \frac{-[$b]}{[$a]} \\
+ x & > -[$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality160.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality160.pg
new file mode 100644
index 0000000000..1e797f0cf0
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality160.pg
@@ -0,0 +1,97 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -a < -bx
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,5,1);
+$c=list_random((2,3,4));
+$b=$a*$c;
+$left = Compute("-$b");
+$comp = "<";
+$right = Compute("-$a*x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x < $c}");
+$alt = Compute("{ x | $c > x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$c)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$b] & < -[$a]x \\
+ \frac{-[$b]}{-[$a]} & > \frac{-[$a]x}{-[$a]} \\
+ [$c] & > x \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality170.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality170.pg
new file mode 100644
index 0000000000..6f9e685c7b
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality170.pg
@@ -0,0 +1,105 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like ax+b > c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,10,1);
+$b=random(2,10,1);
+$v=random(2,10,1);
+$c=$a*$v+$b;
+$left = Compute("$a*x+$b");
+$comp = ">";
+$right = Compute("$c");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > $v}");
+$alt = Compute("{ x | $v < x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($v,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions('The [| | |]* symbol is above the [|Enter|]* key.')@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a]x + [$b] & > [$c] \\
+ -[$b] & \phantom{>} -[$b] \\
+ [$a]x & > [$c-$b] \\
+ \frac{[$a]x}{[$a]} & > \frac{[$c-$b]}{[$a]} \\
+ x & > [$v] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality180.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality180.pg
new file mode 100644
index 0000000000..d669318196
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality180.pg
@@ -0,0 +1,105 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a>= bx-c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','add','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(3,10,1);
+$b=random(2,5,1);
+$v=random(2,10,1);
+$c=$a*$v-$b;
+
+$left = Compute("$c");
+$comp = "\geq";
+$right = Compute("$a*x-$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x <= $v}");
+$alt = Compute("{ x | $v >= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$v]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$c] & \geq [$a]x -[$b] \\
+ [$c] \mathbf{{} +[$b]} & \geq [$a]x -[$b]\mathbf{{} +[$b]} \\
+ [$c+$b] & \geq [$a]x \\
+ \frac{[$c+$b] }{[$a]} & \geq \frac{[$a]x}{[$a]} \\
+ [$v] & \geq x \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality190.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality190.pg
new file mode 100644
index 0000000000..a173ac6655
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality190.pg
@@ -0,0 +1,107 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a <= b-cx
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,10,1);
+$b=random(1,10,1);
+$v=random(2,10,1);
+$c=$b+$a*$v;
+
+$left = Compute("$c");
+$comp = "\leq";
+$right = Compute("$b-$a*x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x <= -$v}");
+$alt = Compute("{ x | -$v >= x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,-$v]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$c] & \leq [$b]-[$a]x \\
+ [$c] \mathbf{{} -[$b]} & \leq [$b]-[$a]x\mathbf{{} -[$b]} \\
+ [$c-$b] & \leq -[$a]x \\
+ \frac{[$c-$b] }{-[$a]} & \geq \frac{-[$a]x}{-[$a]} \\
+ -[$v] & \geq x \\
+ x & \leq -[$v]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality20.pg
new file mode 100644
index 0000000000..dc7a810b5c
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality20.pg
@@ -0,0 +1,99 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like x-a <= b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextArbitraryString.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$left = Compute("x-$a");
+$comp = "\leq";
+$right = Compute("$b");
+
+$c = $b+$a;
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | x <= $c}");
+$alt = Compute("{ x | $c >= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$c]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ x-[$a] & \leq [$b] \\
+ x-[$a]\mathbf{{}+[$a]} & \leq [$b]\mathbf{{}+[$a]} \\
+ x & \leq [$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality200.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality200.pg
new file mode 100644
index 0000000000..2e82238b78
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality200.pg
@@ -0,0 +1,104 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -ax-b < -c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','add','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,10,1);
+$b=random(1,10,1);
+$v=random(2,10,1);
+$c=$b+$a*$v;
+
+$left = Compute("-$a*x-$b");
+$comp = "<";
+$right = Compute("-$c");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > $v}");
+$alt = Compute("{ x | $v < x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($v,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$a]x-[$b] &< -[$c] \\
+ -[$a]x-[$b]\mathbf{{}+[$b]} &< -[$c]\mathbf{{}+[$b]} \\
+ -[$a]x &< [$b-$c] \\
+ \frac{-[$a]x}{-[$a]} &> \frac{[$b-$c]}{-[$a]} \\
+ x & > [$v] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality210.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality210.pg
new file mode 100644
index 0000000000..4b0139c455
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality210.pg
@@ -0,0 +1,105 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a > -bx+c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+#0 is the critical point
+Context("Numeric");
+
+$a=random(3,10,1);
+$b=random(2,5,1);
+
+$left = Compute("$b");
+$comp = "\geq";
+$right = Compute("-$a*x+$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x >= 0}");
+$alt = Compute("{ x | 0 <= x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[0,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$b] & \geq -[$a]x +[$b] \\
+ [$b]\mathbf{{} -[$b]} & \geq -[$a]x +[$b]\mathbf{{} -[$b]} \\
+ 0 & \geq -[$a]x \\
+ \frac{0}{-[$a]} & \leq \frac{-[$a]x}{-[$a]} \\
+ 0 & \leq x \\
+ x & \geq 0
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality220.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality220.pg
new file mode 100644
index 0000000000..71310f97ad
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality220.pg
@@ -0,0 +1,104 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -a > b-x
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract','negative','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$b=random(1,5,1);
+$v=random(6,10,1);
+$c=$b-$v;
+
+$left = Compute("$c");
+$comp = ">";
+$right = Compute("$b-x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x > $v}");
+$alt = Compute("{ x | $v < x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($v,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$c] & > [$b]-x \\
+ [$c] \mathbf{{}-[$b]} & > [$b]-x\mathbf{{}-[$b]} \\
+ [$c-$b] & > -x \\
+ -1 \cdot ([$c-$b]) & < -1 \cdot (-x) \\
+ [$v] & < x \\
+ x & > [$v]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality230.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality230.pg
new file mode 100644
index 0000000000..6ecb3bf863
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality230.pg
@@ -0,0 +1,108 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a(x+b) >= c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','distributive','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,10,1);
+$v = random(2,10,1);
+$b=random(1,10,1);
+$c= $a*($v+$b);
+
+$left = Compute("$a*(x+$b)");
+$comp = "\geq";
+$right = Compute("$c");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x >= $v}");
+$alt = Compute("{ x | $v <= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$v,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $a*$b;
+$step2 = $c-$step1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a](x{}+ [$b]) & \geq [$c] \\
+ [$a]x {}+[$step1] & \geq [$c] \\
+ [$a]x {}+[$step1]\mathbf{{} -[$step1]} & \geq [$c]\mathbf{{} -[$step1]} \\
+ [$a]x & \geq [$step2] \\
+ \frac{[$a]x}{[$a]} & \geq \frac{[$step2]}{[$a]} \\
+ x & \geq [$v]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality240.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality240.pg
new file mode 100644
index 0000000000..db9a6dbde0
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality240.pg
@@ -0,0 +1,109 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like ax+b < cx+d
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->are(t=>"Real");
+
+$a=random(6,10,1);
+$b=random(2,10,1);
+$c=random(1,5,1);
+$crit=random(2,10,1);
+$d=$a*$crit+$b-$c*$crit;
+
+$left = Compute("$a*t+$b");
+$comp = "<";
+$right = Compute("$c*t+$d");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(t=>"Real");
+
+$setans = Compute("{ t | t < $crit}");
+$alt = Compute("{ t | $crit>= t}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->variables->are(t=>"Real");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a]t {}+[$b] & < [$c]t {}+[$d] \\
+ [$a]t {}+[$b]\mathbf{{}-[$c]t {}-[$b]} & < [$c]t {}+[$d]\mathbf{{}-[$c]t {}-[$b]} \\
+ [$a-$c]t & < [$d-$b] \\
+ \frac{[$a-$c]t}{[$a-$c]} & < \frac{[$d-$b]}{[$a-$c]} \\
+ t & < [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality250.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality250.pg
new file mode 100644
index 0000000000..5383da1246
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality250.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -ax +b <= -z -c
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','add','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->are(z=>"Real");
+
+#make sure $d is negative
+do {
+ $a=random(2,10,1);
+ $b=random(2,10,1);
+ $crit=random(1,10,1);
+ $ans=random(1,10,1);
+ $d=$b-($a-1)*$crit;
+} until ($d<0);
+
+$d=abs($d);
+
+$left = Compute("-$a*z+$b");
+$comp = "\leq";
+$right = Compute("-z-$d");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(z=>"Real");
+
+$setans = Compute("{ z | z >= $crit}");
+$alt = Compute("{ z | $crit <= z}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$crit,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$a]z {}+[$b] & \leq -z {}-[$d] \\
+ -[$a]z {}+[$b] \mathbf{{}+[$a]z {}+[$d]}& \leq -z {}-[$d]\mathbf{{}+[$a]z {}+[$d]} \\
+ [$b+$d] & \leq [$a-1]z \\
+ \frac{[$b+$d]}{[$a-1]} & \leq \frac{[$a-1]z}{[$a-1]} \\
+ [$crit] & \leq z\\
+z & \geq [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality260.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality260.pg
new file mode 100644
index 0000000000..d6fd5a91bf
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality260.pg
@@ -0,0 +1,120 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like x-a-bx > -c-dx+e
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','combine','add','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->are(a=>"Real");
+
+do{
+$a=random(2,10,1);
+$b=random(2,10,1);
+$c=random(2,10,1);
+$d=random(2,10,1);} until (1 - $b + $d >1);
+$crit=random(-10,10,1);
+
+#make sure $e is positive
+$e=$crit-$a-$b*$crit+$c+$d*$crit;
+while ($e<=0) {
+ $crit=random(-10,10,1);
+ $e=$crit-$a-$b*$crit+$c+$d*$crit;
+}
+
+$left = Compute("a-$a-$b*a");
+$comp = ">";
+$right = Compute("-$c-$d*a+$e");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(a=>"Real");
+
+$setans = Compute("{ a | a > $crit}");
+$alt = Compute("{ a | $crit < a}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($crit,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = 1-$b;
+$step2 = 1-$b+$d;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ a -[$a] -[$b]a & > -[$c] -[$d]a +[$e] \\
+ [$step1]a -[$a] & > [$e-$c] -[$d]a \\
+ [$step1]a -[$a]\mathbf{{}+[$a] +[$d]a} & > [$e-$c] -[$d]a\mathbf{{}+[$a] +[$d]a} \\
+ [$step2]a & > [$e-$c+$a] \\
+ \frac{[$step2]a}{[$step2]} &> \frac{[$e-$c+$a]}{[$step2]} \\
+ a &> [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality270.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality270.pg
new file mode 100644
index 0000000000..7b66d7582a
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality270.pg
@@ -0,0 +1,117 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -ax+b-cx >= dx+e
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','combine','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+#make the critical point 0
+Context("Numeric");
+Context()->variables->are(p=>"Real");
+
+$a=random(2,10,1);
+$b=random(2,10,1);
+$c=random(2,10,1);
+$d=$b;
+$e=random(2,10,1);
+#make sure x terms are not cancelled
+while (($a+$c)==(-$e)) {$e=random(2,10,1);}
+
+$left = Compute("-$c*p+$d-$e*p");
+$comp = "\geq";
+$right = Compute("$a*p+$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(p=>"Real");
+
+$setans = Compute("{ p | p <= 0}");
+$alt = Compute("{ p | 0 >= p}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,0]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = abs(-$c-$e);
+$step2 = $a+$step1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$c]p +[$d] -[$e]p & \geq [$a]p+[$b] \\
+ (-[$c]-[$e])p +[$d] & \geq [$a]p+[$b] \\
+ -[$step1]p +[$d] & \geq [$a]p+[$b] \\
+ -[$step1]p +[$d]\mathbf{{}+[$step1]p-[$b]} & \geq [$a]p+[$b]\mathbf{{}+[$step1]p-[$b]} \\
+ [$d-$b] & \geq [$step2]p \\
+ \frac{[$d-$b]}{[$step2]} & \geq \frac{[$step2]p}{[$step2]} \\
+ 0 & \geq p \\
+ p & \leq 0
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality280.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality280.pg
new file mode 100644
index 0000000000..6d0519eb53
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality280.pg
@@ -0,0 +1,113 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a < -b(x-c)
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','distributive','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->add(p=>"Real");
+
+$a=random(2,10,1);
+$b=random(1,10,1);
+$crit = non_zero_random(-10,10,1);
+$c= -$a*($crit -$b);
+
+$left = Compute("$c");
+$comp = "<";
+$right = Compute("-$a*(p-$b)");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->add(p=>"Real");
+
+$setans = Compute("{ p | p < $crit}");
+$alt = Compute("{ p | $crit > p}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit )");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $a*$b;
+$step2 = $c-$step1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$c] & < -[$a](p -[$b]) \\
+ [$c] & < -[$a](p +(-[$b])) \\
+ [$c] & < -[$a]p +(-[$a]) \cdot (-[$b]) \\
+ [$c] & < -[$a]p +[$step1] \\
+ [$c]\mathbf{{}-[$step1]}& < -[$a]p +[$step1]\mathbf{{}-[$step1]} \\
+ [$step2] & < -[$a]p \\
+ \frac{[$step2]}{-[$a]} & > \frac{-[$a]p}{-[$a]} \\
+ [$crit] & > p \\
+ p &< [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality290.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality290.pg
new file mode 100644
index 0000000000..23dbd7ad19
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality290.pg
@@ -0,0 +1,111 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -(x-a) >= b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','negative','distributive','subtract','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+do {
+ $crit = random(-10,-2,1);
+ $b=random(1,10,1);
+ $c= -($crit -$b);
+} until ($c>0);
+
+$left = Compute("-(x-$b)");
+$comp = "\geq";
+$right = Compute("$c");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x <= $crit }");
+$alt = Compute("{ x | $crit >= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $a*$b;
+$step2 = $c+$step1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -(x- [$b]) & \geq [$c] \\
+ (-1) \cdot (x+(-[$b])) & \geq [$c] \\
+ -x +(-1) \cdot (-[$b]) & \geq [$c] \\
+ -x +[$b] & \geq [$c] \\
+ -x +[$b]\mathbf{{} -[$b]}& \geq [$c]\mathbf{{} -[$b]} \\
+ -x & \geq [$c-$b] \\
+ (-1) \cdot (-x) & \leq (-1) \cdot ([$c-$b]) \\
+ x & \leq [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality30.pg
new file mode 100644
index 0000000000..7e00a14106
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality30.pg
@@ -0,0 +1,99 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a <= x + b
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$left = Compute("$a");
+$comp = "\leq";
+$right = Compute("x+$b");
+
+$c = $a-$b;
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | x >= $c}");
+$alt = Compute("{ x | $c <= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[$c,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a] & \leq x +[$b] \\
+ [$a]\mathbf{{}-[$b]} & \leq x +[$b]\mathbf{{}-[$b]} \\
+ [$c] & \leq x \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality300.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality300.pg
new file mode 100644
index 0000000000..fdd6a1f2b6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality300.pg
@@ -0,0 +1,118 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a <= b-c(x-d)
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','distributive','subtract','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->are(z=>"Real");
+
+$a=random(1,10,1);
+$b=random(2,10,1);
+$crit = non_zero_random(-10,10,1);
+$c=random(1,10,1);
+$d= $a-$b*($crit -$c);
+
+$left = Compute("$d");
+$comp = "\leq";
+$right = Compute("$a-$b*(z-$c)");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(z=>"Real");
+
+$setans = Compute("{ z | z <= $crit}");
+$alt = Compute("{ z | $crit >= z}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit ]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $b*$c;
+$step2 = $a+$step1;
+$step3 = $d-$step2;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$d] & \leq [$a]-[$b](z-[$c]) \\
+ [$d] & \leq [$a]+(-[$b]) \cdot (z+(-[$c])) \\
+ [$d] & \leq [$a]+(-[$b]) \cdot z+(-[$b]) \cdot (-[$c]) \\
+ [$d] & \leq [$a]-[$b]z +[$step1] \\
+ [$d] & \leq -[$b]z +([$a]+[$step1]) \\
+ [$d] & \leq -[$b]z +[$step2] \\
+ [$d]\mathbf{{}-[$step2]} & \leq -[$b]z +[$step2]\mathbf{{}-[$step2]} \\
+ [$step3] & \leq -[$b]z \\
+ \frac{[$step3]}{-[$b]} & \geq \frac{-[$b]z}{-[$b]} \\
+ [$crit ] & \geq z \\
+ z & \leq [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality310.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality310.pg
new file mode 100644
index 0000000000..867db53b94
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality310.pg
@@ -0,0 +1,113 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a-(x+b) < c
+#
+# Last updated: Jordan 7/30/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','distributive','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->variables->are(y=>"Real");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$crit = random(-10,10,1);
+$c= $a-($crit+$b);
+
+$left = Compute("$a-(y+$b)");
+$comp = "<";
+$right = Compute("$c");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(y=>"Real");
+
+$setans = Compute("{ y | y > $crit}");
+$alt = Compute("{ y | $crit < y}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($crit,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $c+$b-$a;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a] -(y + [$b]) & < [$c] \\
+ [$a] +(-1) \cdot (y + [$b]) & < [$c] \\
+ [$a] +(-1) \cdot y + (-1) \cdot [$b] & < [$c] \\
+ [$a] -y - [$b] & < [$c] \\
+ -y +([$a]-[$b]) & < [$c] \\
+ -y -[$b-$a] & < [$c] \\
+ -y -[$b-$a]\mathbf{{}+[$b-$a]} & < [$c]\mathbf{{}+[$b-$a]} \\
+ -y & < [$step1] \\
+-1 \cdot (-y) & > -1 \cdot ([$step1]) \\
+ y & > [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality320.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality320.pg
new file mode 100644
index 0000000000..944a7bd52d
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality320.pg
@@ -0,0 +1,122 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a+b(x-c) < -d-(e-fx)
+#
+# Last updated: Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','distributive','subtract','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(7,10,1);
+$c=random(3,10,1);
+$crit = random(-10,10,1);
+
+$e=random(1,10,1);
+$f=random(2,5,1);
+$d= $a+$b*($crit-$c)+$e-$f*$crit;
+
+$left = Compute("$a+$b*(x-$c)");
+$comp = "<";
+$right = Compute("$d-($e-$f*x)");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x < $crit}");
+$alt = Compute("{ x | $crit > x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $b*$c;
+$step2 = abs($a-$step1);
+$step3 = $d-$e;
+$step4 = $b-$f;
+$step5 = $step3+$step2;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+[$a]+[$b](x-[$c]) &<[$d]-([$e]-[$f]x) \\
+[$a]+[$b](x+(-[$c])) &<[$d]+(-1) \cdot ([$e]+(-[$f]x)) \\
+[$a]+[$b] \cdot x+[$b] \cdot (-[$c]) &<[$d]+(-1) \cdot [$e]+(-1) \cdot (-[$f]x) \\
+[$a]+[$b]x-[$step1] &<[$d]-[$e]+[$f]x \\
+[$a]-[$step1]+[$b]x &<[$d]-[$e]+[$f]x \\
+-[$step2]+[$b]x &<[$step3]+[$f]x \\
+-[$step2]+[$b]x\mathbf{{}+[$step2]-[$f]x} &<[$step3]+[$f]x\mathbf{{}+[$step2]-[$f]x} \\
+[$step4]x &<[$step5] \\
+\frac{[$step4]x}{[$step4]} &<\frac{[$step5]}{[$step4]} \\
+ x &< [$crit]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality40.pg
new file mode 100644
index 0000000000..8975612e39
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality40.pg
@@ -0,0 +1,102 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a > x + b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$left = Compute("$a");
+$comp = ">";
+$right = Compute("x+$b");
+
+$c = $a-$b;
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | x < $c}");
+$alt = Compute("{ x | $c > x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$c)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a] & > x +[$b] \\
+ [$a]\mathbf{{}-[$b]} & > x +[$b]\mathbf{{}-[$b]} \\
+ [$c] & > x \\
+ x & < [$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality41.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality41.pg
new file mode 100644
index 0000000000..d608614a03
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality41.pg
@@ -0,0 +1,99 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a > x + b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(1,5,1);
+$b=random(6,10,1);
+$left = Compute("$a");
+$comp = ">";
+$right = Compute("x-$b");
+
+$c = $a+$b;
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | x < $c}");
+$alt = Compute("{ x | $c > x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$c)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a] & > x -[$b] \\
+ [$a]\mathbf{{}+[$b]} & > x -[$b]\mathbf{{}+[$b]} \\
+ [$c] & > x \\
+ x & < [$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality50.pg
new file mode 100644
index 0000000000..2e8eea2a38
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality50.pg
@@ -0,0 +1,97 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like ax <= b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,5,1);
+$c=list_random((2,3,4));
+$b=$a*$c;
+$left = Compute("$a*x");
+$comp = "\leq";
+$right = Compute("$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+
+$setans = Compute("{ x | x <= $c}");
+$alt = Compute("{ x | $c >= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$c]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$a]x & \leq [$b] \\
+ \frac{[$a]x}{[$a]} & \leq \frac{[$b]}{[$a]} \\
+ x & \leq [$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality60.pg
new file mode 100644
index 0000000000..9715e6dc54
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality60.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like ax>b. Fraction/decimal is in answer.
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ reduceConstants => 0
+);
+
+$num=random(1,10,1);
+$den=random(2,10,1);
+while (gcd($den,$num)!=1) {$den=random(1,10,1);}
+$c=Fraction($num,$den);
+
+$left = Compute("$den*x");
+$comp = ">";
+$right = Compute("$num");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ showExtraParens => 0,
+ reduceConstants => 0
+);
+
+$setans = Compute("{ x | x > $c}");
+$alt = Compute("{ x | $c < x}");
+$ans = OneOf($setans, $alt);
+$ansLatexString="\left\{ x \mid x > ".$c->TeX."\right\}";
+
+Context("Interval");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ reduceConstants => 0
+);
+$intans = Interval("($c,inf)");
+$intansLatexString = "\left(".$c->TeX.",\infty\right)";
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans->cmp(correct_ans_latex_string=>$ansLatexString)}.
+ In interval notation, the solution set is [______________]{$intans->cmp(correct_ans_latex_string=>$intansLatexString)}.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$den]x & > [$num] \\
+ \frac{[$den]x}{[$den]} &> \frac{[$num]}{[$den]} \\
+ x & > \frac{[$num]}{[$den]} \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`\left([$c],\infty\right)`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality70.pg
new file mode 100644
index 0000000000..f924e2ad42
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality70.pg
@@ -0,0 +1,98 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -ax>=b
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,5,1);
+$c=list_random((2,3,4));
+$b=$a*$c;
+$left = Compute("-$a*x");
+$comp = "\geq";
+$right = Compute("$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x <= -$c}");
+$alt = Compute("{ x | -$c >= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,-$c]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -[$a]x & \geq [$b] \\
+ \frac{-[$a]x}{-[$a]} & \leq \frac{[$b]}{-[$a]} \\
+ x & \leq -[$c] \\
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality80.pg
new file mode 100644
index 0000000000..7ee2f0384c
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality80.pg
@@ -0,0 +1,98 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a>=-bx
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','divide','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$a=random(2,5,1);
+$c=list_random((2,3,4));
+$b=$a*$c;
+$left = Compute("$b");
+$comp = "\geq";
+$right = Compute("-$a*x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x >= -$c}");
+$alt = Compute("{ x | -$c <= x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[-$c,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$b] & \geq -[$a]x \\
+ \frac{[$b]}{-[$a]} & \leq \frac{-[$a]x}{-[$a]} \\
+ -[$c] & \leq x \\
+ x & \geq -[$c]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality90.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality90.pg
new file mode 100644
index 0000000000..fede26956d
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequality90.pg
@@ -0,0 +1,96 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a < -x
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','multiply','negative')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$b=random(2,10,1);
+$left = Compute("$b");
+$comp = "<";
+$right = Compute("-x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x < -$b}");
+$alt = Compute("{ x | -$b > x}");
+$ans = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,-$b)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ [$b] & < -x \\
+ -1 \cdot ([$b]) & < -1 \cdot (-x) \\
+ -[$b] & > x \\
+ x & < -[$b]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction10.pg
new file mode 100644
index 0000000000..413b8b36dc
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction10.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like x/a + b >= cx
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+
+$a=random(2,10,1);
+$crit = $a*list_random((2,3,4,5,6));
+$c=random(2,5,1);
+$b= $c*$crit-$crit/$a;
+
+$frac = Fraction(x,$a);
+
+$left = Compute("$frac+$b");
+$comp = "\geq";
+$right = Compute("$c*x");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x <= $crit}");
+$alt = Compute("{ x | $crit >= x}");
+$ans = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$crit]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $a*$b;
+$step2 = $a*$c;
+$s3=$step2-1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{x}{[$a]} +[$b] &\geq [$c]x \\
+ [$a] \cdot \frac{x}{[$a]} +[$a] \cdot [$b] &\geq [$a] \cdot [$c]x \\
+ x +[$step1] &\geq [$step2]x \\
+ x +[$step1]\mathbf{{}-x} & \geq [$step2]x\mathbf{{}-x} \\
+ [$step1] &\geq [$s3]x \\
+ \frac{[$step1]}{[$s3]} &\geq \frac{[$s3]x}{[$s3]} \\
+ [$crit] &\geq x
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction20.pg
new file mode 100644
index 0000000000..d65ea1b9c1
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction20.pg
@@ -0,0 +1,132 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a/b -cx < d. Fraction is in answer.
+#
+# Last updated: Jordan 10/25/13, 7/30/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','negative','divide','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+Context()->variables->are(y=>"Real");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ reduceConstants => 0
+);
+
+$den = random(2,6,2);
+$num=random(3,5,2);
+while (gcd($den,$num)!=1) {$num=random(3,5,2);}
+$frac = Fraction($num,$den);
+
+$a=random(2,6,1);
+$b=random(2,6,1);
+$crit = Fraction($num-$b*$den,$a*$den);
+
+$critNum = -($crit->value)[0];
+$critDen = ($crit->value)[1];
+
+$left = Compute("$frac-$a*y");
+$comp = "<";
+$right = Compute("$b");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ reduceConstants => 0
+);
+Context()->variables->are(y=>"Real");
+$setans = Compute("{ y | y > -($critNum/$critDen)}");
+$alt = Compute("{ y | -($critNum/$critDen) < y}");
+$ans = OneOf($setans, $alt);
+$ansLatexString = "\left\{ y \mid y > ".$crit->TeX."\right\}";
+
+Context("Interval");
+Context()->flags->set(
+ formatStudentAnswer => 'parsed',
+ reduceConstants => 0
+);
+$intans = Compute("($crit,inf)");
+$intansLatexString = "\left(".$crit->TeX.",\infty\right)";
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$ans->cmp(correct_ans_latex_string=>$ansLatexString)}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans->cmp(correct_ans_latex_string=>$intansLatexString)}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $den*$a;
+$step2 = $den*$b;
+$step3 = $step2-$num;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{[$num]}{[$den]} -[$a]y &< [$b] \\
+[$den] \cdot \left(\frac{[$num]}{[$den]} - [$a]y\right) &< [$den] \cdot [$b] \\
+ [$den] \cdot \frac{[$num]}{[$den]} - [$den] \cdot [$a]y &< [$den] \cdot [$b] \\
+ [$num] -[$step1]y &< [$step2] \\
+ [$num]-[$step1]y\mathbf{{} -[$num]} &< [$step2]\mathbf{{} -[$num]} \\
+ -[$step1]y &<[$step3] \\
+ \frac{-[$step1]y}{-[$step1]} &< \frac{[$step3]}{-[$step1]} \\
+ y &< -\frac{[$critNum]}{[$critDen]}
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`\left(-\frac{[$critNum]}{[$critDen]},\infty\right)`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction30.pg
new file mode 100644
index 0000000000..50dfe1569b
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction30.pg
@@ -0,0 +1,131 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like (-a/b)x > (c/d)x - e
+#
+# Last updated: Jordan 10/25/13, 7/31/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','negative','multiply','divide')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction");
+Context()->variables->are(t=>"Real");
+
+
+$den1 = random(3,7,2);
+$num1 = random(2,6,2);
+while (gcd($den1,$num1)!=1) {$num1=random(2,6,2);}
+
+$den2 = random(2,6,2);
+$num2 = random(1,5,2);
+while (gcd($den2,$num2)!=1) {$num2=random(1,5,2);}
+
+$com=lcm($den1,$den2);
+$ans = $com*list_random((1,2,3));
+$a= $num1*$ans/$den1+$num2*$ans/$den2;
+while ($a==0) {
+ $ans = $com*list_random((1,2,3));
+ $a= $num1*$ans/$den1+$num2*$ans/$den2;
+}
+
+$frac1=Fraction($num1,$den1);
+$frac2=Fraction($num2,$den2);
+
+$left = Compute("-$frac2*t");
+$comp = ">";
+$right = Compute("$frac1*t - $a");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(t=>"Real");
+
+$setans = Compute("{ t | t< $ans}");
+$alt = Compute("{ t | $ans > t}");
+$options = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$ans)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$step1 = $num1*$com/$den1;
+$step2 = $num2*$com/$den2;
+$step3 = $com*$a;
+$step4 = $step2+$step1;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ -\frac{[$num2]}{[$den2]}t &> \frac{[$num1]}{[$den1]}t - [$a] \\
+[$com] \cdot \left(-\frac{[$num2]}{[$den2]}t\right) &> [$com] \cdot \left(\frac{[$num1]}{[$den1]}t - [$a]\right) \\
+ [$com] \cdot \left(-\frac{[$num2]}{[$den2]}t\right) &> [$com] \cdot \frac{[$num1]}{[$den1]}t - [$com] \cdot [$a] \\
+ -[$step2]t &> [$step1]t - [$step3] \\
+ -[$step2]t\mathbf{{} -[$step1]t} &> [$step1]t - [$step3]\mathbf{{} -[$step1]t} \\
+ -[$step4]t &> -[$step3] \\
+ \frac{-[$step4]t}{-[$step4]} &> \frac{-[$step3]}{-[$step4]} \\
+ t &< [$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction40.pg
new file mode 100644
index 0000000000..ebeeff63de
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction40.pg
@@ -0,0 +1,107 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a/b >= x/c
+#
+# Last updated: Jordan 10/25/13, Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$den1 = random(2,10,2);
+$num1 = random(3,9,2);
+while (gcd($den1,$num1)!=1) {$num1 = random(3,9,2);}
+
+$den2 = $den1*random(2,6,1);
+$ans = $den2*$num1/$den1;
+
+Context()->flags->set(reduceConstants=>0);
+$left = Formula("$num1/$den1");
+$comp = "\geq";
+$right = Formula("x/$den2");
+
+
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x<= $ans}");
+$alt = Compute("{ x | $ans >= x}");
+$options = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$ans]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{[$num1]}{[$den1]} & \geq \frac{x}{[$den2]} \\
+ [$den2] \cdot \frac{[$num1]}{[$den1]} & \geq [$den2] \cdot \frac{x}{[$den2]} \\
+ [$ans] & \geq x\\
+ x & \leq [$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction50.pg
new file mode 100644
index 0000000000..fa4caa3ea6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction50.pg
@@ -0,0 +1,109 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like -x/a < -b/c
+#
+# Last updated: Jordan 10/25/13, 7/31/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','negative','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$den1 = random(2,10,2);
+$num1 = random(3,9,2);
+while (gcd($den1,$num1)!=1) {$num1 = random(3,9,2);}
+
+$den2 = $den1*random(2,6,1);
+$ans = $den2*$num1/$den1;
+
+Context()->flags->set(reduceConstants=>0);
+Context()->variables->are(z=>'Real');
+$left = Formula("-(z/$den2)");
+$comp = "<";
+$right = Formula("-($num1/$den1)");
+
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(z=>'Real');
+
+$setans = Compute("{ z | z> $ans}");
+$alt = Compute("{ z | $ans < z}");
+$options = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($ans,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`]. The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ In interval notation, the solution set is [______________]{$intans}.
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ -\frac{z}{[$den2]} &< -\frac{[$num1]}{[$den1]} \\
+ (-1) \cdot \left(-\frac{z}{[$den2]}\right) &> (-1) \cdot \left(-\frac{[$num1]}{[$den1]}\right) \\
+ \frac{z}{[$den2]} &> \frac{[$num1]}{[$den1]} \\
+ [$den2] \cdot \frac{z}{[$den2]} &> [$den2] \cdot \frac{[$num1]}{[$den1]} \\
+ z &> [$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction60.pg
new file mode 100644
index 0000000000..24248eb3da
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction60.pg
@@ -0,0 +1,123 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like x/a -b <= x/c
+#
+# Last updated: Jordan 10/25/13, 7/31/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','add','multiply')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$den1 = random(3,7,2);
+$den2 = random($den1+2,10,1);
+$com = lcm($den1,$den2);
+
+$ans = $com*list_random((1,2,3));
+$a= $ans/$den1-$ans/$den2;
+
+Context()->flags->set(reduceConstants=>0);
+$left = Formula("x/$den2-$a");
+$comp = "\leq";
+$right = Formula("x/$den1");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x>= -$ans}");
+$alt = Compute("{ x | -$ans <= x}");
+$options = OneOf($setans, $alt);
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("[-$ans,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$s1 = $com*$a;
+$s2 = $com/$den1;
+$s3 = $com/$den2;
+$s4 = $s2-$s3;
+
+$s3x = Formula("$s3 x")->reduce;
+$s4x = Formula("$s4 x")->reduce;
+
+$solnString = '';
+if ($s4 != 1)
+{$solnString = "\frac{-$s1}{$s4} & \leq \frac{$s4 x}{$s4} \\
+ -$ans & \leq x\\";};
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{x}{[$den2]} - [$a] & \leq \frac{x}{[$den1]} \\
+ [$com] \cdot \left(\frac{x}{[$den2]} - [$a]\right) & \leq [$com] \cdot \frac{x}{[$den1]} \\
+[$com] \cdot \frac{x}{[$den2]} - [$com] \cdot [$a] & \leq [$com] \cdot \frac{x}{[$den1]} \\
+ [$s3x] - [$s1] & \leq [$s2]x \\
+ [$s3x] - [$s1]\mathbf{{}-[$s3x]} & \leq [$s2]x\mathbf{{}-[$s3x]} \\
+ -[$s1] & \leq [$s4x] \\
+[$solnString]* x & \geq -[$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction70.pg
new file mode 100644
index 0000000000..2fc2202e66
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction70.pg
@@ -0,0 +1,132 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like (x-a)/b >= (x+c)/d
+#
+# Last updated: Jordan 10/25/13, 7/31/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','add','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$den2 = random(2,6,2);
+$den1 = $den2+2;
+$num1 = random(1,10,1);
+$num2 = random(1,10,1);
+
+$ans = (-$num1*$den2-$den2*$num2-2*$num2)/2;
+$com = lcm($den1,$den2);
+
+Context()->flags->set(reduceConstants=>0);
+Context()->variables->are(y=>'Real');
+$left = Formula("(y-$num1)/$den1");
+$comp = "\geq";
+$right = Formula("(y+$num2)/$den2");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+Context()->variables->are(y=>'Real');
+
+$setans = Compute("{ y | y<= $ans}");
+$alt = Compute("{ y | $ans >= y}");
+$options = OneOf($setans, $alt);
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("(-inf,$ans]");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$s1 = $com/$den1;
+$s2 = $com/$den2;
+$s3 = $s1*$num1;
+$s4 = $s2*$num2;
+$s5 = $s2-$s1;
+$s6 = $s3+$s4;
+
+Context()->variables->are(y=>'Real');
+$s5y = Formula("$s5 y")->reduce;
+
+$solnString = '';
+if ($s5 != 1)
+{ $solnString = " -$s6 & \geq $s5y \\ \frac{-$s6}{$s5} & \geq \frac{$s5y}{$s5} \\"};
+
+$s7 = Compute("$s1*(y-$num1)")->reduce;
+$s8 = Compute("$s2*(y+$num2)")->reduce;
+$s9 = Compute("$s1*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{y-[$num1]}{[$den1]} & \geq \frac{y+[$num2]}{[$den2]} \\
+ [$com] \cdot \frac{y-[$num1]}{[$den1]} & \geq [$com] \cdot \frac{y+[$num2]}{[$den2]} \\
+ [$s7] & \geq [$s8] \\
+ [$s9] - [$s3] & \geq [$s2]y+[$s4] \\
+ [$s9] - [$s3]\mathbf{{} -[$s9]-[$s4]} & \geq [$s2]y+[$s4]\mathbf{{} -[$s9]-[$s4]} \\ [$solnstring]*
+ [$ans] & \geq y\\
+ y & \leq [$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+
+END_PGML_SOLUTION
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction80.pg
new file mode 100644
index 0000000000..4ed5ccc6f9
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveInequalityWithFraction80.pg
@@ -0,0 +1,139 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The equation looks like a/b < (x+c)/d - (x-e)/f
+#
+# Last updated: Jordan 10/25/13, 7/31/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('solve','inequality','linear','set notation','interval notation','fraction','multiply','combine','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextInequalitySetBuilder.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+
+$den1 = random(2,6,2);
+$den2 = $den1*2;
+$num1 = random(1,10,1);
+$num2 = random(1,10,1);
+
+$ans = non_zero_random(-10,10,1);
+Context("Fraction");
+$frac = Fraction($ans+2*$num1+$num2,2*$den1)->reduce;
+@fract = $frac->value;
+$num3 = $fract[0];
+$den3 = $fract[1];
+while ($den3==1) {
+ $ans = random(-10,10,1);
+ Context("Fraction");
+ $frac = Fraction($ans+2*$num1+$num2,2*$den1)->reduce;
+ @fract = $frac->value;
+ $num3 = $fract[0];
+ $den3 = $fract[1];
+}
+
+$com = lcm(lcm($den1,$den2),$den3);
+
+Context()->flags->set(reduceConstants=>0);
+$left = Formula("$num3/$den3");
+$comp = "<";
+$right = Formula("(x+$num1)/$den1-(x-$num2)/$den2");
+
+InequalitySetBuilder::UseVerticalSuchThat();
+Context("InequalitySetBuilder-Only");
+Context()->flags->set(formatStudentAnswer=>'parsed');
+
+$setans = Compute("{ x | x> $ans}");
+$alt = Compute("{ x | $ans < x}");
+$options = OneOf($setans, $alt);
+
+
+
+Context("Interval");
+Context()->flags->set("formatStudentAnswer"=>'parsed');
+$intans = Compute("($ans,inf)");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality.
+
+ [`` [$left] [$comp] [$right] ``]
+
+[@KeyboardInstructions(q!Please type: [|inf|]* for [`\infty`], [|>=|]* for [`\geq`], and [|<=|]* for [`\leq`].!)@]**
+
+ In set-builder notation, the solution set is [______________]{$options->cmp(correct_ans_latex_string=>$setans->TeX)}.
+ [@KeyboardInstructions(q!The [| | |]* symbol is above the [|Enter|]* key.!)@]**
+
+ In interval notation, the solution set is [______________]{$intans}.
+
+
+END_PGML
+
+##############################################
+
+$s1 = $com/$den1;
+$s2 = $com/$den2;
+$s3 = $com*$num3/$den3;
+$s4 = $s1*$num1;
+$s5 = $s2*$num2;
+$s7 = $s4+$s5;
+
+$s9 = Compute("$s2*x")->reduce;
+
+$s8 = Compute("-$s2*(x-$num2)")->reduce;
+
+BEGIN_PGML_SOLUTION
+
+ [`
+\begin{aligned}
+ \frac{[$num3]}{[$den3]} &< \frac{x+[$num1]}{[$den1]} - \frac{x-[$num2]}{[$den2]} \\
+ [$com] \cdot \frac{[$num3]}{[$den3]} &< [$com] \cdot \frac{x+[$num1]}{[$den1]} - [$com] \cdot \frac{x-[$num2]}{[$den2]} \\
+ [$s3] &<[$s1](x+[$num1]) [$s8] \\
+ [$s3] &< [$s1]x+[$s4] - [$s9] + [$s5] \\
+ [$s3] &< x + [$s7] \\
+ [$s3]\mathbf{{} -[$s7]} &< x + [$s7]\mathbf{{} -[$s7]} \\
+ [$ans] &< x \\
+ x & > [$ans]
+\end{aligned}
+`]
+
+The solution in set-builder notation is [`[$setans]`].
+
+The solution in interval notation is [`[$intans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality10.pg
new file mode 100644
index 0000000000..9e62c2b048
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality10.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in interval notation.
+# There is no solution.
+#
+# Last updated: Jordan 7/28/13; Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+# "parserOneOf.pl", #needed if the answer is "all real numbers" or "(-inf, inf)",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(1,9,1);
+
+$ans = Compute('no solution');
+#$ans = OneOf("(-inf,inf), all real numbers");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` [$a]x > [$a]x+[$b] ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ [$a]x &> [$a]x +[$b] \\
+ [$a]x \mathbf{{} -[$a]x} &> [$a]x +[$b]\mathbf{{} -[$a]x} \\
+ 0 &> [$b]
+\end{aligned}
+`]
+
+Since [`0>[$b]`] is false no matter what the value of [`x`] is, this inequality has *no solution*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality20.pg
new file mode 100644
index 0000000000..01a208dfe6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality20.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# There is no solution.
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','add','no solution')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+# solve inequality with no solutions
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(-10,-1,1);
+
+$ans = Compute("no solution");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` -[$a]x \leq -[$a]x+[$b] ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ -[$a]x & \leq -[$a]x {}+[$b] \\
+ -[$a]x\mathbf{{}+[$a]x} & \leq -[$a]x {}+[$b]\mathbf{{}+[$a]x} \\
+ 0 & \leq [$b]
+\end{aligned}
+`]
+
+Since [`0 \leq [$b]`] is false, this inequality has *no solution*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality30.pg
new file mode 100644
index 0000000000..08f6f8dd62
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality30.pg
@@ -0,0 +1,90 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The solution set is "all real numbers".
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','combine','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+# solve inequality with no solutions
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(1,10,1);
+$c=random(1,10,1);
+$d=$b+$c;
+
+$ans = OneOf("(-inf,inf), all real numbers");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` -[$c]+[$a]x+[$d] \geq [$a]x+[$b] ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ -[$c]+[$a]x+[$d] &\geq [$a]x+[$b] \\
+ [$a]x+[$b] &\geq [$a]x+[$b] \\
+ [$a]x+[$b] \mathbf{{}-[$a]x-[$b]}&\geq [$a]x+[$b]\mathbf{{}-[$a]x-[$b]} \\
+ 0 & \geq 0
+\end{aligned}
+`]
+
+Since [`0 \geq 0`] is true, the solution set for this inequality is *all real numbers*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality40.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality40.pg
new file mode 100644
index 0000000000..94f3afed86
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality40.pg
@@ -0,0 +1,87 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# There is no solution.
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','subtract')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(1,10,1);
+$c=random(1,10,1);
+$d=$b+$c;
+
+$ans = Compute("no solution");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` -[$c]+[$a]x+[$d] < [$a]x+[$b] ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ -[$c]+[$a]x+[$d] &< [$a]x+[$b] \\
+ [$a]x+[$b] &< [$a]x+[$b] \\
+ [$a]x+[$b]\mathbf{{} -[$a]x-[$b]} &< [$a]x+[$b]\mathbf{{} -[$a]x-[$b]} \\
+ 0 & < 0
+\end{aligned}
+`]
+
+Since [`0 < 0`] is not true, this inequality has *no solution*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality50.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality50.pg
new file mode 100644
index 0000000000..a22b6c01c2
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality50.pg
@@ -0,0 +1,93 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# There is no solution.
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','combine','no solution')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(5,10,1);
+$b=random(5,10,1);
+$c=random(1,$a,1);
+$e=random(-$a+$c+1,20,1);
+$f=$b-1;
+
+$ans = Compute("no solution");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` -[$a]-[$b]z+[$c] > -z+[$e]-[$f]z ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+$s1 = abs(-$a+$c);
+$s2 = $e+$s1;
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ -[$a]-[$b]z+[$c] &> -z+[$e]-[$f]z \\
+ (-[$a]+[$c])-[$b]z &> (-1-[$f])z+[$e] \\
+ (-[$a]+[$c])-[$b]z &> (-1-[$f])z+[$e] \\
+ -[$s1] -[$b]z &> -[$b]z+[$e] \\
+ -[$s1]-[$b]z\mathbf{{}+[$b]z+[$s1]} &> -[$b]z+[$e]\mathbf{{}+[$b]z+[$s1]} \\
+ 0 &> [$s2]
+\end{aligned}
+`]
+
+Since [`0 > [$s2] `] is not true, this inequality has *no solution*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality60.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality60.pg
new file mode 100644
index 0000000000..f63cfbe55d
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality60.pg
@@ -0,0 +1,108 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The solution set is "all real numbers".
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','fraction')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,5,1);
+$b=random(1,9,1);
+$c=random(2,10,2);
+$d=random(2,10,2);
+$e=random(1,10,1);
+
+$h=random(1,10,1);
+$i=($a*$c+$d)/2;
+$f=random(1,20,1);
+#make sure the solution is "all real numbers"
+while ($f>=$a*$b+$e+2*$h) {$f=random(1,20,1);}
+
+$ans = OneOf("(-inf,inf), all real numbers");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` [$a]([$b]-[$c]m)-([$d]m-[$e]) > [$f]-2([$h]+[$i]m) ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+$s1=$a*$b;
+$s2=$a*$c;
+$s3=2*$h;
+$s4=2*$i;
+$s5=$s1+$e;
+$s6=$s2+$d;
+$s7=$f-$s3;
+$s8=$s5-$s7;
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ [$a]([$b]-[$c]m)-([$d]m-[$e]) &> [$f]-2([$h]+[$i]m) \\
+ [$a]([$b]+(-[$c]m))+ (-1) \cdot ([$d]m+(-[$e])) &> [$f]+(-2) \cdot ([$h]+[$i]m) \\
+ [$a] \cdot [$b]+ [$a] \cdot (-[$c]m)+ (-1) \cdot [$d]m+ (-1) \cdot(-[$e]) &\> [$f]+(-2) \cdot [$h]+(-2) \cdot [$i]m \\
+ [$s1] - [$s2]m -[$d]m+ [$e] &> [$f]-[$s3]-[$s4]m \\
+ [$s1]+ [$e] +(- [$s2] -[$d])m &> ([$f]-[$s3])-[$s4]m \\
+ [$s5] -[$s6]m &> [$s7]-[$s4]m \\
+ [$s5] -[$s6]m\mathbf{{} -[$s7]+[$s6]m} &> [$s7]-[$s4]m\mathbf{{} -[$s7]+[$s6]m} \\
+ [$s8] &> 0
+\end{aligned}
+`]
+
+Since [`[$s8] > 0 `] is true, the solution set for this inequality is *all real numbers*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality70.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality70.pg
new file mode 100644
index 0000000000..75a4d7a962
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality70.pg
@@ -0,0 +1,92 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The solution set is "all real numbers".
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','no solution')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(5,10,1);
+$c=random(1,4,1);
+
+$ans = OneOf("(-inf,inf), all real numbers");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` [$a](k-[$b]) \leq [$a](k-[$c]) ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+$s1=$a*$b;
+$s2=$a*$c;
+$s3=$s1-$s2;
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ [$a](k-[$b]) & \leq [$a](k-[$c]) \\
+ [$a]k-[$a] \cdot [$b] & \leq [$a]k-[$a] \cdot [$c] \\
+ [$a]k-[$s1] & \leq [$a]k-[$s2] \\
+ [$a]k-[$s1]\mathbf{{} -[$a]k+[$s1]} & \leq [$a]k-[$s2]\mathbf{{} -[$a]k+[$s1]} \\
+ 0 & \leq [$s3]
+\end{aligned}
+`]
+
+Since [`0 \leq [$s3]`] is true, the solution set for this inequality is *all real numbers*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality80.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality80.pg
new file mode 100644
index 0000000000..9b66817bf4
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolveSpecialInequality80.pg
@@ -0,0 +1,85 @@
+# WeBWorK problem written by Carl Yao, 2013
+# Portland Community College
+#
+# Solve linear inequality, and write solution in both set notation
+# and interval notation.
+# The solution set is "all real numbers".
+#
+# Last updated: Kling, 7/24/13; Hughes 7/15/2013, Yao, 6/26/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Inequalities')
+## KEYWORDS('inequality','linear','set notation','interval notation','all real numbers')
+## DBCCSS('7.EE.4','A-REI.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Interval");
+Context()->strings->add(
+ "no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "all real numbers"=>{},
+ "infinite number of solutions"=>{'all real numbers'},
+ "infinite"=>{alias=>'all real numbers'},
+ "infinite solutions"=>{alias=>'all real numbers'});
+
+$a=random(2,10,2);
+$b=random(1,9,1);
+
+$ans = OneOf("(-inf,inf), all real numbers");
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Solve this inequality. [@KeyboardInstructions(q!Answer using interval notation. If there is no solution, you may enter [|no solution|]*. If the solution set is all real numbers, you may enter [|(-inf,inf)|]* or [|all real numbers|]*.!)@]**
+
+ [`` [$a]x \leq [$a]x+[$b] ``]
+
+ [_____________]{$ans->cmp(typeMatch=>Interval("(0,1)"))}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+[`
+\begin{aligned}
+ [$a]x & \leq [$a]x +[$b] \\
+ [$a]x \mathbf{{} -[$a]x} & \leq [$a]x +[$b]\mathbf{{} -[$a]x} \\
+ 0 & \leq [$b]
+\end{aligned}
+`]
+
+Since [`0 \leq [$b]`] is true, the solution set for this inequality is *all real numbers*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph10.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph10.pg
new file mode 100644
index 0000000000..1ff8a1a60e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph10.pg
@@ -0,0 +1,204 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+Context('Numeric');
+
+do {
+ $numerator = random(1,5,1);
+ $denominator = random(1,5,1);
+ $h = non_zero_random(-6,6,1);
+ do {$k = non_zero_random(-6,6,1);} until ($h != $k);
+ $m = $numerator/$denominator*$h*$k/abs($h*$k);
+ $k2 = ($k > 0) ? $k - $numerator : $k + $numerator;
+ $h2 = ($k2-$k)/$m+$h;
+} until ($k2 != $h2);
+
+@k = num_sort($k,$k2);
+@h = num_sort($h,$h2);
+$f = Formula("$m*(x - $h)+$k")->reduce;
+
+@gr = ( );
+@xvalues = num_sort(-7,7,(7-$k)/$m+$h,(-7-$k)/$m+$h);
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i]->lb('reset');
+ for $j (-6..6){
+ if ($j==0 or $j%2!=0) {next;}
+ $gr[$i]->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i]->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+ $gr[$i]->moveTo($h,$k);
+ $gr[$i]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'blue',1);
+ $gr[$i]->moveTo($h,$k);
+ $gr[$i]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'blue',1);
+}
+
+$alt[0] = "This is the graph of a straight line which passes the points ($h,$k) and ($h2,$k2).";
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+$i0 = random(0,3,1);
+if (random(0,1,1)==0) {
+ $i1 = 0;
+ $i2 = 1;
+} else {
+ $i1 = 1;
+ $i2 = 0;
+}
+$symbol0 = $symbols[$i0];
+$symbol1 = $symbols[$i1];
+$symbol2 = $symbols[$i2];
+
+@leftBrackets = ('(','[');
+@rightBrackets = (')',']');
+
+@ans = ( );
+
+$gr[1]->moveTo($h,$k);
+if ($m > 0) {
+ if ($i0 == 0) {
+ $ans[0] = Interval("(-inf,$h)");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is open.";
+ } elsif ($i0 == 1) {
+ $ans[0] = Interval("(-inf,$h]");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is closed.";
+ } elsif ($i0 == 2) {
+ $ans[0] = Interval("($h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is open.";
+ } else {
+ $ans[0] = Interval("[$h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is closed.";
+ }
+} else {
+ if ($i0 == 0) {
+ $ans[0] = Interval("($h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is open.";
+ } elsif ($i0 == 1) {
+ $ans[0] = Interval("[$h,inf)");
+ $gr[1]->arrowTo($xvalues[2],$m*($xvalues[2]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from x=$h to infinity is highlighted in red. The point ($h,$k) is closed.";
+ } elsif ($i0 == 2) {
+ $ans[0] = Interval("(-inf,$h)");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( open_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is open.";
+ } else {
+ $ans[0] = Interval("(-inf,$h]");
+ $gr[1]->arrowTo($xvalues[1],$m*($xvalues[1]-$h)+$k,'red',1);
+ $gr[1]->stamps( closed_circle($h,$k,'red') );
+ $alt[1] = $alt[0]." The segment from negative infinity to x=$h is highlighted in red. The point ($h,$k) is closed.";
+ }
+}
+
+$y0 = $f->eval(x=>$h[0]);
+$y1 = $f->eval(x=>$h[1]);
+$ans[1] = Interval("$leftBrackets[$i2] $h[0],$h[1] $rightBrackets[$i1]");
+$gr[2]->moveTo($h[0],$y0);
+$gr[2]->lineTo($h[1],$y1,'red',1);
+$alt[2] = $alt[0]." The segment from ($h[0],$y0) to ($h[1],$y1) is highlighted in red.";
+if ($i1==1) {
+ $gr[2]->stamps( open_circle($h[0],$y0,'red') );
+ $alt[2] .= " The point ($h[0],$y1) is open,";
+} else {
+ $gr[2]->stamps( closed_circle($h[0],$y0,'red') );
+ $alt[2] .= " The point ($h[0],$y0) is closed,";
+}
+if ($i2==1) {
+ $gr[2]->stamps( open_circle($h[1],$y1,'red') );
+ $alt[2] .= " and the point ($h[1],$y1) is open.";
+} else {
+ $gr[2]->stamps( closed_circle($h[1],$y1,'red') );
+ $alt[2] .= " and the point ($h[1],$y1) is closed.";
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbols[$i0]] [$k]`]
+
+ [__________]{$ans[0]}
+
+1. [`[$k[0]] [$symbols[$i1]] f(x) [$symbols[$i2]] [$k[1]]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbols[$i0]] [$k]`], the function's [`y`]-value must be [$words[$i0]] [`[$k]`]. The corresponding segment is highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`[$k[0]] [$symbols[$i1]] f(x) [$symbols[$i2]] [$k[1]]`], the function's [`y`]-value must be between [`[$k[0]]`] and [`[$k[1]]`]. The corresponding segment is highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph20.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph20.pg
new file mode 100644
index 0000000000..e82945ef36
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph20.pg
@@ -0,0 +1,230 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+
+
+Context('Numeric');
+$h = random(-4,4,1);
+$k = random(-4,4,1);
+$x = ($h < 0) ? random(-6,$h-1,1) : random($h+1,6,1);
+$y = ($k < 0) ? random($k+1,6,1) : random(-6,$k-1,1);
+$c = ($y-$k)/($x - $h)**2;
+$f = Formula("$c*(x-$h)^2+$k");
+
+@gr = ();
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i]->lb('reset');
+ for $j (-6..6){
+ if (Real($j)==0) {next;}
+ $gr[$i]->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i]->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+ $yexit = ($c < 0) ? -7 : 7;
+ @xvalues = num_sort(-7,7,sqrt(($yexit-$k)/$c)+$h,-sqrt(($yexit-$k)/$c)+$h);
+ add_functions($gr[$i], "$f for x in <$xvalues[1],$xvalues[2]> using color:blue and weight:1");
+ $px = 14/240;
+
+ $gr[$i]->moveTo($xvalues[1]+$px,$c*($xvalues[1]+$px-$h)**2+$k);
+ $gr[$i]->arrowTo($xvalues[1],$c*($xvalues[1]-$h)**2+$k,'blue',1);
+ $gr[$i]->moveTo($xvalues[2]-$px,$c*($xvalues[2]-$px-$h)**2+$k);
+ $gr[$i]->arrowTo($xvalues[2],$c*($xvalues[2]-$h)**2+$k,'blue',1);
+}
+
+@x = num_sort($x,2*$h-$x);
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+@in = ();
+if (random(0,1,1)==0) {
+ $in[0] = random(0,1,1);
+ $in[1] = random(2,3,1);
+} else {
+ $in[0] = random(2,3,1);
+ $in[1] = random(0,1,1);
+}
+$symbol0 = $symbols[$in[0]];
+$symbol1 = $symbols[$in[1]];
+
+@alt = ( );
+$uod = $c > 0 ? 'upward' : 'downward';
+$alt[0] = "This is the graph of a parabola with its vertex at ($h,$k). The parabola faces $uod. It passes the points ($x[0],$y) and ($x[1],$y).";
+
+@s0 = (
+ " Those two points are open.",
+ " Those two points are closed."
+);
+
+@s1 = (
+ " On the parabola, the segment between x=$x[0] to x=$x[1] are highlighted.",
+ " On the parabola, the segment from negative infinity to x=$x[0], and the segment from x=$x[1] to infinity are highlighted.",
+);
+
+@s2 = (
+ Interval("($x[0],$x[1])"),
+ Interval("[$x[0],$x[1]]"),
+ Union("(-inf,$x[0])U($x[1],inf)"),
+ Union("(-inf,$x[0]]U[$x[1],inf)"),
+);
+
+sub graphOpenDots {
+ my $p = shift;
+ $gr[$p]->stamps( open_circle($x[0],$y,'red') );
+ $gr[$p]->stamps( open_circle($x[1],$y,'red') );
+}
+
+sub graphClosedDots {
+ my $p = shift;
+ $gr[$p]->stamps( closed_circle($x[0],$y,'red') );
+ $gr[$p]->stamps( closed_circle($x[1],$y,'red') );
+}
+
+sub highlightBetween {
+ my $p = shift;
+ add_functions($gr[$p], "$f for x in <$x[0],$x[1]> using color:red and weight:1");
+}
+
+sub highlightEnds {
+ my $p = shift;
+ add_functions($gr[$p], "$f for x in <$xvalues[1],$x[0]> using color:red and weight:1");
+ add_functions($gr[$p], "$f for x in <$x[1],$xvalues[2]> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p]->moveTo($xvalues[1]+$px,$c*($xvalues[1]+$px-$h)**2+$k);
+ $gr[$p]->arrowTo($xvalues[1],$c*($xvalues[1]-$h)**2+$k,'red',1);
+ $gr[$p]->moveTo($xvalues[2]-$px,$c*($xvalues[2]-$px-$h)**2+$k);
+ $gr[$p]->arrowTo($xvalues[2],$c*($xvalues[2]-$h)**2+$k,'red',1);
+}
+
+$alt[1] .= $alt[0];
+$alt[2] .= $alt[0];
+@ans = ();
+for my $i (0..1) {
+ if ($in[$i]==0) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ } else {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ }
+ &graphOpenDots($i+1);
+ } elsif ($in[$i]==1) {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ } else {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ }
+ &graphClosedDots($i+1);
+ } elsif ($in[$i]==2) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ } else {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ }
+ &graphOpenDots($i+1);
+ } else {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightEnds($i+1);
+ } else {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightBetween($i+1);
+ }
+ &graphClosedDots($i+1);
+ }
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbol0] [$y]`]
+
+ [__________]{$ans[0]}
+
+1. [`f(x) [$symbol1] [$y]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbol0] [$y]`], the function's [`y`]-value must be [$words[$in[0]]] [`[$y]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`f(x) [$symbol1] [$y]`], the function's [`y`]-value must be [$words[$in[1]]] [`[$y]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph30.pg b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph30.pg
new file mode 100644
index 0000000000..6dfa2465bc
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/LinearInequalities/backup/SolvingInequalityByGraph30.pg
@@ -0,0 +1,241 @@
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "PGgraphmacros.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+############################################################
+# PG Setup
+############################################################
+Context('Numeric');
+
+$s = Real(random(-3,3,1));
+$r = $s - random(1,3,1);
+$t = $s + random(2,3,1);
+
+$f = Formula("(x-$r)(x-$s)(x-$t)");
+@hts = map{abs($f->eval(x=>$_))}($r..$t);
+$amplitude = random(1,3,1);
+$c = $amplitude/max(@hts)*random(-1,1,2);
+$k = random(1,6-$amplitude,1)*random(-1,1,2);
+$f = $c*$f+$k;
+
+@gr = ();
+for my $i (0..2) {
+ $gr[$i] = init_graph(-7,-7,7,7,
+ axes=>[0,0],
+ grid=>[14,14],
+ size=>[240,240]
+ );
+ $gr[$i] ->lb('reset');
+ for $j (-6..6){
+ if (Real($j)==0) {next;}
+ $gr[$i] ->lb(new Label($j,0,$j,'black','center','top','large'));
+ $gr[$i] ->lb(new Label(0,$j,$j,'black','right','middle','large'));
+ };
+
+ $start = $r;
+ while (abs($f->eval(x=>$start-0.1))<7 and $start > -7) {$start = $start - 0.1};
+ $stop = $t;
+ while (abs($f->eval(x=>$stop+0.1))<7 and $stop < 7) {$stop = $stop + 0.1};
+
+ add_functions($gr[$i] , "$f for x in <$start,$stop> using color:blue and weight:1");
+ $px = 14/240;
+ $gr[$i] ->moveTo($start+$px,$f->eval(x=>$start+$px));
+ $gr[$i] ->arrowTo($start,$f->eval(x=>$start),'blue',1);
+ $gr[$i] ->moveTo($stop-$px,$f->eval(x=>$stop-$px));
+ $gr[$i] ->arrowTo($stop,$f->eval(x=>$stop),'blue',1);
+}
+
+@symbols = ('\lt','\le','\gt','\ge');
+@words = ('less than','less than or equal to','greater than','greater than or equal to');
+@in = ();
+if (random(0,1,1)==0) {
+ $in[0] = random(0,1,1);
+ $in[1] = random(2,3,1);
+} else {
+ $in[0] = random(2,3,1);
+ $in[1] = random(0,1,1);
+}
+$symbol0 = $symbols[$in[0]];
+$symbol1 = $symbols[$in[1]];
+
+@alt = ( );
+$startL = $c > 0 ? 'negative infinity' : 'positive infinity';
+$endR = $c > 0 ? 'positive infinity' : 'negative infinity';
+$uod0 = $c > 0 ? 'up' : 'down';
+$uod1 = $c > 0 ? 'down' : 'up';
+$alt[0] = "This is the graph of a cubic function which starts at $startL as x-value approaches negative infinity, going $uod0 through the point ($r,$k), curving $uod1 to pass ($s,$k), curving $uod0 to pass ($t,$k), and finally approaching $endR as x-value approaches positive infinity.";
+
+@s0 = (
+ " Those three points are open.",
+ " Those three points are closed."
+);
+
+@s1 = (
+ " On the function, the segment between infinity and x=$r, and the segment from to x=$s to x=$t are highlighted.",
+ " On the function, the segment from x=$r and x=$s, and the segment from x=$t to infinity are highlighted.",
+);
+
+@s2 = (
+ Union("(-inf,$r)U($s,$t)"),
+ Union("(-inf,$r]U[$s,$t]"),
+ Union("($r,$s)U($t,inf)"),
+ Union("[$r,$s]U[$t,inf)"),
+);
+
+sub graphOpenDots {
+ my $p = shift;
+ $gr[$p]->stamps( open_circle($r,$k,'red') );
+ $gr[$p]->stamps( open_circle($s,$k,'red') );
+ $gr[$p]->stamps( open_circle($t,$k,'red') );
+}
+
+sub graphClosedDots {
+ my $p = shift;
+ $gr[$p]->stamps( closed_circle($r,$k,'red') );
+ $gr[$p]->stamps( closed_circle($s,$k,'red') );
+ $gr[$p]->stamps( closed_circle($t,$k,'red') );
+}
+
+sub highlightLeft {
+ my $p = shift;
+ add_functions($gr[$p] , "$f for x in <$start,$r> using color:red and weight:1");
+ add_functions($gr[$p] , "$f for x in <$s,$t> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p] ->moveTo($start+$px,$f->eval(x=>$start+$px));
+ $gr[$p] ->arrowTo($start,$f->eval(x=>$start),'red',1);
+}
+
+sub highlightRight {
+ my $p = shift;
+ add_functions($gr[$p] , "$f for x in <$r,$s> using color:red and weight:1");
+ add_functions($gr[$p] , "$f for x in <$t,$stop> using color:red and weight:1");
+ $px = 14/240;
+ $gr[$p] ->moveTo($stop-$px,$f->eval(x=>$stop-$px));
+ $gr[$p] ->arrowTo($stop,$f->eval(x=>$stop),'red',1);
+}
+
+$alt[1] .= $alt[0];
+$alt[2] .= $alt[0];
+@ans = ();
+for my $i (0..1) {
+ if ($in[$i]==0) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ } else {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ }
+ &graphOpenDots($i+1);
+ } elsif ($in[$i]==1) {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ } else {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ }
+ &graphClosedDots($i+1);
+ } elsif ($in[$i]==2) {
+ $alt[$i+1] .= $s0[0];
+ if ($c > 0) {
+ $ans[$i] = $s2[2];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ } else {
+ $ans[$i] = $s2[0];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ }
+ &graphOpenDots($i+1);
+ } else {
+ $alt[$i+1] .= $s0[1];
+ if ($c > 0) {
+ $ans[$i] = $s2[3];
+ $alt[$i+1] .= $s1[1];
+ &highlightRight($i+1);
+ } else {
+ $ans[$i] = $s2[1];
+ $alt[$i+1] .= $s1[0];
+ &highlightLeft($i+1);
+ }
+ &graphClosedDots($i+1);
+ }
+}
+
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+A graph of [`f`] is given. Use the graph alone to solve the compound inequalities.
+
+>>[@ image(insertGraph($gr[0]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[0]' title= '$alt[0]'"
+) @]*<<
+
+[@KeyboardInstructions(q?Write your solution sets in interval notation.?)@]**
+
+1. [`f(x) [$symbol0] [$k]`]
+
+ [__________]{$ans[0]}
+
+1. [`f(x) [$symbol1] [$k]`]
+
+ [__________]{$ans[1]}
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+To meet the condition [`f(x) [$symbol0] [$k]`], the function's [`y`]-value must be [$words[$in[0]]] [`[$k]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[1]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[1]' title= '$alt[1]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[0]]`].
+
+###Question 2
+
+To meet the condition [`f(x) [$symbol1] [$k]`], the function's [`y`]-value must be [$words[$in[1]]] [`[$k]`]. The corresponding segment(s) is/are highlighted in the following graph.
+
+>>[@ image(insertGraph($gr[2]), tex_size=>400, height=>400, width=>400,
+extra_html_tags=>"alt= '$alt[2]' title= '$alt[2]'"
+) @]*<<
+
+The corresponding [`x`]-values on the segment(s) is [`[$ans[1]]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine10.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine10.pg
index 77e6e42a92..5988dfcda1 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine10.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine10.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages = 1;
+
Context("Numeric");
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine20.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine20.pg
index 5d39bad590..54b008fbd2 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine20.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine20.pg
@@ -36,7 +36,7 @@ loadMacros(
);
##############################################
-$refreshCachedImages = 1;
+
Context("Numeric");
$a=random(-9.5,-2.5,1);
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine30.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine30.pg
index 25f7ead3d8..2a52bd5f17 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine30.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine30.pg
@@ -37,7 +37,7 @@ loadMacros(
);
##############################################
-$refreshCachedImages = 1;
+
Context("Fraction");
$a=Fraction(random(-33,-13,4),4);
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine40.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine40.pg
index 50f757525c..3b29d06866 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine40.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine40.pg
@@ -37,7 +37,7 @@ loadMacros(
);
##############################################
-$refreshCachedImages=1;
+
Context("Fraction");
$a=Fraction(random(15,31,4),4);
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine50.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine50.pg
index 95289a3be9..1f655075e9 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine50.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine50.pg
@@ -36,7 +36,7 @@ loadMacros(
);
##############################################
-$refreshCachedImages=1;
+
Context("Numeric");
$a=random(3.4,7.4,1);
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine60.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine60.pg
index 03743ccbb5..b2fae6d806 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine60.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/NumberLine60.pg
@@ -36,7 +36,7 @@ loadMacros(
);
##############################################
-$refreshCachedImages=1;
+
Context("Numeric");
$n = list_random(2,3,5,6,7,8,10,11,12,13,14,15);
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg
index 05e3d2c4cd..a64c099daf 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg
@@ -53,7 +53,7 @@ TEXT(beginproblem());
BEGIN_PGML
-Write the following percentages as decimals.
+Write the following decimals as percentages.
a. [`` [$a] = ``] [_____]{$ans1}
diff --git a/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg b/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg
index 464f363114..09ec5ef1c1 100644
--- a/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg
+++ b/Contrib/PCC/BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg
@@ -53,7 +53,7 @@ TEXT(beginproblem());
BEGIN_PGML
-Write the following decimals as percentages.
+Write the following percentages as decimals.
a. [`` [$d]% = ``] [_______]{$ans1}
diff --git a/Contrib/PCC/BasicAlgebra/PolynomialBasics/PolyAddSubtract50.pg b/Contrib/PCC/BasicAlgebra/PolynomialBasics/PolyAddSubtract50.pg
index eef7ff80a6..6742081841 100644
--- a/Contrib/PCC/BasicAlgebra/PolynomialBasics/PolyAddSubtract50.pg
+++ b/Contrib/PCC/BasicAlgebra/PolynomialBasics/PolyAddSubtract50.pg
@@ -147,7 +147,7 @@ We combine like terms as follows
[`
\begin{aligned}
- &{\phantom{{}=}\left([$poly1]\right)+\left([$poly2]\right) \\
+ &\phantom{{}=}\left([$poly1]\right)+\left([$poly2]\right) \\
& = ([$aOut]+[$eOut])+[$bOut]+[$fOut]+[$cOut]+([$d]+[$gOut])\\
& = [$ans]
\end{aligned}
diff --git a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25testing.pg b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25testing.pg
index 4377f229c5..f962985214 100644
--- a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25testing.pg
+++ b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25testing.pg
@@ -99,7 +99,7 @@ END_PGML
# the Generic Rectangle Method
#
-$refreshCachedImages = 1;
+
# This subroutine fills empty terms in the parameter array like ['x',2,1,0]
# with 1 if the variable is missing, and
diff --git a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplicationApplication30.pg b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplicationApplication30.pg
index c7dcc86560..557cda3290 100644
--- a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplicationApplication30.pg
+++ b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/PolynomialMultiplicationApplication30.pg
@@ -76,7 +76,7 @@ The trapezoid's height is [`h`] feet. Since the trapezoid's top base is [`[$a]`]
A &= \frac{1}{2}(a+b)h \\
&= \frac{1}{2}(h+[$a]+h+[$b])h \\
&= \frac{1}{2}h(2h+[$a+$b]) \\
- &= \frac{1}{2}2h^2+\frac{1}{2}[$a+$b] \\
+ &= \frac{1}{2}2h^2+\frac{1}{2}[$a+$b]h \\
&= [$ans]
\end{aligned}
``]
diff --git a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/polyMultVar145.pg b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/polyMultVar145.pg
index 7e58e49e11..1215b436dd 100644
--- a/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/polyMultVar145.pg
+++ b/Contrib/PCC/BasicAlgebra/PolynomialMultiplication/polyMultVar145.pg
@@ -84,9 +84,7 @@ BEGIN_PGML
Multiply the polynomials.
- [``
- ([$poly1])([$poly2]) =
-``][____________________________]{$ans}
+ [``([$poly1])([$poly2]) = ``][____________________________]{$ans}
END_PGML
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem10.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem10.pg
index 7233103403..a83fd97c0c 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem10.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem10.pg
@@ -205,7 +205,7 @@ Find the value of [`x`].
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem20.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem20.pg
index ce7b4af864..6bbebf1b82 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem20.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem20.pg
@@ -204,7 +204,7 @@ Find the value of [`x`].
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem30.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem30.pg
index 60296a5a00..f99abf6636 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem30.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem30.pg
@@ -190,7 +190,7 @@ Find the value of [`x`], accurate to at least two decimal places.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
$ansShow = sprintf "%.2f", $ans;
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem40.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem40.pg
index 39f89edd2a..6adfe96f51 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem40.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem40.pg
@@ -304,7 +304,7 @@ if ($corner==0) {
$text = "This is a right triangle. Right angle C is at the $cPosition corner of the picture. Acute angle A is at the $aPosition, and acute angle B is at the $bPosition. The length of the side facing Angle A is $base; the length of the side facing Angle B is $height; the length of the side facing Angle C is x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem50.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem50.pg
index ed7f7fb5f6..5c4fc9bb34 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem50.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem50.pg
@@ -307,7 +307,7 @@ if ($corner==0) {
$text = "This is a right triangle. Right angle C is at the $cPosition corner of the picture. Acute angle A is at the $aPosition, and acute angle B is at the $bPosition. The length of the side facing Angle A is x (unknown); the length of the side facing Angle B is $height; the length of the side facing Angle C is $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem60.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem60.pg
index 02c07ff8ec..7c340d21f5 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem60.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem60.pg
@@ -196,7 +196,7 @@ END_PGML
$s1 = $hypotenuseLength**2/($ratioBase**2+$ratioHeight**2);
$x = sqrt($s1);
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
We will draw a diagram for the garden.
diff --git a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem70.pg b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem70.pg
index 650e0720da..beaa1a0fc3 100644
--- a/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem70.pg
+++ b/Contrib/PCC/BasicAlgebra/PythagoreanTheorem/pythagoreanTheorem70.pg
@@ -196,7 +196,7 @@ $s1 = $ratioHypotenuse**2-$ratioHeight**2;
$s2 = $baseLength**2/$s1;
$x = sqrt($s2);
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
We will draw a diagram for the garden.
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg
index df0ff2969c..5408f46efa 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp15.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp15.pg
index d8021b1746..a27964db13 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp15.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp15.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg
index a547f10a6e..3b40c034b1 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp25.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp25.pg
index ab64910bf1..a4e3135764 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp25.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/FlyingObjectApp25.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg
index 55c1482140..51821d1efb 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
#Context()->variables->add(y=>'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg
index fc92a44664..950c08454c 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
Context()->noreduce("(-x)-y","(-x)+y");
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg
index 56bb8704b8..9dbe3e436f 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg
index 23c0aef5d7..f998ec3808 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg
@@ -43,7 +43,7 @@ loadMacros(
$numPens = 2;
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg
index 92650da5fd..7c8e0540c8 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg
@@ -43,7 +43,7 @@ loadMacros(
$numPens = 4;
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication60.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication60.pg
index 027a3aefe7..0b83862550 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication60.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/MaxMinApplication60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(t => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg
index a8501ec638..8f059f52c3 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->variables->add(w => 'Real');
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication60.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication60.pg
index 7a814134bd..5e8bf1fcc8 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication60.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication60.pg
@@ -39,7 +39,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->noreduce("(-x)-y","(-x)+y");
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication70.pg b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication70.pg
index b8120185e6..2516ab1905 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication70.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication70.pg
@@ -37,7 +37,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$refreshCachedImages=1;
+
Context("Numeric");
Context()->flags->set(showExtraParens=>0, reduceConstants=>0);
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad100.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad100.pg
index 153494a68e..6cffda2a48 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad100.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad100.pg
@@ -32,6 +32,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -71,12 +72,13 @@ $b = $a;
$b = non_zero_random(-12,12,1) while($b==$a or $b==-$a);
$soln1 = $a*-1;
$soln2 = $b*-1;
-$ans = List(Formula("$var=$soln1"),Formula("$var=$soln2"));
$aPlusB = $a+$b;
$ab = $a*$b;
$question = Formula("$var**2+$aPlusB*$var+$ab")->reduce;
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
##############################################
TEXT(beginproblem());
@@ -85,9 +87,9 @@ Solve the equation.
[` [$question]= 0 `]
- [__________________________________]
+ [__________________________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -95,7 +97,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad105.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad105.pg
index aed1716ad9..504da41319 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad105.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad105.pg
@@ -33,8 +33,8 @@ loadMacros(
"PGML.pl",
"contextLimitedRadical.pl",
"PCCmacros.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
@@ -81,6 +81,8 @@ $ab = $a*$b;
$question = Formula("$var**2+$aPlusB*$var+$abPlusC")->reduce;
$question1 = Formula("$var**2+$aPlusB*$var+$ab")->reduce;
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
##############################################
TEXT(beginproblem());
@@ -89,9 +91,9 @@ Solve the equation.
[` [$question]= [$c] `]
- [__________________________________]
+ [__________________________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -99,7 +101,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad110.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad110.pg
index 7e9337af14..f13149d997 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad110.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad110.pg
@@ -92,7 +92,7 @@ $triangle->lineTo(-0.45,-0.5+0.1,"darkblue",1);
$triangle->lineTo(-0.5,-0.5+0.1,"darkblue",1);
##############################################
-$refreshCachedImages=1;
+
TEXT(beginproblem());
BEGIN_TEXT
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad115.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad115.pg
index 7e678e4015..428b736504 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad115.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad115.pg
@@ -33,6 +33,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -77,6 +78,10 @@ $c = non_zero_random(-10,10,1);
$d = -$c;
$ans = List(Formula("$var=$d+$a sqrt($b)"),Formula("$var=$d-$a sqrt($b)"));
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{$d+$a sqrt($b),$d-$a sqrt($b)}");
+
##############################################
TEXT(beginproblem());
@@ -85,9 +90,10 @@ Solve the equation.
[` ([$var]+[$c])^2 = [$a**2 * $b] `]
- [_______________________]
+ [_______________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -96,7 +102,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad160.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad160.pg
index 8a053de240..c488994698 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad160.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad160.pg
@@ -52,6 +52,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -130,6 +131,8 @@ $questionFormula = Formula("$a*$var^2+$b*$var+$c")->reduce;
$b1 = $b*-1;
$a1 = 2*$a;
+Context("FiniteSolutionSets");
+
if($B==2*round($B/2))
{
# B is even
@@ -138,17 +141,18 @@ if($B==2*round($B/2))
# this check shouldn't really be necessary, but reduce seems to go too far
if($d1==1)
{
- $ans = List(Formula("$var=$b1-sqrt($C)"),Formula("$var=$b1+sqrt($C)"));
+ $ans = Formula("{$b1-sqrt($C),$b1+sqrt($C)}");
}
else
{
- $ans = List(Formula("$var=$b1-$d1*sqrt($C)"),Formula("$var=$b1+$d1*sqrt($C)"));
+ $ans = Formula("{$b1-$d1*sqrt($C),$b1+$d1*sqrt($C)}");
}
}
else
{
# B is odd
$ans = List(Formula("$var=($b1-$D*sqrt($C))/$a1"),Formula("$var=($b1+$D*sqrt($C))/$a1"));
+ $ans = Formula("{($b1-$D*sqrt($C))/$a1,($b1+$D*sqrt($C))/$a1}");
}
##############################################
TEXT(beginproblem());
@@ -157,9 +161,11 @@ Solve the equation.
[` [$questionFormula]= 0 `]
- [_____________________________]
+ [_____________________________]{$ans}
+
+[@KeyboardInstructions("Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
+
-[@KeyboardInstructions("Enter multiple answers separated by commas, like [|x=1, x=-1|]*. Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -168,7 +174,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad165.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad165.pg
index cab2e1feb3..e5338cce61 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad165.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad165.pg
@@ -26,6 +26,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -78,6 +79,9 @@ $frac1 = Fraction(-$b,$a);
$frac2 = Fraction(-$d,$c);
$ans = Compute("$var = $frac1, $var = $frac2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$frac1,$frac2}");
+
##############################################
TEXT(beginproblem());
@@ -86,50 +90,16 @@ Solve the equation.
[` [$questionFormula]=0`]
- [__________________________]
+ [__________________________]{$ans}
+
+[@KeyboardInstructions("Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
+
-[@KeyboardInstructions("Enter multiple answers separated by commas, like [|x=1, x=-1|]*. Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$frac1","$var=$frac2"] => "Are you sure you have all the solutions?",
- [$frac1,$frac2] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$frac1,$frac2","$frac2,$frac1"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad170.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad170.pg
index 714b6db745..d80b0d8501 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad170.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad170.pg
@@ -37,6 +37,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -90,6 +91,9 @@ $questionFormula = Formula("$a*$var^2+$b*$var+$c")->reduce;
$b1 = $b*-1;
$a1 = 2*$a;
$ans = List(Formula("$var=($b1-sqrt($discriminant))/$a1"),Formula("$var=($b1+sqrt($discriminant))/$a1"));
+
+Context("FiniteSolutionSets");
+$ans = Formula("{($b1-sqrt($discriminant))/$a1,($b1+sqrt($discriminant))/$a1}");
##############################################
TEXT(beginproblem());
@@ -98,9 +102,9 @@ Solve the equation.
[` [$questionFormula]= 0 `]
- [_____________________________]
+ [_____________________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, like [|x=1, x=-1|]*. Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -109,7 +113,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad175.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad175.pg
index 00348ed207..abc4027a4e 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad175.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad175.pg
@@ -52,6 +52,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -124,6 +125,9 @@ $b1 = $B*-1;
$ans = List(Formula("$var=($b1-$D*sqrt($C))/$A"),Formula("$var=($b1+$D*sqrt($C))/$A"));
+Context("FiniteSolutionSets");
+$ans = Formula("{($b1-$D*sqrt($C))/$A,($b1+$D*sqrt($C))/$A}");
+
##############################################
TEXT(beginproblem());
BEGIN_PGML
@@ -131,9 +135,10 @@ Solve the equation.
[` [$questionFormula]= 0 `]
- [_____________________________]
+ [_____________________________]{$ans}
+
+[@KeyboardInstructions("Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, like [|x=1, x=-1|]*. Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -142,7 +147,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad176.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad176.pg
index 27e0242533..04f22b9268 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad176.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad176.pg
@@ -108,7 +108,7 @@ Solve the equation.
[_______________________]{$evaluator}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad185.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad185.pg
index 22398d01e8..7a794a7cf3 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad185.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad185.pg
@@ -41,6 +41,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -97,6 +98,9 @@ $questionFormula1 = Formula("$a*$var^2")->reduce;
$questionFormula2 = Formula("$b1*$var+$c1")->reduce;
$a1 = 2*$a;
$ans = List(Formula("$var=($b1-sqrt($discriminant))/$a1"),Formula("$var=($b1+sqrt($discriminant))/$a1"));
+
+Context("FiniteSolutionSets");
+$ans = Formula("{($b1-sqrt($discriminant))/$a1,($b1+sqrt($discriminant))/$a1}");
##############################################
TEXT(beginproblem());
@@ -105,9 +109,10 @@ Solve the equation.
[` [$questionFormula1]= [$questionFormula2] `]
- [_____________________________]
+ [_____________________________]{$ans}
+
+[@KeyboardInstructions("Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, like [|x=1, x=-1|]*. Enter solutions like [`\\frac{1+\\sqrt{3}}{2}`] using [|(1+sqrt(3))/2|]* and note the grouping parentheses. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -116,7 +121,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad210.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad210.pg
index dd7e577c72..822d18553d 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad210.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad210.pg
@@ -32,6 +32,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -71,6 +72,9 @@ $soln1 = 0;
$soln2 = $a*-1;
$ans = List(Formula("$var=$soln1"),Formula("$var=$soln2"));
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
+
##############################################
TEXT(beginproblem());
@@ -79,9 +83,10 @@ Solve the equation.
[` [$var]^2+[$a][$var]= 0 `]
- [__________________________________]
+ [__________________________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -89,7 +94,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad230.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad230.pg
index c2117f9d04..21972ff8ba 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad230.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad230.pg
@@ -35,8 +35,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl",
+ "PCCmacros.pl",
);
##############################################
@@ -76,7 +77,8 @@ Context()->strings->add("no real solutions"=>{},
$soln1 = Fraction(-$b,1);
$soln2 = Fraction(-$d,$c);
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Compute("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -84,52 +86,10 @@ Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$a","$var=-$a"] => "Are you sure you have all the solutions?",
- [$a,-$a] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$a,-$a","-$a,$a"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
BEGIN_PGML_SOLUTION
There are a few ways to solve quadratic equations- the easiest way to solve this particular
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad235.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad235.pg
index 407f25e775..86be99a2ce 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad235.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad235.pg
@@ -36,9 +36,9 @@ loadMacros(
"parserAssignment.pl",
"answerHints.pl",
"PGML.pl",
- "contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
);
##############################################
@@ -79,7 +79,8 @@ Context()->strings->add("no real solutions"=>{},
$soln1 = Fraction(-$b,1);
$soln2 = Fraction(-$d,$c);
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -87,52 +88,10 @@ Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$a","$var=-$a"] => "Are you sure you have all the solutions?",
- [$a,-$a] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$a,-$a","-$a,$a"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
BEGIN_PGML_SOLUTION
There are a few ways to solve quadratic equations- the easiest way to solve this particular
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad240.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad240.pg
index dbf75d02da..f8af62cbfc 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad240.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad240.pg
@@ -39,38 +39,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0,
- );
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
$b = random(1,10,1);
@@ -81,7 +55,8 @@ $d = random(1,10,1)while($d==$b);
$soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -89,13 +64,10 @@ Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad245.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad245.pg
index 9bd9a507b3..2ebf39c8cf 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad245.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad245.pg
@@ -39,39 +39,13 @@ loadMacros(
"answerHints.pl",
"PCCmacros.pl",
"PGML.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
-
$var = "x";
$a = 1;
$b = non_zero_random(-10,10,1);
@@ -82,21 +56,18 @@ $d = random(1,10,1)*abs($b)/$b*-1 while(abs($d)==abs($b));
$soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
Solve the equation.
[` [$question] = 0 `]
-
- [____________________]
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-END_PGML
+ [_]{$ans}{20}
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
+END_PGML
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad250.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad250.pg
index 34c0b565dc..108871c55e 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad250.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad250.pg
@@ -39,39 +39,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
-
$var = "x";
$a = 1;
$b = random(-10,-1,1);
@@ -82,7 +55,8 @@ $d = random(-10,-1,1)while($d==$b);
$soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -90,13 +64,10 @@ Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad255.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad255.pg
index 5772be43d5..f898e483c5 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad255.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad255.pg
@@ -43,39 +43,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
-
$var = "x";
$a = 1;
$b = random(1,10,1);
@@ -87,7 +60,8 @@ $soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var")->reduce->reduce;
$rhs = Formula("-$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -95,13 +69,11 @@ Solve the equation.
[` [$question] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
+Context("Numeric");
$step0 = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad265.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad265.pg
index 2bd4f79fb9..8574a060d8 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad265.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad265.pg
@@ -43,38 +43,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
$b = random(-10,-1,1);
@@ -86,7 +60,8 @@ $soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var")->reduce->reduce;
$rhs = Formula("-$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -94,14 +69,11 @@ Solve the equation.
[` [$question] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
-
+Context("Numeric");
$step0 = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad270.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad270.pg
index 79dd8a2030..d3abea6a39 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad270.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad270.pg
@@ -43,38 +43,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
$b = 0;
@@ -87,7 +61,8 @@ $soln2 = -$d;
$complete = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
$lhs = Formula("$a*$c*$var^2")->reduce->reduce;
$rhs = Formula("-($a*$d+$b*$c)*$var")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -95,13 +70,10 @@ Solve the equation.
[` [$lhs] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad275.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad275.pg
index bc2deb9cda..fd1190f869 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad275.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad275.pg
@@ -43,38 +43,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = random(2,10,1);
@@ -89,7 +63,8 @@ $complete = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
$lhs = Formula("$a*$c*$var^2")->reduce->reduce;
$rhs = Formula("-($a*$d+$b*$c)*$var")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -97,13 +72,10 @@ Solve the equation.
[` [$lhs] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
BEGIN_PGML_SOLUTION
There are a few ways to solve quadratic equations- the easiest way to solve this particular
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad280.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad280.pg
index 99ee3d2c90..3b60bd52a2 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad280.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad280.pg
@@ -43,6 +43,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -93,58 +94,22 @@ $soln1 = Fraction(-$b,1);
$soln2 = Fraction(-$d,$c);
$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
+
TEXT(beginproblem());
BEGIN_PGML
Solve the equation.
[` [$lhs] = [$rhs] `]
- [____________________]
+ [____________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$a","$var=-$a"] => "Are you sure you have all the solutions?",
- [$a,-$a] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$a,-$a","-$a,$a"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
BEGIN_PGML_SOLUTION
There are a few ways to solve quadratic equations- the easiest way to solve this particular
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad285.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad285.pg
index a7f2f5faa5..15e48cf7c0 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad285.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad285.pg
@@ -39,8 +39,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
@@ -94,7 +95,8 @@ Context()->strings->add("no real solutions"=>{},
);
$b1 = $b*-1;
-$ans = Compute("$var = $b1/$a");
+Context("FiniteSolutionSets");
+$ans = ($a == 1) ? Formula("{$b1}") : Formula("{$b1/$a}");
##############################################
@@ -104,54 +106,10 @@ Solve the equation.
[` [$questionFormula]=0`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
-
##############################################
$A = $a*$c;
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad290.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad290.pg
index 4b07b94f2c..3e98d0d673 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad290.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad290.pg
@@ -39,8 +39,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
@@ -97,7 +98,8 @@ Context()->strings->add("no real solutions"=>{},
);
$b1 = $b*-1;
-$ans = Compute("$var = $b1/$a");
+Context("FiniteSolutionSets");
+$ans = ($a == 1) ? Formula("{$b1}") : Formula("{$b1/$a}");
##############################################
@@ -107,54 +109,10 @@ Solve the equation.
[` [$questionFormula]=0`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
-
##############################################
$A = $a*$c;
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad295.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad295.pg
index 11f9d38b27..7cc86a985a 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad295.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad295.pg
@@ -38,9 +38,10 @@ loadMacros(
"parserAssignment.pl",
"answerHints.pl",
"PGML.pl",
+ "contextFiniteSolutionSets.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
);
##############################################
@@ -99,7 +100,8 @@ Context()->strings->add("no real solutions"=>{},
);
$b1 = $b*-1;
-$ans = Compute("$var = $b1/$a");
+Context("FiniteSolutionSets");
+$ans = ($a == 1) ? Formula("{$b1}") : Formula("{$b1/$a}");
##############################################
@@ -109,53 +111,11 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad30.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad30.pg
index e2e84f9fba..9b60ab8a8d 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad30.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad30.pg
@@ -33,6 +33,7 @@ loadMacros(
"PGML.pl",
"contextLimitedRadical.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
,
"PGcourse.pl",
);
@@ -65,6 +66,9 @@ $var = "x";
$a = random(2,12,1);
$ans = List(Formula("$var=$a"),Formula("$var=-$a"));
+Context("FiniteSolutionSets");
+$ans = Formula("{$a,-$a}");
+
##############################################
TEXT(beginproblem());
@@ -73,9 +77,9 @@ Solve the equation.
[` [$var]^2 = [$a**2] `]
- [__________________________________]
+ [__________________________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -83,7 +87,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad300.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad300.pg
index 8b777df279..f41e09e03e 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad300.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad300.pg
@@ -39,6 +39,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -102,6 +103,9 @@ Context()->strings->add("no real solutions"=>{},
$b1 = $b*-1;
$ans = Compute("$var = $b1/$a");
+Context("FiniteSolutionSets");
+$ans = Formula("{$b1/$a}");
+
##############################################
TEXT(beginproblem());
@@ -110,53 +114,13 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [__________________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad305.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad305.pg
index b0adc442ea..e16f485005 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad305.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad305.pg
@@ -39,8 +39,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
);
##############################################
@@ -100,7 +101,8 @@ Context()->strings->add("no real solutions"=>{},
$soln1 = Fraction(-$b,$a);
$soln2 = Fraction(-$d,$c);
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
##############################################
@@ -110,53 +112,11 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$soln1","$var=$soln2"] => "Are you sure you have all the solutions?",
- [$soln1,$soln2] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$soln1,$soln2","$soln2,$soln1"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad310.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad310.pg
index 7160c5b057..16daa41021 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad310.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad310.pg
@@ -35,38 +35,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0,
- );
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
@@ -78,7 +52,8 @@ $soln1 = -$b;
$soln2 = -$d;
$questionFormula = Formula("$a*$c*$var^2+($b*$c+$a*$d)*$var+($b*$d)")->reduce->reduce;
$questionFormula1 = Formula("($a*$var+$b)($c*$var+$d)")->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -86,13 +61,10 @@ Solve the equation.
[` [$questionFormula] = 0 `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad315.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad315.pg
index 531ed2fae8..78217d5e86 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad315.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad315.pg
@@ -39,6 +39,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -97,6 +98,9 @@ $soln1 = Fraction(-$b,$a);
$soln2 = Fraction(-$d,$c);
$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
+
##############################################
TEXT(beginproblem());
@@ -105,53 +109,14 @@ Solve the equation.
[` [$questionFormula]=0`]
- [__________________________]
+ [__________________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$soln1","$var=$soln2"] => "Are you sure you have all the solutions?",
- [$soln1,$soln2] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$soln1,$soln2","$soln2,$soln1"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad320.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad320.pg
index 77782d88cb..dd3b81e58b 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad320.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad320.pg
@@ -39,8 +39,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
@@ -97,7 +98,8 @@ Context()->strings->add("no real solutions"=>{},
$soln1 = Fraction(-$b,$a);
$soln2 = Fraction(-$d,$c);
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
##############################################
@@ -107,53 +109,11 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$soln1","$var=$soln2"] => "Are you sure you have all the solutions?",
- [$soln1,$soln2] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$soln1,$soln2","$soln2,$soln1"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad325.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad325.pg
index 7706d30cee..57850f1a23 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad325.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad325.pg
@@ -43,38 +43,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(
- reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
-Context()->operators->redefine('or',using=>',',from=>'Numeric');
-Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
-Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
@@ -87,7 +61,8 @@ $soln1 = -$b;
$soln2 = -$d;
$question = Formula("$a*$c*$var($var+($a*$d+$b*$c))")->reduce->reduce;
$rhs = Formula("-$b*$d")->reduce->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -95,14 +70,11 @@ Solve the equation.
[` [$question] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
-
+Context("Numeric");
$step0 = Formula("$a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d")->reduce->reduce;
$step = Formula("($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad330.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad330.pg
index 25347c24b2..6997186f6e 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad330.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad330.pg
@@ -39,8 +39,9 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
- "PCCmacros.pl",
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
+ "PCCmacros.pl",
);
##############################################
@@ -100,7 +101,8 @@ Context()->strings->add("no real solutions"=>{},
$soln1 = Fraction(-$b,$a);
$soln2 = Fraction(-$d,$c);
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
##############################################
@@ -110,53 +112,11 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- #return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- if(Value::classMatch($sfrac,'Fraction'))
- {
- return 0 unless $sfrac->isReduced;
- }
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$soln1","$var=$soln2"] => "Are you sure you have all the solutions?",
- [$soln1,$soln2] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$soln1,$soln2","$soln2,$soln1"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad335.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad335.pg
index 06c6ccbffc..fb55894457 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad335.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad335.pg
@@ -41,38 +41,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0,
- );
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
$a = 1;
@@ -103,7 +77,8 @@ $rhs = Formula("$E")->reduce;
$step1 = Formula("$A*$C*$var**2+($B*$C+$A*$D)*$var+$B*$D")->reduce->reduce;
$step2 = Formula("$a*$c*$var**2+($b*$c+$a*$d)*$var+$b*$d")->reduce->reduce;
$question = Formula("($a*$var+$b)*($c*$var+$d)")->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -111,14 +86,10 @@ Solve the equation.
[` [$lhs] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
-
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad340.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad340.pg
index 3b4b8232d8..a8f433ef03 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad340.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad340.pg
@@ -41,37 +41,12 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
- "contextLimitedRadical.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0,
- );
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
$var = "x";
@@ -105,7 +80,8 @@ $rhs = Formula("$E+($A*$C-1)*$var^2")->reduce;
$step1 = Formula("$A*$C*$var^2+($B*$C+$A*$D)*$var+$B*$D")->reduce->reduce;
$step2 = Formula("$a*$c*$var^2+($b*$c+$a*$d)*$var+$b*$d")->reduce->reduce;
$question = Formula("($a*$var+$b)*($c*$var+$d)")->reduce;
-$ans = Compute("$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1, $soln2}");
TEXT(beginproblem());
BEGIN_PGML
@@ -113,14 +89,10 @@ Solve the equation.
[` [$lhs] = [$rhs] `]
- [____________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
-
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad345.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad345.pg
index e033ce0857..5929e0cec2 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad345.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad345.pg
@@ -34,6 +34,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -98,6 +99,13 @@ Context()->strings->add("no real solutions"=>{},
$b1 = $b*-1;
$ans = Compute("$var = $b1/$a");
+
+Context("Fraction");
+$ans = Fraction($b1,$a);
+
+Context("FiniteSolutionSets");
+$ans = Formula("{$ans}");
+
##############################################
TEXT(beginproblem());
@@ -106,53 +114,13 @@ Solve the equation.
[` [$lhs]=[$rhs]`]
- [__________________________]
+ [__________________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad35.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad35.pg
index a3d4ce29bd..3720a1cc40 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad35.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad35.pg
@@ -31,6 +31,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -62,6 +63,8 @@ $var = "x";
$a = Fraction(1,random(2,12,1));
$ans = Compute("$var = -$a, $var = $a");
+Context("FiniteSolutionSets");
+$ans = Formula("{-$a,$a}");
##############################################
TEXT(beginproblem());
@@ -70,51 +73,14 @@ Solve the equation.
[` [$var]^2 = [$a**2] `]
- [______________________]
+ [______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$a","$var=-$a"] => "Are you sure you have all the solutions?",
- [$a,-$a] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$a,-$a","-$a,$a"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
-
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad350.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad350.pg
index ffc776a3a9..00b5d173bc 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad350.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad350.pg
@@ -39,6 +39,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -96,6 +97,12 @@ Context()->strings->add("no real solutions"=>{},
$b1 = $b*-1;
$ans = Compute("$var = $b1/$a");
+Context("Fraction");
+$ans = Fraction($b1,$a);
+
+Context("FiniteSolutionSets");
+$ans = Formula("{$ans}");
+
##############################################
TEXT(beginproblem());
@@ -104,53 +111,14 @@ Solve the equation.
[` [$questionFormula]=0`]
- [__________________________]
+ [__________________________]{$ans}
+
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-ANS($ans->cmp(
- checker => sub {
- my ($correct,$student,$ans) = @_;
- # count the number of student answers
- my $fullStudent = $ans->{student_formula};
- my @fullStudentValue = $fullStudent->value;
- my $n = scalar(@fullStudentValue); # number of student answers
- if($n>1)
- {
- $student->context->setError("Does this equation have more than one unique solution?","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # if the student has said no real solutions, ask them about it
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try factoring or using the quadratic formula","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- # check that the student has written x=
- if ($student->type ne "Assignment" && $ans->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your entry should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return $correct == $student;
- }
-)->withPostFilter(sub {
- my $ansHash = shift;
- if ($ansHash->{score}) {
- my ($cvar,$cfrac) = $ansHash->{correct_value}->value; # get
- my ($svar,$sfrac) = $ansHash->{student_value}->value; # get
- my $check = $cfrac->cmp->evaluate($sfrac->string); # do a
- $ansHash->{score} = $check->{score};
- $ansHash->{ans_message} = $check->{ans_message}; # and any
- }
- return $ansHash;
- },
- ),
-);
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad355.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad355.pg
index 3a86e46194..bff7d40261 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad355.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad355.pg
@@ -40,6 +40,7 @@ loadMacros(
"PGML.pl",
"PCCmacros.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
,
"PGcourse.pl",
);
@@ -86,19 +87,22 @@ $soln3 = -$e;
$question = Formula("($var+$e)($a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d)")->reduce->reduce;
$ans = Compute("$var = $soln1, $var = $soln2, $var=$soln3");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2,$soln3}");
+
TEXT(beginproblem());
BEGIN_PGML
Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [____________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("($var+$e)($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad360.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad360.pg
index 6ed0c6c992..63a3fac678 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad360.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad360.pg
@@ -40,6 +40,7 @@ loadMacros(
"PGML.pl",
"PCCmacros.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
,
"PGcourse.pl",
);
@@ -84,19 +85,22 @@ $soln3 = -$e;
$question = Formula("($var+$e)($a*$c*$var^2+($a*$d+$b*$c)*$var+$b*$d)")->reduce->reduce;
$ans = Compute("$var = $soln1, $var = $soln2, $var=$soln3");
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2,$soln3}");
+
TEXT(beginproblem());
BEGIN_PGML
Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [____________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("($var+$e)($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad365.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad365.pg
index e84bae5684..b76604357c 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad365.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad365.pg
@@ -40,6 +40,7 @@ loadMacros(
"PGML.pl",
"PCCmacros.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
,
"PGcourse.pl",
);
@@ -83,19 +84,22 @@ $soln2 = -$d;
$question = Formula("$a*$c*$var^3+($a*$d+$b*$c)*$var^2+$b*$d$var")->reduce->reduce;
$ans = Compute("$var=0,$var = $soln1, $var = $soln2");
+Context("FiniteSolutionSets");
+$ans = Formula("{0,$soln1,$soln2}");
+
TEXT(beginproblem());
BEGIN_PGML
Solve the equation.
[` [$question] = 0 `]
- [____________________]
+ [____________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
$step = Formula("$var($a$var+$b)($c$var+$d)")->reduce;
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad40.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad40.pg
index b02ba0d5d6..8882c0db68 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad40.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad40.pg
@@ -32,6 +32,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -71,6 +72,10 @@ $b=9;
$b = random(3,11,2) while($b==9);
$ans = List(Formula("$var=$a sqrt($b)"),Formula("$var=-$a sqrt($b)"));
+Context("FiniteSolutionSets");
+$ans = Formula("{$a sqrt($b),-$a sqrt($b)}");
+
+
##############################################
TEXT(beginproblem());
@@ -79,9 +84,10 @@ Solve the equation.
[` [$var]^2 = [$a**2 * $b] `]
- [_______________________]
+ [_______________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -90,7 +96,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad45.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad45.pg
index 1069dc569d..05e55fa4ed 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad45.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad45.pg
@@ -33,6 +33,7 @@ loadMacros(
"PGML.pl",
"contextLimitedRadical.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
,
"PGcourse.pl",
);
@@ -68,6 +69,9 @@ $index = random(0,$#primes,1);
$a = $primes[$index];
$ans = List(Formula("$var=sqrt($a)"),Formula("$var=-sqrt($a)"));
+Context("FiniteSolutionSets");
+$ans = Formula("{sqrt($a),-sqrt($a)}");
+
##############################################
TEXT(beginproblem());
@@ -76,9 +80,9 @@ Solve the equation.
[` [$var]^2 = [$a] `]
- [_______________________]
+ [_______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -87,7 +91,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad55.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad55.pg
index ba263cbb5c..02f7e82dde 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad55.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad55.pg
@@ -34,6 +34,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -80,6 +81,9 @@ else
$a = Fraction($a,$b);
$ans = Compute("$var = -$a, $var = $a");
+Context("FiniteSolutionSets");
+$ans = Formula("{-$a,$a}");
+
##############################################
TEXT(beginproblem());
@@ -88,51 +92,15 @@ Solve the equation.
[` [$var]^2 = [$a**2] `]
- [______________________]
+ [______________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$a","$var=-$a"] => "Are you sure you have all the solutions?",
- [$a,-$a] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$a,-$a","-$a,$a"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
-
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad60.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad60.pg
index 5d78ab693f..3aa17d7e2a 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad60.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad60.pg
@@ -34,6 +34,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
"PGcourse.pl",
);
@@ -77,6 +78,9 @@ else
$c = Fraction($a,$b);
$ans = Compute("$var = -$c, $var = $c");
+Context("FiniteSolutionSets");
+$ans = Formula("{-$c,$c}");
+
##############################################
TEXT(beginproblem());
@@ -85,51 +89,15 @@ Solve the equation.
[` [$b**2][$var]^2 = [$a**2] `]
- [______________________]
+ [______________________]{$ans}
+
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(
- entry_type => "a solution",
- checker => sub {
- my ($correct,$student,$ans,$nth,$value) = @_;
- if ($correct->type eq "Assignment") {
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- return 0 unless Value::classMatch($sfrac,'Fraction') && $sfrac->isReduced;
- }
- return $correct == $student;
- },
- extra => sub {
- my ($student,$ansHash,$nth,$value) = @_;
- if($student eq "no real solutions")
- {
- $student->context->setError("This equation does have some solutions- try using the square root method","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- if ($student->type ne "Assignment" && $ansHash->{student_formula}->type ne "Assignment") {
- $student->context->setError("Your $nth solution should be written $var = $US$US$US","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- my ($svar,$sfrac) = $student->value; # get the variable and fraction
- if (Value::classMatch($sfrac,'Fraction') && !$sfrac->isReduced) {
- $student->context->setError("Your $nth $value is not reduced","",undef,undef,$Value::CMP_WARNING)
- unless $ans->{isPreview};
- return;
- }
- return Value::Real->typeMatch($student);
- }
-)->withPostFilter(AnswerHints(
- ["$var=$c","$var=-$c"] => "This is correct, but are you sure you have all the solutions?",
- [$c,-$c] => ["Your solution is a correct one, but you should write $var = $US$US$US
Are you sure you have all the solutions?",replaceMessage=>1],
- ["$c,-$c","-$c,$c"] => ["Your solutions are correct, but you should write $var = $US$US$US",replaceMessage=>1],
-)));
-
##############################################
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad65.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad65.pg
index d5e530d8a8..26308f6e11 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad65.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad65.pg
@@ -27,46 +27,28 @@
DOCUMENT();
loadMacros(
- "PGstandard.pl",
- "MathObjects.pl",
- "parserAssignment.pl",
- "answerHints.pl",
- "PGML.pl",
- "contextLimitedRadical.pl",
- "PCCmacros.pl",
- ,
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserAssignment.pl",
+ "answerHints.pl",
+ "PGML.pl",
+ "contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
+ "PCCmacros.pl",
"PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
+Context("FiniteSolutionSets");
$var = "x";
#Context()->variables->are($var=>'Real');
$a = random(2,10,1);
$b = random(2,5,1);
$c = non_zero_random(-10,10,1);
-$ans = List(Formula("$var=$b"),Formula("$var=-$b"));
+
+$ans = Formula("{-$b,$b}");
##############################################
@@ -76,7 +58,7 @@ Solve the equation.
[` [$a][$var]^2 +[$c]= [$a*$b**2+$c] `]
- [__________________________________]
+ [__________________________________]{$ans}
[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
@@ -86,7 +68,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad70.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad70.pg
index d6c54e95ca..ac6d28dd92 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad70.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad70.pg
@@ -33,6 +33,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -72,6 +73,9 @@ $b = list_random(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67) while($b=
$c = $a*$b;
$ans = List(Formula("$var=sqrt($c)/$b"), Formula("$var=-sqrt($c)/$b"));
+Context("FiniteSolutionSets");
+$ans = Formula("{sqrt($c)/$b,-sqrt($c)/$b}");
+
##############################################
TEXT(beginproblem());
@@ -80,9 +84,9 @@ Solve the equation.
[` [$b][$var]^2 - [$a]= 0`]
- [_______________________]
+ [_______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*. Rationalizing denominators is part of completely simplifying.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -91,7 +95,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad71.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad71.pg
index 55594bc6de..4cec544c01 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad71.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad71.pg
@@ -28,6 +28,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
"contextLimitedRadical.pl",
"PGcourse.pl",
);
@@ -72,6 +73,9 @@ $a = $c+$aMinusC;
$ans = Compute("$var = -sqrt($d)/$b, $var = sqrt($d)/$b");
+Context("FiniteSolutionSets");
+$ans = Formula("{-sqrt($d)/$b,sqrt($d)/$b}");
+
##############################################
TEXT(beginproblem());
@@ -80,16 +84,15 @@ Solve the equation.
[` [$a]-[$b][$var]^2 = [$c] `]
- [______________________]
+ [______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*. Rationalizing denominators is part of completely simplifying.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad75.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad75.pg
index b6f21a635a..9cdb26bad4 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad75.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad75.pg
@@ -33,6 +33,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -74,6 +75,8 @@ $a = $primes[$index1];
$b = $primes[$index2];
# for the answer
+
+Context("FiniteSolutionSets");
$ans = Compute("no real solutions");
##############################################
@@ -84,26 +87,14 @@ Solve the equation.
[` [$b][$var]^2 + [$a]= 0`]
- [_______________________]
+ [_______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-ANS($ans->cmp(checker=>sub {
- my ($correct,$student,$ansHash) = @_;
- if(!Value::String->typeMatch($student))
- {
- Value->Error("$mymsg");
- return 0;
- }
- $check = ($student->value eq "no real solutions");
- Value->Error("$mymsg") unless($check);
- return $check;
- },
-));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad90.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad90.pg
index 392a89c28a..6460878f08 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad90.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad90.pg
@@ -34,6 +34,7 @@ loadMacros(
"answerHints.pl",
"PGML.pl",
"contextLimitedRadical.pl",
+ "contextFiniteSolutionSets.pl",
"PCCmacros.pl",
,
"PGcourse.pl",
@@ -79,6 +80,9 @@ $c = -$b;
# the answer
$ans = List(Formula("$var=$c+sqrt($a)"), Formula("$var=$c-sqrt($a)"));
+Context("FiniteSolutionSets");
+$ans = Formula("{$c+sqrt($a),$c-sqrt($a)}");
+
##############################################
TEXT(beginproblem());
@@ -87,9 +91,9 @@ Solve the equation.
[` ([$var]+[$b])^2 = [$a]`]
- [_______________________]
+ [_______________________]{$ans}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+[@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
@@ -98,7 +102,6 @@ END_PGML
$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad95.pg b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad95.pg
index b4fe0260b6..882df5450e 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad95.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad95.pg
@@ -31,39 +31,12 @@ loadMacros(
"parserAssignment.pl",
"answerHints.pl",
"PGML.pl",
- "contextLimitedRadical.pl",
- "PCCmacros.pl",
- ,
- "PGcourse.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
);
##############################################
-Context("LimitedRadical");
-Context()->flags->set(reduceConstants=>0,
- reduceConstantFunctions=>0,
- formatStudentAnswer=>parsed,
- showExtraParens=>0,
- );
-
-parser::Assignment->Allow;
-
-Context()->operators->redefine(',',using=>',',from=>'Numeric');
- Context()->operators->redefine('or',using=>',',from=>'Numeric');
- Context()->operators->set(
- ','=>{string=>' or ',TeX=>'\hbox{ or }'},
- 'or'=>{string=>' or ',TeX=>'\hbox{ or }'}
- );
- Context()->lists->set(List => {separator => " or "});
-
-# add solution strings to context- this means that if
-# students enter these (and they are not correct), then
-# WW will not give a Context warning
-Context()->strings->add("no real solutions"=>{},
- "no real solution"=>{alias=>'no real solutions'},
- "none"=>{alias=>'no real solutions'},
- );
-
$var = "x";
#Context()->variables->are($var=>'Real');
$a = non_zero_random(-12,12,1);
@@ -71,7 +44,8 @@ $b = $a;
$b = non_zero_random(-12,12,1) while($b==$a);
$soln1 = $a*-1;
$soln2 = $b*-1;
-$ans = List(Formula("$var=$soln1"),Formula("$var=$soln2"));
+Context("FiniteSolutionSets");
+$ans = Formula("{$soln1,$soln2}");
##############################################
@@ -81,17 +55,14 @@ Solve the equation.
[` ([$var]+[$a])([$var]+[$b]) = 0 `]
- [__________________________________]
+ [_]{$ans}{20}
-[@KeyboardInstructions("Enter multiple answers separated by commas, as in [|x=1, x=-1|]*. If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
END_PGML
##############################################
-$showPartialCorrectAnswers = 1;
-ANS($ans->cmp(list_checker => ~~&radicalListCheck));
##############################################
diff --git a/Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg b/Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg
index fd9e2fe61c..efd53339cb 100644
--- a/Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg
+++ b/Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg
@@ -121,7 +121,7 @@ $evaluator = $ans -> cmp(
return $OK;
});
-$refreshCachedImages= 1;
+
##############################################
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/RadicalEquations/SolvingRadicalEquation100.pg b/Contrib/PCC/BasicAlgebra/RadicalEquations/SolvingRadicalEquation100.pg
index 6d9281ebaa..70da719b02 100644
--- a/Contrib/PCC/BasicAlgebra/RadicalEquations/SolvingRadicalEquation100.pg
+++ b/Contrib/PCC/BasicAlgebra/RadicalEquations/SolvingRadicalEquation100.pg
@@ -40,7 +40,7 @@ do {
$r = non_zero_random(-10,10,1);
do {$p = non_zero_random(-10,10,1);} until (abs($r)!=abs($p));
$s = ($r**2-$p)/(2*$r);
- } until ( $s>0 );
+ } until ( $s>0 && ($r**2+$p)/(2*$r) < 0);
} until (sqrt($s)==int(sqrt($s)));
$solution = $s**2;
diff --git a/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent10.pg b/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent10.pg
index 82ae6b5e64..14463754b6 100644
--- a/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent10.pg
+++ b/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent10.pg
@@ -50,7 +50,7 @@ BEGIN_PGML
Use rational exponents to write the expression.
-[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.@]**
+[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.')@]**
[`` \sqrt[$text]{[$var]} = ``][____________]{$ans}
diff --git a/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/radicalFunctionGraph10.pg b/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/radicalFunctionGraph10.pg
index 95bac55f68..6b1abae441 100644
--- a/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/radicalFunctionGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/RadicalsAndRationalExponents/radicalFunctionGraph10.pg
@@ -43,7 +43,7 @@ TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xmin = -5;
$ymin = -5;
diff --git a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg
index a9a273752e..d929d39233 100644
--- a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg
@@ -86,6 +86,7 @@ $s3 = Formula("($a*$var1+$g+$c*$var1+$h)/(($var1+$b)($var1+$d))")->reduce;
###################################################
+$final = Formula("($e*$var1+$f)/( ($var1+$b)*($var1+$d))")->reduce;
BEGIN_PGML_SOLUTION
[``
@@ -94,7 +95,7 @@ BEGIN_PGML_SOLUTION
&= [$frac1] \cdot \frac{([$var1]+[$d])}{([$var1]+[$d])} [$s1] \\
&= [$s2] \\
&= [$s3] \\
- &= [$ans]
+ &= [$final]
\end{aligned}
``]
diff --git a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg
index 09546c34e1..7abee6d8d5 100644
--- a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg
@@ -40,7 +40,7 @@ do {
$b = non_zero_random(-6,6,1);
$c = random(1,6,1);
$d = non_zero_random(-6,6,1);
-} until ( (gcd($c,abs($d))==1) && (abs($a*$d*$c)<=40) );
+} until ( (gcd($c,abs($d))==1) && (abs($a*$d*$c)<=40) && ($c*$b != $d));
$commonDenominator = Formula("$var1*$var2");
diff --git a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg
index 2568d62265..8002bf4066 100644
--- a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg
@@ -89,7 +89,7 @@ BEGIN_PGML_SOLUTION
[``
\begin{aligned}
[$frac1] \cdot [$frac2] &= \frac{[$num1] \cdot [$num2]}{[$den1] \cdot [$den2]} \\
- &= \frac{[$a] \cdot [$c] \cdot [$var1]^{[$e1+$e4]} \cdot [$var2]^{[$e2+$e4]}}{[$b] \cdot [$d] \cdot [$var1][$s1] \cdot [$var2][$s2]} \\
+ &= \frac{[$a] \cdot [$c] \cdot [$var1]^{[$e1+$e4]} \cdot [$var2]^{[$e2+$e5]}}{[$b] \cdot [$d] \cdot [$var1][$s1] \cdot [$var2][$s2]} \\
&= [$ans]
\end{aligned}
``]
diff --git a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140nodomain.pg b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140nodomain.pg
index 408007876a..bb635dd649 100644
--- a/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140nodomain.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140nodomain.pg
@@ -36,7 +36,7 @@ Context()->variables->are($var=>'Real');
Context()->noreduce('(-x)-y', '(-x)+y');
$a = random(1,6,1)*random(-1,1,2);
-do {$b = random(1,6,1)*random(-1,1,2);} until ($a!=$b);
+do {$b = random(1,6,1)*random(-1,1,2);} until ($a!=$b and $a!=-$b);
$num = Formula("-$var**2-($a+$b)*$var-($a*$b)")->reduce;
$den = Formula("$var**2-($b*$b)")->reduce;
diff --git a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg
index ab61a75279..161a8248d2 100644
--- a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg
@@ -86,7 +86,10 @@ a. If there are [`[$y2r]`] customers waiting in line, approximately how many cus
We will use a graphing calculator's [|solve()|]* function to solve this equation. For a TI-89, press [|Home|]*, [|F2|]*, choose [|solve(|]*, press [|Enter|]*. Then, type in the equation:
- [|solve([`[$y2r]`]=[`x`]^2/([$a2]-[$a]x),x)\}*
+ [@ MODES(
+ HTML => "
solve($y2r = x^2/($a2 - ${a}x), x)
",
+ TeX => "\\verb!solve($y2r = x^2/($a2 - ${a}x), x)!")
+ @]*
For Casio ClassPad 300, tap [|Main|]*, [|Action|]* in the menu, [|Advanced|]*, [|solve|]*, and then type in the same equation above.
diff --git a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg
index f655d56384..e251a71480 100644
--- a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg
@@ -26,12 +26,14 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
- "PGasu.pl",
+ "PGasu.pl",
+ "PCCmacros.pl",
"contextInequalities.pl",
"PGcourse.pl",
);
@@ -41,11 +43,10 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$a = non_zero_random(-4,4,1);
$exclude1 = random(-6,6,1);
-@exclude1 = ($exclude1-0.01,$exclude1+0.01);
$func = Compute("($a)/(x-$exclude1)")->reduce;
$xLimit1 = -10;
@@ -55,51 +56,29 @@ $yLimit2 = 10;
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$xLimit1,$xLimit2],[min($yLimit1,$yLimit2),max($yLimit1,$yLimit2)]);
+@exclude1 = num_sort($a/$min[1] + $exclude1,$a/$max[1] + $exclude1);
+
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$max[0]-$min[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','right','middle','large'));
- }
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- $g = FEQ("$func for x in <$min[0], $exclude1[0]> using color:blue and weight:1");
- ($fref) = plot_functions( $gr[$i], $g);
-
- $g = FEQ("$func for x in <$exclude1[1], $max[0]> using color:blue and weight:1");
- ($fref) = plot_functions( $gr[$i], $g);
-
- $gr[$i]->moveTo($exclude1,$min[1]);
- $gr[$i]->lineTo($exclude1,$max[1], 'red', 1, 'dashed');
-
- $px = ($max[0]-$min[0])/240;
- $gr[$i]->moveTo($min[0]+$px,$func->eval(x=>$min[0]+$px));
- $gr[$i]->arrowTo($min[0],$func->eval(x=>$min[0]),'blue',1);
- $gr[$i]->moveTo($max[0]-$px,$func->eval(x=>$max[0]-$px));
- $gr[$i]->arrowTo($max[0],$func->eval(x=>$max[0]),'blue',1);
- ($xout, $xin) = num_sort($a/$min[1]+$exclude1,$a/$max[1]+$exclude1);
- $gr[$i]->moveTo($xin+$px,$func->eval(x=>$xin+$px));
- $gr[$i]->arrowTo($xin,$func->eval(x=>$xin),'blue',1);
- $gr[$i]->moveTo($xout-$px,$func->eval(x=>$xout-$px));
- $gr[$i]->arrowTo($xout,$func->eval(x=>$xout),'blue',1);
-
-
-}
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick =,
+ ]
+ \addplot[firstcurve,domain=$min[0]:$exclude1[0],samples=50] {$a/(x - $exclude1)};
+ \addplot[firstcurve,domain=$exclude1[1]:$max[0],samples=50] {$a/(x - $exclude1)};
+ \addplot[asymptote] coordinates {($exclude1,$min[1]) ($exclude1,$max[1])};
+\end{axis}
+END_TIKZ
$ALT = "graph of a function, with an asymptote at x=$exclude1";
@@ -117,7 +96,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
What is its domain?
diff --git a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg
index 522f70d3b1..7765d66513 100644
--- a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg
@@ -26,12 +26,14 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PCCgraphMacros.pl",
- "PGasu.pl",
+ "PGasu.pl",
+ "PCCmacros.pl",
"contextInequalities.pl",
"PGcourse.pl",
);
@@ -41,13 +43,11 @@ TEXT(beginproblem());
Context("Numeric");
Context()->noreduce('(-x)-y','(-x)+y');
-$refreshCachedImages=1;
+
$a = 6;
$exclude1 = random(-6,-1,1);
-@exclude1 = ($exclude1-0.01,$exclude1+0.01);
$exclude2 = random(1,6,1);;
-@exclude2 = ($exclude2-0.01,$exclude2+0.01);
$func = Compute("($a)/((x-$exclude1)*(x-$exclude2))")->reduce;
$xLimit1 = -10;
@@ -57,63 +57,41 @@ $yLimit2 = 10;
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$xLimit1,$xLimit2],[min($yLimit1,$yLimit2),max($yLimit1,$yLimit2)]);
+@exc = num_sort(
+ ($exclude1+$exclude2+sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$min[1])))/2,
+ ($exclude1+$exclude2-sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$min[1])))/2,
+ ($exclude1+$exclude2+sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$max[1])))/2,
+ ($exclude1+$exclude2-sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$max[1])))/2,
+);
+
+@exclude1 = (@exc)[0,1];
+@exclude2 = (@exc)[2,3];
+
+
@xticks = @$xticks_ref;
@yticks = @$yticks_ref;
-for my $i (0..0) {
- $gr[$i] = init_graph($min[0],$min[1],$max[0],$max[1],
- axes=>[0,0],
- grid=>[$max[0]-$min[0],$ticknum[1]],
- size=>[xPixels(),yPixels()]
- );
- $gr[$i]->lb('reset');
- for my $j (@xticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($j, -$marksep[1]/8, $j,'black','center','top','large'));
- }
-
- for my $j (@yticks) {
- if (abs($j)<10**(-10)) {next;}
- $gr[$i]->lb( new Label($marksep[0]/8, $j, $j,'black','right','middle','large'));
- }
- $gr[$i]->lb(new Label($max[0],0,'x','black','right','bottom','large'));
- $gr[$i]->lb(new Label(0,$max[1],'y','black','left','top','large'));
-
-
- $g = FEQ("$func for x in <$min[0], $exclude1[0]> using color:blue and weight:1");
- ($fref) = plot_functions( $gr[$i], $g);
- ($fref) = plot_functions( $gr[$i], $g);
-
- $g = FEQ("$func for x in <$exclude1[1], $exclude2[0]> using color:blue and weight:1");
- ($fref) = plot_functions( $gr[$i], $g);
-
- $g = FEQ("$func for x in <$exclude2[1], $max[0]> using color:blue and weight:1");
- ($fref) = plot_functions( $gr[$i], $g);
-
- $gr[$i]->moveTo($exclude1,$min[1]);
- $gr[$i]->lineTo($exclude1,$max[1], 'red', 1, 'dashed');
-
- $gr[$i]->moveTo($exclude2,$min[1]);
- $gr[$i]->lineTo($exclude2,$max[1], 'red', 1, 'dashed');
-
- $px = ($max[0]-$min[0])/240;
- $gr[$i]->moveTo($min[0]+$px,$func->eval(x=>$min[0]+$px));
- $gr[$i]->arrowTo($min[0],$func->eval(x=>$min[0]),'blue',1);
- $gr[$i]->moveTo($max[0]-$px,$func->eval(x=>$max[0]-$px));
- $gr[$i]->arrowTo($max[0],$func->eval(x=>$max[0]),'blue',1);
- ($xout1, $xin1, $xout2, $xin2) = num_sort(($exclude1+$exclude2)/2 - sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$min[1]))/2,
- ($exclude1+$exclude2)/2 + sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$min[1]))/2,
- ($exclude1+$exclude2)/2 - sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$max[1]))/2,
- ($exclude1+$exclude2)/2 + sqrt(($exclude1+$exclude2)**2 - 4*($exclude1*$exclude2 - $a/$max[1]))/2);
- $gr[$i]->moveTo($xin1+$px,$func->eval(x=>$xin1+$px));
- $gr[$i]->arrowTo($xin1,$func->eval(x=>$xin1),'blue',1);
- $gr[$i]->moveTo($xout1-$px,$func->eval(x=>$xout1-$px));
- $gr[$i]->arrowTo($xout1,$func->eval(x=>$xout1),'blue',1);
- $gr[$i]->moveTo($xin2+$px,$func->eval(x=>$xin2+$px));
- $gr[$i]->arrowTo($xin2,$func->eval(x=>$xin2),'blue',1);
- $gr[$i]->moveTo($xout2-$px,$func->eval(x=>$xout2-$px));
- $gr[$i]->arrowTo($xout2,$func->eval(x=>$xout2),'blue',1);
-}
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $min[0],
+ xmax = $max[0],
+ ymin = $min[1],
+ ymax = $max[1],
+ xtick =,
+ ytick =,
+ minor xtick = {$min[0],...,$max[0]},
+ minor ytick =,
+ ]
+ \addplot[firstcurve,domain=$min[0]:$exclude1[0],samples=50] {$a/(x - $exclude1)/(x - $exclude2)};
+ \addplot[firstcurve,domain=$exclude1[1]:$exclude2[0],samples=50] {$a/(x - $exclude1)/(x - $exclude2)};
+ \addplot[firstcurve,domain=$exclude2[1]:$max[0],samples=50] {$a/(x - $exclude1)/(x - $exclude2)};
+ \addplot[asymptote] coordinates {($exclude1,$min[1]) ($exclude1,$max[1])};
+ \addplot[asymptote] coordinates {($exclude2,$min[1]) ($exclude2,$max[1])};
+\end{axis}
+END_TIKZ
+
$ALT = "graph of a function, with two asymptotes at x=$exclude1 and x=$exclude2";
@@ -131,7 +109,7 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
+>>[@image($gr, width=>300, height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
What is its domain?
diff --git a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionGraph10.pg b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionGraph10.pg
index 664defd2b8..d20e6a828c 100644
--- a/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionGraph10.pg
@@ -42,7 +42,7 @@ TEXT(beginproblem());
Context("Numeric");
-$refreshCachedImages=1;
+
$xmin = -5;
$ymin = -5;
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg
index 7420ba7445..655a6faedc 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg
@@ -48,7 +48,8 @@ $b=random(300,500,10);
$ans = $a+$b;
-$UnitAns = NumberWithUnits($a+$b,"ft");
+$UnitAns = NumberWithUnits("$ans ft");
+$wrong = NumberWithUnits("$a-$b ft");
##############################################
@@ -58,19 +59,18 @@ BEGIN_PGML
A mountain is [`[$a]`] feet _above_ sea level. A trench is [`[$b]`] feet _below_ sea level. What is the difference in elevation between the mountain top and the bottom of the trench?
- [_________]
+ [_]{$UnitAns}{16}
END_PGML
##############################################
-
-$wrong = NumberWithUnits("$a-$b ft");;
-ANS($UnitAns -> cmp() ->
- withPostFilter(AnswerHints(
- $wrong =>
- "Remember that the trench is *below* sea level - does that mean its height has a positive or negative value?")));
+# AnswerHints causing bug; temporarily commenting out
+#ANS($UnitAns -> cmp() ->
+# withPostFilter(AnswerHints(
+# $wrong =>
+# "Remember that the trench is *below* sea level - does that mean its height has a positive or negative value?")));
BEGIN_PGML_SOLUTION
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg
index c6477ca935..1ec4fa0564 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg
@@ -84,7 +84,7 @@ $absA = abs($a);
$absB = abs($b);
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph($a-5,-1,$a+5,1,
axes=>[$a-6,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg
index cf7458ef42..540f0a538e 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg
@@ -84,7 +84,7 @@ $absA = abs($a);
$absB = abs($b);
$absAns1 = abs($ans1);
-$refreshCachedImages = 1;
+
$gr = init_graph($a-12,-1,$a+12,1,
axes=>[$a-13,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg
index 31af71d377..3fdeea4121 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg
@@ -84,7 +84,7 @@ $absA = abs($a);
$absB = abs($b);
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph($a-8,-1,$a+8,1,
axes=>[$a-9,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers40.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers40.pg
index c56cc590b5..e8ff5cdf8d 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers40.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers40.pg
@@ -85,7 +85,7 @@ $absA = abs($a);
$absB = abs($b);
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph($a-8,-1,$a+8,1,
axes=>[$a-9,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg
index b5fae3ff04..bfac831536 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg
@@ -84,7 +84,7 @@ END_PGML
$negB = -$b;
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph($a-12,-1,$a+12,1,
axes=>[$a-13,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg
index d466a6b8b8..21a3023ac6 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg
@@ -83,7 +83,7 @@ $absA = abs($a);
$negB = -$b;
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph($a-6,-1,$a+6,1,
axes=>[$a-7,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg
index fcc73c7d31..5d024f18f8 100644
--- a/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg
+++ b/Contrib/PCC/BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg
@@ -83,7 +83,7 @@ $absA = abs($a);
$negB = -$b;
$absAns1 = abs($ans1);
-$refreshCachedImages=1;
+
$gr = init_graph(-$a-12,-1,-$a+12,1,
axes=>[-$a-13,0],
#grid=>[5,5],
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg
index 13249399bc..0d91ff4d5d 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg
@@ -52,7 +52,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg
index 4e731a11a1..ec8bb43a4c 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg
@@ -52,7 +52,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg
index e09cb7ccad..cfe74415b6 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg
@@ -52,7 +52,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg
index 5284fa5399..c8d0132a7f 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg
@@ -52,7 +52,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg
index 2a7db948a7..d44b529c45 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg
@@ -52,7 +52,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg
index ef378cf782..55c1757502 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg
@@ -60,7 +60,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg
index 6c03fdc6f3..89bdda91c0 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg
@@ -60,7 +60,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg
index 7971a801f8..8bbedf7452 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg
@@ -53,7 +53,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
END_PGML
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg
index b8a30fb131..757c9ad1a9 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg
@@ -51,7 +51,7 @@ TEXT(beginproblem());
BEGIN_PGML
-A line passes through the points [`([$a],[$y1])`] and [`([$a],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q(If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.))@]**
+A line passes through the points [`([$a],[$y1])`] and [`([$a],[$y2])`]. Find this line's slope. [@KeyboardInstructions(q!If the slope does not exist, you may enter [|DNE|]* or [|NONE|]*.!)@]**
[_______]{$m}
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg
index eb02aa29ad..bdbe63b97a 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg
@@ -46,9 +46,9 @@ while (gcd($num,$den)!=1) {$den=random(2,9,1);}
$m=Fraction($num,$den);
$b=random(1,10,1);
-$x1=$den*random(-3,3,1);
+$x1=$den*non_zero_random(-3,3,1);
$y1=$m*$x1+$b;
-$x2=$den*random(-3,3,1);
+$x2=$den*non_zero_random(-3,3,1);
while ($x2==$x1) {$x2=$den*random(-3,3,1);}
$y2=$m*$x2+$b;
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg
index aeae2c7f23..ccb576e2a5 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg
@@ -46,9 +46,9 @@ while (gcd($num,$den)!=1) {$den=random(2,9,1);}
$m= -Fraction($num,$den);
$b=random(1,10,1);
-$x1=$den*random(-3,3,1);
+$x1=$den*non_zero_random(-3,3,1);
$y1=$m*$x1+$b;
-$x2=$den*random(-3,3,1);
+$x2=$den*non_zero_random(-3,3,1);
while ($x2==$x1) {$x2=$den*random(-3,3,1);}
$y2=$m*$x2+$b;
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg
index 952099157e..c3fc4123c0 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -38,7 +39,7 @@ loadMacros(
Context("Numeric");
TEXT(beginproblem());
-$refreshCachedImages=1;
+
$m = random(1,5,1);
$b = random(-4,4,1);
@@ -70,54 +71,26 @@ $ymax = -$ymin;
$sizex = 240;
$sizey = 240;
-#These two variables decide how many labels are on each axis.
-$xmark = ceil($xmax/10);
-$ymark = ceil($ymax/10);
-
-#These variables adjust the label positions in the solution graph.
-if ($m>0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = -0.3;
- $runXShift = 0.1;
-}
-if ($m<0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = 0.4;
- $runXShift = 0.1;
-}
-
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
- axes=>[0,0],
- grid=>[$xmax-$xmin,$ymax-$ymin],
- size=>[$sizex,$sizey]
-);
-$gr->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $gr->lb( new Label($j, -0.1, $j,'black','center','top','large'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $gr->lb( new Label(0, $j,' '.$j,'black','left','middle','large'));
-}
($start,$stop) = (num_sort($xmin,$xmax,($ymin-$b)/$m+$h,($ymax-$b)/$m+$h))[1,2];
-$gr->moveTo(0,$b);
-$gr->arrowTo($start,$m*($start)+$b,'blue',1);
-$gr->moveTo(0,$b);
-$gr->arrowTo($stop,$m*($stop)+$b,'blue',1);
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+\end{axis}
+END_TIKZ
$ALTtext = "Graph of a coordinate system with a linear function that goes through ($x1,$y1) and ($x2,$y2).";
##############################################
@@ -128,7 +101,7 @@ A line's graph is given. What is this line's slope-intercept equation?
[@EnlargeImageStatementPGML()@]*
->>[@image( insertGraph($gr), width=>240, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
+>>[@image($gr, width=>300, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
[__]{Compute($ansSI)}{width => 15}
@@ -138,30 +111,26 @@ END_PGML
Context("Numeric");
-$grCorrect = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[$sizex,$sizey]
-);
-$grCorrect->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $grCorrect->lb( new Label($j, -0.1, $j,'black','center','top'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $grCorrect->lb( new Label(0, $j,' '.$j,'black','left','middle'));
-}
-add_functions($grCorrect, "$m*x+$b for x in <$xmin,$xmax> using color:blue and weight:1");
-$grCorrect->stamps( closed_circle($x1,$y1,'red') );
-$grCorrect->lb( new Label($x1+$x1labelx,$y1+$y1labely,"$pt1",'red',"$pt1shift",'middle'));
-$grCorrect->stamps( closed_circle($x2,$y2,'red') );
-$grCorrect->lb( new Label($x2+$x2labelx,$y2+$y2labely,"$pt2",'red',"$pt2shift",'middle'));
-
-$grCorrect->moveTo($x1,$y1);
-$grCorrect->lineTo($x2,$y1,'red',2);
-$grCorrect->lineTo($x2,$y2,'red',2);
-$grCorrect->lb( new Label(($x1+$x2)/2,$y1+$riseYShift,"$run",'red','center','middle'));
-$grCorrect->lb( new Label($x2+$runXShift,,($y1+$y2)/2,"$rise",'red','left','middle'));
+$grCorrect = createTikZImage();
+$grCorrect->addToPreamble(latexImagePreamble());
+$grCorrect->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[left] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[left] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
Context()->texStrings;
BEGIN_SOLUTION
@@ -176,7 +145,7 @@ Next, we draw a slope triangle and find the "rise" and "run". In this problem, t
$PAR
$BCENTER
-\{ image( insertGraph($grCorrect), width=>400, height=>400, tex_size=>400,
+\{ image($grCorrect, width=>300, tex_size=>400,
extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' ) \}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg
index d60c86443d..8851f131a5 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -39,7 +40,7 @@ loadMacros(
Context("Numeric");
TEXT(beginproblem());
Context()->flags->set(showExtraParens=>0);
-$refreshCachedImages=1;
+
$m = -random(1,5,1);
$b = random(-4,4,1);
@@ -73,53 +74,25 @@ $ymax = -$ymin;
$sizex = 240;
$sizey = 240;
-#These two variables decide how many labels are on each axis.
-$xmark = ceil($xmax/10);
-$ymark = ceil($ymax/10);
-
-#These variables adjust the label positions in the solution graph.
-if ($m>0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = -0.3;
- $runXShift = 0.1;
-}
-if ($m<0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = 0.4;
- $runXShift = 0.1;
-}
-
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
- axes=>[0,0],
- grid=>[$xmax-$xmin,$ymax-$ymin],
- size=>[$sizex,$sizey]
-);
-$gr->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $gr->lb( new Label($j, -0.1, $j,'black','center','top','large'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $gr->lb( new Label(0, $j,' '.$j,'black','left','middle','large'));
-}
-
($start,$stop) = (num_sort($xmin,$xmax,($ymin-$b)/$m+$h,($ymax-$b)/$m+$h))[1,2];
-$gr->moveTo(0,$b);
-$gr->arrowTo($start,$m*($start)+$b,'blue',1);
-$gr->moveTo(0,$b);
-$gr->arrowTo($stop,$m*($stop)+$b,'blue',1);
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+\end{axis}
+END_TIKZ
$ALTtext = "Graph of a coordinate system with a linear function that goes through ($x1,$y1) and ($x2,$y2).";
##############################################
@@ -130,7 +103,7 @@ A line's graph is given. What is this line's slope-intercept equation?
[@EnlargeImageStatementPGML()@]*
->>[@image( insertGraph($gr), width=>240, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
+>>[@image($gr, width=>300, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
[__]{$ansSI}{width => 15}
@@ -140,30 +113,26 @@ END_PGML
Context("Numeric");
-$grCorrect = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[$sizex,$sizey]
-);
-$grCorrect->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $grCorrect->lb( new Label($j, -0.1, $j,'black','center','top'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $grCorrect->lb( new Label(0, $j,' '.$j,'black','left','middle'));
-}
-add_functions($grCorrect, "$m*x+$b for x in <$xmin,$xmax> using color:blue and weight:1");
-$grCorrect->stamps( closed_circle($x1,$y1,'red') );
-$grCorrect->lb( new Label($x1+$x1labelx,$y1+$y1labely,"$pt1",'red',"$pt1shift",'middle'));
-$grCorrect->stamps( closed_circle($x2,$y2,'red') );
-$grCorrect->lb( new Label($x2+$x2labelx,$y2+$y2labely,"$pt2",'red',"$pt2shift",'middle'));
-
-$grCorrect->moveTo($x1,$y1);
-$grCorrect->lineTo($x2,$y1,'red',2);
-$grCorrect->lineTo($x2,$y2,'red',2);
-$grCorrect->lb( new Label(($x1+$x2)/2,$y1+$riseYShift,"$run",'red','center','middle'));
-$grCorrect->lb( new Label($x2+$runXShift,,($y1+$y2)/2,"$rise",'red','left','middle'));
+$grCorrect = createTikZImage();
+$grCorrect->addToPreamble(latexImagePreamble());
+$grCorrect->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[left] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[left] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
Context()->texStrings;
BEGIN_SOLUTION
@@ -178,7 +147,7 @@ Next, we draw a slope triangle and find the "rise" and "run". In this problem, t
$PAR
$BCENTER
-\{ image( insertGraph($grCorrect), width=>400, height=>400, tex_size=>400,
+\{ image($grCorrect, width=>300, tex_size=>400,
extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' ) \}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg
index a829cfeada..3d444775a4 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -39,7 +40,7 @@ loadMacros(
Context("Fraction");
TEXT(beginproblem());
-$refreshCachedImages=1;
+
$num=random(1,9,1);
@@ -78,56 +79,26 @@ $ymax = -$ymin;
$sizex = 240;
$sizey = 240;
-#These two variables decide how many labels are on each axis.
-$xmark = ceil($xmax/10);
-$ymark = ceil($ymax/10);
-
-#These variables adjust the label positions in the solution graph.
-if ($m>0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = -0.3;
- $runXShift = 0.1;
-}
-if ($m<0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = 0.4;
- $runXShift = 0.1;
-}
-
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
- axes=>[0,0],
- grid=>[$xmax-$xmin,$ymax-$ymin],
- size=>[$sizex,$sizey]
-);
-$gr->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $gr->lb( new Label($j, -0.1, $j,'black','center','top','large'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $gr->lb( new Label(0, $j,' '.$j,'black','left','middle','large'));
-}
-
($start,$stop) = (num_sort($xmin,$xmax,($ymin-$b)/$mperl+$h,($ymax-$b)/$mperl+$h))[1,2];
-$gr->moveTo($x1,$y1);
-$gr->arrowTo($start,$mperl*($start)+$b,'blue',1);
-$gr->moveTo($x1,$y1);
-$gr->arrowTo($stop,$mperl*($stop)+$b,'blue',1);
-$gr->stamps( closed_circle($x1,$y1,'blue') );
-$gr->stamps( closed_circle($x2,$y2,'blue') );
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
$ALTtext = "Graph of a coordinate system with a linear function that goes through ($x1,$y1) and ($x2,$y2).";
#The variable ansSIRight is for displaying correct answer.
@@ -147,7 +118,7 @@ A line's graph is given. What is this line's slope-intercept equation?
[@EnlargeImageStatementPGML()@]*
->>[@image( insertGraph($gr), width=>240, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
+>>[@image($gr, width=>300, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
[__]{$evaluator}{width => 15}
@@ -157,30 +128,26 @@ END_PGML
Context("Numeric");
-$grCorrect = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[$sizex,$sizey]
-);
-$grCorrect->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $grCorrect->lb( new Label($j, -0.1, $j,'black','center','top'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $grCorrect->lb( new Label(0, $j,' '.$j,'black','left','middle'));
-}
-add_functions($grCorrect, "$m*x+$b for x in <$xmin,$xmax> using color:blue and weight:1");
-$grCorrect->stamps( closed_circle($x1,$y1,'red') );
-$grCorrect->lb( new Label($x1+$x1labelx,$y1+$y1labely,"$pt1",'red',"$pt1shift",'middle'));
-$grCorrect->stamps( closed_circle($x2,$y2,'red') );
-$grCorrect->lb( new Label($x2+$x2labelx,$y2+$y2labely,"$pt2",'red',"$pt2shift",'middle'));
-
-$grCorrect->moveTo($x1,$y1);
-$grCorrect->lineTo($x2,$y1,'red',2);
-$grCorrect->lineTo($x2,$y2,'red',2);
-$grCorrect->lb( new Label(($x1+$x2)/2,$y1+$riseYShift,"$run",'red','center','middle'));
-$grCorrect->lb( new Label($x2+$runXShift,,($y1+$y2)/2,"$rise",'red','left','middle'));
+$grCorrect = createTikZImage();
+$grCorrect->addToPreamble(latexImagePreamble());
+$grCorrect->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[left] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[left] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
Context()->texStrings;
BEGIN_SOLUTION
@@ -195,7 +162,7 @@ Next, we draw a slope triangle and find the "rise" and "run". In this problem, t
$PAR
$BCENTER
-\{ image( insertGraph($grCorrect), width=>400, height=>400, tex_size=>400,
+\{ image($grCorrect, width=>300, tex_size=>400,
extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' ) \}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg
index a805d455f1..7381d16b5f 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg
@@ -25,7 +25,8 @@
DOCUMENT();
loadMacros(
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
@@ -39,7 +40,7 @@ loadMacros(
Context("Fraction");
TEXT(beginproblem());
-$refreshCachedImages=1;
+
$num=random(1,9,1);
@@ -78,56 +79,27 @@ $ymax = -$ymin;
$sizex = 240;
$sizey = 240;
-#These two variables decide how many labels are on each axis.
-$xmark = ceil($xmax/10);
-$ymark = ceil($ymax/10);
-
-#These variables adjust the label positions in the solution graph.
-if ($m>0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = -0.3;
- $runXShift = 0.1;
-}
-if ($m<0) {
- $x1labelx = -0.2;
- $y1labely = 0;
- $x2labelx = 0.2;
- $y2labely = 0;
- $pt1shift = "right";
- $pt2shift = "left";
-
- $riseYShift = 0.4;
- $runXShift = 0.1;
-}
-
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
- axes=>[0,0],
- grid=>[$xmax-$xmin,$ymax-$ymin],
- size=>[$sizex,$sizey]
-);
-$gr->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $gr->lb( new Label($j, -0.1, $j,'black','center','top','large'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $gr->lb( new Label(0, $j,' '.$j,'black','left','middle','large'));
-}
-
($start,$stop) = (num_sort($xmin,$xmax,($ymin-$b)/$mperl+$h,($ymax-$b)/$mperl+$h))[1,2];
-$gr->moveTo($x1,$y1);
-$gr->arrowTo($start,$mperl*($start)+$b,'blue',1);
-$gr->moveTo($x1,$y1);
-$gr->arrowTo($stop,$mperl*($stop)+$b,'blue',1);
-$gr->stamps( closed_circle($x1,$y1,'blue') );
-$gr->stamps( closed_circle($x2,$y2,'blue') );
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
+
$ALTtext = "Graph of a coordinate system with a linear function that goes through ($x1,$y1) and ($x2,$y2).";
@@ -147,7 +119,7 @@ A line's graph is given. What is this line's slope-intercept equation?
[@EnlargeImageStatementPGML()@]*
->>[@image( insertGraph($gr), width=>240, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
+>>[@image($gr, width=>300, extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' )@]*<<
[__]{$evaluator}{width => 15}
@@ -157,30 +129,26 @@ END_PGML
Context("Numeric");
-$grCorrect = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[$sizex,$sizey]
-);
-$grCorrect->lb('reset');
-for ($j=-$xmax+$xmark;$j<$xmax;$j=$j+$xmark) {
- $grCorrect->lb( new Label($j, -0.1, $j,'black','center','top'));
-}
-for ($j=-$ymax+$ymark;$j<$ymax;$j=$j+$ymark) {
- if (Real($j) == 0) {next;}
- $grCorrect->lb( new Label(0, $j,' '.$j,'black','left','middle'));
-}
-add_functions($grCorrect, "$m*x+$b for x in <$xmin,$xmax> using color:blue and weight:1");
-$grCorrect->stamps( closed_circle($x1,$y1,'red') );
-$grCorrect->lb( new Label($x1+$x1labelx,$y1+$y1labely,"$pt1",'red',"$pt1shift",'middle'));
-$grCorrect->stamps( closed_circle($x2,$y2,'red') );
-$grCorrect->lb( new Label($x2+$x2labelx,$y2+$y2labely,"$pt2",'red',"$pt2shift",'middle'));
-
-$grCorrect->moveTo($x1,$y1);
-$grCorrect->lineTo($x2,$y1,'red',2);
-$grCorrect->lineTo($x2,$y2,'red',2);
-$grCorrect->lb( new Label(($x1+$x2)/2,$y1+$riseYShift,"$run",'red','center','middle'));
-$grCorrect->lb( new Label($x2+$runXShift,,($y1+$y2)/2,"$rise",'red','left','middle'));
+$grCorrect = createTikZImage();
+$grCorrect->addToPreamble(latexImagePreamble());
+$grCorrect->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ grid = minor,
+ ]
+ \addplot+[domain=$start:$stop] {$m*x+$b};
+ \addplot[soliddot] coordinates {($x1,$y1)} node[left] {\(($x1,$y1)\)};
+ \addplot[soliddot] coordinates {($x2,$y2)} node[left] {\(($x2,$y2)\)};
+ \addplot[guideline] coordinates {($x1,$y1) ($x2,$y1) ($x2,$y2)};
+\end{axis}
+END_TIKZ
Context()->texStrings;
BEGIN_SOLUTION
@@ -195,7 +163,7 @@ Next, we draw a slope triangle and find the "rise" and "run". In this problem, t
$PAR
$BCENTER
-\{ image( insertGraph($grCorrect), width=>400, height=>400, tex_size=>400,
+\{ image($grCorrect, width=>300, tex_size=>400,
extra_html_tags=>'title="$ALTtext" alt="$ALTtext"' ) \}
$ECENTER
$PAR
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg
index 14b9db203a..df93b9db9a 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg
@@ -37,7 +37,7 @@ loadMacros(
Context("Numeric");
TEXT(beginproblem());
-$refreshCachedImages=1;
+
$m = 0;
$b = non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg
index 95b2c097a1..794c61ed72 100644
--- a/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg
+++ b/Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg
@@ -37,7 +37,7 @@ loadMacros(
Context("Numeric");
TEXT(beginproblem());
-$refreshCachedImages=1;
+
$a = non_zero_random(-4,4,1);
diff --git a/Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg b/Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg
index 78e285281e..a197309540 100644
--- a/Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg
+++ b/Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg
@@ -86,7 +86,7 @@ BEGIN_PGML_SOLUTION
[`
\begin{aligned}
[$var4] &= [$var3]-\frac{[$a][$var1]}{[$var2]} \\
-[$var2] \cdot [$var4] &= [$var2] \cdot\left( [$var3]- [$var2] \frac{[$a][$var1]}{[$var2]}\right) \\
+[$var2] \cdot [$var4] &= [$var2] \cdot\left( [$var3]- \frac{[$a][$var1]}{[$var2]}\right) \\
[$var2] \cdot [$var4] &= [$var2] \cdot [$var3] - [$var2] \cdot \frac{[$a][$var1]}{[$var2]} \\
[$var2][$var4] &= [$var2][$var3] -[$a][$var1] \\
[$var2][$var4] \mathbf{{} -[$var2][$var3]}&= [$var2][$var3] -[$a][$var1]\mathbf{{} -[$var2][$var3]} \\
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg
index 09684acd8f..41432f3db1 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg
@@ -41,7 +41,7 @@ loadMacros(
Context("Point");
Context()->noreduce("(-x)-y","(-x)+y");
-$refreshCachedImages=1;
+
#These two arrays store the coordinates of the intersections.
#(x[0],y[0]) is the correct solution in the correct graph.
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg
index cc6a08c38b..3304bf0feb 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
Context("Point");
-$refreshCachedImages=1;
+
#These two arrays store the coordinates of the intersections.
#(x[0],y[0]) is the correct solution in the correct graph.
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg
index 13c46d4ac3..b2e524edc5 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg
@@ -40,7 +40,7 @@ loadMacros(
##############################################
Context("Point");
-$refreshCachedImages=1;
+
#These two arrays store the coordinates of the intersections.
#(x[0],y[0]) is the correct solution in the correct graph.
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg
index 47c0e17adc..bc922fc53a 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
Context("Point");
-$refreshCachedImages=1;
+
#These two arrays store the coordinates of the intersections.
#(x[0],y[0]) is the correct solution in the correct graph.
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg
index 16a1ae482f..3609b74a34 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
Context("Point");
-$refreshCachedImages=1;
+
#These two arrays store the coordinates of the intersections.
#(x[0],y[0]) is the correct solution in the correct graph.
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg
index 3e2560c43a..e185686bc1 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg
@@ -53,7 +53,7 @@ Context("Point");
);
$intersection = Compute("no solution");
-$refreshCachedImages=1;
+
Context("Fraction");
Context()->variables->add(y => "Real");
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg
index 524ee77461..8babd0c44c 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
-$refreshCachedImages=1;
+
Context("Point");
Context()->strings->add("no solution"=>{},
"no solutions"=>{alias=>'no solution'},
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg
index 860e44f7a9..539186f51f 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg
@@ -41,7 +41,7 @@ loadMacros(
##############################################
-$refreshCachedImages=1;
+
Context("Point");
Context()->strings->add("no solution"=>{},
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub10.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub10.pg
new file mode 100644
index 0000000000..a07c17b1eb
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub10.pg
@@ -0,0 +1,292 @@
+# WeBWorK problem written by Chris Hughes, 2013
+# Portland Community College
+#
+# Solve the system of linear equations
+# a x + b y = e
+# c x + d y = f
+# where a, b, c, d are (positive) integer values on the interval [1,5]
+#
+# The solution, (x,y), where x and y are both integers on the interval
+# [-10,10].
+#
+# Last updated: Carl Yao, 6/25/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Point");
+Context()->parens->set("[" => {type => "Interval", close => "]"});
+Context()->parens->set("{" => {type => "Set", close => "}"});
+Context()->parens->set("<" => {type => "Vector", close => ">"});
+Context()->parens->undefine('[');
+Context()->parens->undefine('{');
+Context()->parens->undefine('|');
+Context()->parens->undefine('<');
+#This approach guarantees integer solutions
+
+# start with the solution
+$x=random(-10,10,1);
+$y=random(-10,10,1);
+
+# set up the system
+# a x + b y =e
+# c x + d y = f
+# need to make sure that
+# ad - bc != 0
+
+# initialize the variables
+$a=1;
+$b=1;
+$c=1;
+$d=1;
+
+# set up $a, $b, $c, $d
+while($a*$d -$c*$b == 0){
+$a=random(2,5,1);
+$b=random(2,5,1);
+$c=random(2,5,1);
+$d=random(2,5,1);
+# guarantee one is 1 so substitution is the right method
+if (list_random(1,0,0,0)) {$a = 1;}
+elsif (list_random(1,0,0)) {$b = 1;}
+elsif (list_random(1,0,)) {$c = 1;}
+else {$d = 1;}
+}
+
+# globally set the reductions one time
+# so that we can then merely call ->reduce;
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$topLeft = Formula("$a*x+$b*y")->reduce;
+$e = $topLeft->eval(x=>$x,y=>$y);
+
+$botLeft = Formula("$c*x+$d*y")->reduce;
+$f = $botLeft->eval(x=>$x,y=>$y);
+
+# add solution strings to context- this means that if
+# students enter these (and they are not correct), then
+# WW will not give a Context warning
+Context()->strings->add("no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "infinite number of solutions"=>{},
+ "infinite"=>{alias=>'infinite number of solutions'},
+ "infinite solutions"=>{alias=>'infinite number of solutions'});
+
+$ans = Compute("($x,$y)");
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{\begin{aligned}
+ [$topLeft] & = [$e] \\
+ [$botLeft] & = [$f]
+\end{aligned}\right.```]
+
+[@KeyboardInstructions('If there is one solution, enter it as an ordered pair. If there is no solution, enter [|no solution|]*. If there is an infinite number of solutions, enter [|infinite number of solutions|]*.')@]**
+
+[_________________________________]
+
+END_PGML
+
+ANS($ans -> cmp() ->
+ withPostFilter(AnswerHints(
+ ["infinity"] =>
+ "It doesn't make sense to say 'infinity' here- did you mean 'infinite number of solutions'?.")));
+
+$commonConclusion = "The solution to the system is [`($x,$y)`]. It is left as an exercise to check. Please also note that you may have solved this problem a different way.";
+
+if($a==1 and $a!=$c and $b!=$d)
+{
+ # x + by = e should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$e-$b*y")->reduce;
+ $lhs=Formula("$c*$e-$c*$b*y+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+1. From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+
+1. This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+
+1. Now that we have [`y`], we find [`x`] using the _first_ equation:
+
+ [```\begin{aligned}
+ x&=[$e]-([$b])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}```]
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==1 and $b!=$d and $a!=$c)
+{
+ # ax + y = e should be solved for y
+ # provided that $b and $d are not equal- in this case we should use subtraction.
+ $lhs=Formula("$c*x+$d*$e-$d*$a*x")->reduce;
+ $rhs=Formula("$e-$a*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+1. From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+
+1. This gives [`[$lhs]=[$f]`] so [`x=[$x]`]
+
+1. Now that we have [`x`], we find [`y`] using the first equation:
+
+ [```
+ \begin{aligned}
+ y&=[$e]-([$a])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}```]
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==1 and $a!=$c and $b!=$d)
+{
+ # x + dy = f should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$f-$d*y")->reduce;
+ $lhs=Formula("$a*$f-$a*$d*y+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+1. From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+
+1. This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+
+1. Now that we have [`y`], we find [`x`] using the _second_ equation:
+
+ [```
+ \begin{aligned}
+ x&=[$f]-([$d])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}```]
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==1 and $d!=$b and $a!=$c)
+{
+ # cx + y = f should be solved for y
+ $rhs=Formula("$f-$c*x")->reduce;
+ $lhs=Formula("$a*x+$b*$f-$b*$c*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+1. From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+
+1. This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+
+1. Now that we have [`x`], we find [`y`] using the _second_ equation:
+
+ [```
+ \begin{aligned}
+ y&=[$f]-([$c])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}```]
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+}
+else
+{
+ if($a==$c)
+ {
+ # ax + by = e
+ # ax + dy = f
+ # should be solved using subtraction
+ $lhs=Formula("$b*y-$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*($y)")->reduce;
+BEGIN_PGML_SOLUTION
+1. We subtract the two equations, which will cancel the terms in involving [`x`] and give [`[$lhs]=[$e]-([$f])`].
+
+1. This gives [`y=[$y]`].
+
+1. Now that we have [`y`], we find [`x`] using either equation. Let's use the first: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ elsif($b==$d)
+ {
+ # ax + by = e
+ # cx + by = f
+ # should be solved using subtraction
+ $lhs=Formula("$a*x-$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+1. We subtract the two equations, which will cancel the terms in involving [`y`] and give [`[$lhs]=[$e]-([$f])`].
+
+1. This gives [`x=[$x]`].
+
+1. Now that we have [`x`], we find [`y`] using either equation. Let's use the first: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ else
+ {
+ # otherwise use elimination
+
+ # multiply the first equation by $c
+ $topleft=Formula("$c*$a*x+$c*$b*y")->reduce;
+ $topright=$c*$e;
+
+ # multiply the second equation by $a
+ $bottomleft=Formula("$a*$c*x+$a*$d*y")->reduce;
+ $bottomright=$a*$f;
+
+ $lhs=Formula("$c*$b*y-$a*$d*y")->reduce;
+ $rhs=$c*$e-$a*$f;
+
+ # put them together
+BEGIN_PGML_SOLUTION
+1. Let's multiply the _first_ equation by [$c] and the _second_ equation by [$a]
+
+ [```\begin{aligned}
+ [$topleft] &= [$topright]\\
+ [$bottomleft] &=[$bottomright]
+ \end{aligned}```]
+
+1. Subtracting these two equations gives [`[$lhs]=[$rhs]`], so [`y=[$y]`].
+
+1. Now that we have [`y`], we can use either equation to find [`x`]; let's use the first one:
+
+ [```[$a]*x+([$b])\cdot([$y])=[$e]```]
+
+ so [`x=[$x]`].
+
+1. [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+}
+
+##############################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub30.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub30.pg
new file mode 100644
index 0000000000..12663ae371
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub30.pg
@@ -0,0 +1,263 @@
+# WeBWorK problem written by Chris Hughes, 2013
+# Portland Community College
+#
+# Solve the system of linear equations
+# a x + b y =e
+# c x + d y = f
+# where a, b, c, d are NEGATIVE integer values on the interval [-5,1]
+#
+# The solution, (x,y), where x and y are both integers on the interval
+# [-10,10].
+#
+# Last updated: Carl Yao, 6/25/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Point");
+Context()->parens->set("[" => {type => "Interval", close => "]"});
+Context()->parens->set("{" => {type => "Set", close => "}"});
+Context()->parens->set("<" => {type => "Vector", close => ">"});
+
+#This approach guarantees integer solutions
+
+# start with the solution
+$x=random(-10,10,1);
+$y=random(-10,10,1);
+
+# set up the system
+# a x + b y =e
+# c x + d y = f
+# need to make sure that
+# ad - bc != 0
+
+# initialize the variables
+$a=1;
+$b=1;
+$c=1;
+$d=1;
+
+while($a*$d -$c*$b == 0){
+$a=random(-5,-1,1);
+$b=random(-5,-1,1);
+$c=random(-5,-1,1);
+$d=random(-5,-1,1);
+# guarantee one is 1 so substitution is the right method
+if (list_random(1,0,0,0)) {$a = 1;}
+elsif (list_random(1,0,0)) {$b = 1;}
+elsif (list_random(1,0,)) {$c = 1;}
+else {$d = 1;}
+
+}
+
+# globally set the reductions one time
+# so that we can then merely call ->reduce;
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$topLeft = Formula("$a*x+$b*y")->reduce;
+$e = $topLeft->eval(x=>$x,y=>$y);
+
+$botLeft = Formula("$c*x+$d*y")->reduce;
+$f = $botLeft->eval(x=>$x,y=>$y);
+
+$commonConclusion = "The solution to the system is [`($x,$y)`]. It is left as an exercise to check. Please also note that you may have solved this problem a different way.";
+
+# add solution strings to context- this means that if
+# students enter these (and they are not correct), then
+# WW will not give a Context warning
+Context()->strings->add("no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "infinite number of solutions"=>{},
+ "infinite"=>{alias=>'infinite number of solutions'},
+ "infinite solutions"=>{alias=>'infinite number of solutions'});
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{\begin{aligned}
+ [$topLeft] & = [$e] \\
+ [$botLeft] & = [$f]
+\end{aligned}\right.```]
+
+[@KeyboardInstructions('If there is one solution, enter it as an ordered pair. If there is no solution, enter [|no solution|]*. If there is an infinite number of solutions, enter [|infinite number of solutions|]*.')@]**
+
+[_________________________________]{Compute("($x,$y)")}
+
+END_PGML
+
+
+if($a==-1 and $a != $c and $b!=$d)
+{
+ # - x + by = e should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$b*y-$e")->reduce;
+ $lhs=Formula("$c*$b*y-$c*$e+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+* This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+* We find [`x`] using the _first_ equation:
+
+ [`\begin{aligned}
+ x&=([$b])\cdot([$y])-([$e])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==-1 and $b!=$d and $a!=$c)
+{
+ # ax - y = e should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$a*x-$e")->reduce;
+ $lhs=Formula("$c*x+$d*$a*x-$d*$e")->reduce;
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$f]`] so [`x=[$x]`].
+* We find [`y`] using the first equation:
+
+ [`\begin{aligned}
+ y&=([$a])\cdot([$x])-([$e]) \\
+ &=[$y]\end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==-1 and $a!=$c and $b!=$d)
+{
+ # - x + dy = f should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$d*y-$f")->reduce;
+ $lhs=Formula("$a*$d*y-$a*$f+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+* This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+* We find [`x`] using the _second_ equation:
+
+ [`\begin{aligned}
+ x&=([$d])\cdot([$y])-([$f])\\
+ &=[$x]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==-1 and $b!=$d and $a!=$c)
+{
+ # cx - y = f should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$c*x-$f")->reduce;
+ $lhs=Formula("$a*x+$b*$c*x-$b*$f")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+* We find [`y`] using the _second_ equation:
+
+ [`\begin{aligned}
+ y&=([$c])\cdot([$x])-([$f])\\
+ &=[$y]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+else
+{
+ if($a==$c)
+ {
+ # ax + by = e
+ # ax + dy = f
+ # should be solved using subtraction
+ $lhs=Formula("$b*y-$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*$y")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms involving [`x`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`y=[$y]`].
+* We find [`x`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ elsif($b==$d)
+ {
+ # ax + by = e
+ # cx + by = f
+ # should be solved using subtraction
+ $lhs=Formula("$a*x-$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms involving [`y`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`x=[$x]`].
+* We find [`y`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ else
+ {
+ # otherwise use elimination
+
+ # multiply the first equation by $c
+ $topleft=Formula("$c*$a*x+$c*$b*y")->reduce;
+ $topright=$c*$e;
+
+ # multiply the second equation by $a
+ $bottomleft=Formula("$a*$c*x+$a*$d*y")->reduce;
+ $bottomright=$a*$f;
+
+ $lhs=Formula("$c*$b*y-$a*$d*y")->reduce;
+ $rhs=$c*$e-$a*$f;
+
+ # put them together
+BEGIN_PGML_SOLUTION
+* Let's multiply the _first_ equation by [$c] and the _second_ equation by [$a]
+
+ [`\begin{aligned}
+ [$topleft] &= [$topright]\\
+ [$bottomleft] &=[$bottomright]
+ \end{aligned}`]
+* Subtracting these two equations gives [`[$lhs]=[$rhs]`], so [`y=[$y]`].
+
+* Now that we have [`y`], we can use either equation to find [`x`]; let's use the first one:
+
+ [`[$a]*x+([$b])\cdot([$y])=[$e]`]
+
+ so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+}
+
+##############################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub40.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub40.pg
new file mode 100644
index 0000000000..182c5254a6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquationSub40.pg
@@ -0,0 +1,238 @@
+# WeBWorK problem written by Chris Hughes, 2013
+# Portland Community College
+#
+# Solve the system of linear equations
+# a x + b y =e
+# c x + d y = f
+# where only ONE of a, b, c, d is ZERO, and the rest will be (non-zero) integer values on the interval [-5,5]
+#
+# The solution is, (x,y), where x and y are both integers on the interval
+# [-10,10].
+#
+# Last updated: Carl Yao, 6/25/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Point");
+Context()->parens->set("[" => {type => "Interval", close => "]"});
+Context()->parens->set("{" => {type => "Set", close => "}"});
+Context()->parens->set("<" => {type => "Vector", close => ">"});
+
+#This approach guarantees integer solutions
+
+# start with the solution
+$x=random(-10,10,1);
+$y=random(-10,10,1);
+
+# set up the system
+# a x + b y = e
+# c x + d y = f
+# need to make sure that
+# ad - bc != 0
+
+# initialize the variables
+$a=1;
+$c=1;
+$b=1;
+$d=1;
+
+while($a*$d -$c*$b == 0){
+$a=random(-5,5,1);
+if($a==0)
+{
+ # if $a==0 then we don't want any of the other variables
+ # to be 0
+ $b=non_zero_random(-5,5,1);
+}
+else
+{
+ # otherwise $b can be anything
+ $b=random(-5,5,1);
+}
+if($a*$b==0)
+{
+ # if one of $a or $b is 0, then we don't want $c to be 0
+ $c=non_zero_random(-5,5,1);
+}
+else
+{
+ # otherwise $c can be zero
+ $c=random(-5,5,1);
+}
+if($a*$b*$c==0)
+{
+ # if one of $a, $b, or $c is 0, then we don't want $d to be 0
+ $d=non_zero_random(-5,5,1);
+}
+else
+{
+ # otherwise it must be 0 for this particular problem
+ $d=0
+}
+}
+
+# globally set the reductions one time
+# so that we can then merely call ->reduce;
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$topLeft = Formula("$a*x+$b*y")->reduce;
+$e = $topLeft->eval(x=>$x,y=>$y);
+
+$botLeft = Formula("$c*x+$d*y")->reduce;
+$f = $botLeft->eval(x=>$x,y=>$y);
+
+# add solution strings to context- this means that if
+# students enter these (and they are not correct), then
+# WW will not give a Context warning
+Context()->strings->add("no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "infinite number of solutions"=>{},
+ "infinite"=>{alias=>'infinite number of solutions'},
+ "infinite solutions"=>{alias=>'infinite number of solutions'});
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{\begin{aligned}
+ [$topLeft] & = [$e] \\
+ [$botLeft] & = [$f]
+\end{aligned}\right.```]
+
+[@KeyboardInstructions('If there is one solution, enter it as an ordered pair. If there is no solution, enter [|no solution|]*. If there is an infinite number of solutions, enter [|infinite number of solutions|]*.')@]**
+
+[_________________________________]{Compute("($x,$y)")}
+
+END_PGML
+
+$commonConclusion = "The solution to the system is [`($x,$y)`]. It is left as an exercise to check. Please also note that you may have solved this problem a different way.";
+
+# solution key
+if($a==0)
+{
+ # by = e
+ # ax + dy = f
+ # should be solved by using y from the first equation
+ $lhs=Formula("$c*x+$d*$y")->reduce;
+ # the first step depends on if |$b|=1
+ if(abs($b)!=1)
+ {
+ $firststep="Let's solve the first equation for [`y`]; we divide both sides of the equation by [`$b`], so [`y=$y`].";
+ }
+ else
+ {
+ $firststep="Clearly the first equation tells us that [`y=$y`]";
+ }
+BEGIN_PGML_SOLUTION
+* [$firststep]**
+* We find [`x`] by substituting this value of [`y`] in to the second equation: [`[$lhs]=[$f]`], and solving for [`x`].
+* This gives [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==0)
+{
+ # ax = e
+ # ax + dy = f
+ # should be solved by using x from the first equation
+ $lhs=Formula("$c*$x+$d*y")->reduce;
+
+ # the first step depends on if |$a|=1
+ if(abs($a)!=1)
+ {
+ $firststep="Let's solve the first equation for [`x`]; we divide both sides of the equation by [`$a`], so [`x=$x`].";
+ }
+ else
+ {
+ $firststep="Clearly the first equation tells us that [`x=$x`].";
+ }
+BEGIN_PGML_SOLUTION
+* [$firststep]**
+* We find [`y`] by substituting this value of [`x`] in to the second equation: [`[$lhs]=[$f]`], and solving for [`y`].
+* This gives [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==0)
+{
+ # ax + by = e
+ # dy = f
+ # should be solved by using y from the second equation
+ $lhs=Formula("$a*x+$b*$y")->reduce;
+ # the first step depends on if |$d|=1
+ if(abs($d)!=1)
+ {
+ $firststep="Let's solve the second equation for [`y`]; we divide both sides of the equation by [`$d`], so [`y=$y`].";
+ }
+ else
+ {
+ $firststep="Clearly the second equation tells us that [`y=$y`].";
+ }
+BEGIN_PGML_SOLUTION
+* [$firststep]**
+* We find [`x`] by substituting this value of [`y`] in to the first equation: [`[$lhs]=[$e]`], and solving for [`x`].
+* This gives [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==0)
+{
+ # ax + by = e
+ # cx = f
+ # should be solved by using x from the second equation
+ $lhs=Formula("$a*$x+$b*y")->reduce;
+
+ # the first step depends on if |$c|=1
+ if(abs($c)!=1)
+ {
+ $firststep="Let's solve the second equation for [`x`]; we divide both sides of the equation by [`$c`], so [`x=$x`].";
+ }
+ else
+ {
+ $firststep="Clearly the second equation tells us that [`x=$x`].";
+ }
+BEGIN_PGML_SOLUTION
+* [$firststep]**
+* We find [`y`] by substituting this value of [`x`] in to the first equation: [`[$lhs]=[$e]`], and solving for [`y`].
+* This gives [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+
+TEXT(PGML::Format2(<<'END_PGML_HINT'));
+*Hint*
+* The solution is an ordered pair, so you'll write it in the form [`(x,y)`]
+* Both [`x`] and [`y`] are integers between [`-10`] and [`10`]
+END_PGML_HINT
+
+##############################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub05.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub05.pg
new file mode 100644
index 0000000000..f8e20b9865
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub05.pg
@@ -0,0 +1,167 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# -exactly one of the four coefficients is 0
+# -its partner coefficient is +- 1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+
+# One of the equations is simply variable = number
+$zero = random(0,3,1);
+if ($zero == 0) {$a = Fraction(0,1), $b = Fraction(1,1)};
+if ($zero == 1) {$b = Fraction(0,1), $a = Fraction(1,1)};
+if ($zero == 2) {$c = Fraction(0,1), $d = Fraction(1,1)};
+if ($zero == 3) {$d = Fraction(0,1), $c = Fraction(1,1)};
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub10.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub10.pg
new file mode 100644
index 0000000000..8bd6904570
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub10.pg
@@ -0,0 +1,166 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# -exactly one of the four coefficients is 0
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+
+# One of the equations is simply const*var = const
+$zero = random(0,3,1);
+if ($zero == 0) {$a = Fraction(0,1)};
+if ($zero == 1) {$b = Fraction(0,1)};
+if ($zero == 2) {$c = Fraction(0,1)};
+if ($zero == 3) {$d = Fraction(0,1)};
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub11.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub11.pg
new file mode 100644
index 0000000000..114cfc6001
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub11.pg
@@ -0,0 +1,160 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# like y=-2x+8, y=7x-10
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(1,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(1,1,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,-1,1), random(1,1,1));
+$d = Fraction(non_zero_random(1,1,1), random(1,1,1));
+# Above means some coefficients are 1, and solution will use substitution method
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(1,1,1), random(0,0,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(1,1,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub12.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub12.pg
new file mode 100644
index 0000000000..fe5347832b
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub12.pg
@@ -0,0 +1,160 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# like y=2x+1, 2x+3y=#
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(1,1,1), random(1,1,1));
+$c = Fraction(non_zero_random(1,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(1,5,1), random(1,1,1));
+# Above means one coefficient will be 1, and substitution method will be used
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(1,1,1), random(0,0,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(0,0,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub13.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub13.pg
new file mode 100644
index 0000000000..42f5b406ac
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub13.pg
@@ -0,0 +1,160 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# like y=-2x-1, 2x-3y=#
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(1,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(1,1,1), random(1,1,1));
+$c = Fraction(non_zero_random(1,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,-1,1), random(1,1,1));
+# Above means one coefficient will be 1, and substitution method will be used
+
+$det = $a*$d-$b*$c;
+
+$e = $det*non_zero_random(-3,3,1);
+$f = $det*non_zero_random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(1,1,1), random(0,0,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(0,0,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub14.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub14.pg
new file mode 100644
index 0000000000..edf5fe8336
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub14.pg
@@ -0,0 +1,160 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# like x=2y-3, 2x+5y=#
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(1,1,1), random(1,1,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+# Above means one coefficient will be 1, and substitution method will be used
+
+$det = $a*$d-$b*$c;
+
+$e = $det*non_zero_random(-3,3,1);
+$f = $det*non_zero_random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,0,1), random(1,1,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(0,0,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub15.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub15.pg
new file mode 100644
index 0000000000..6721ed3485
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub15.pg
@@ -0,0 +1,171 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# -one of the coefficients is 1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+
+$one = random(0,3,1);
+if ($one == 0) {if ($xside1) {$a = Fraction(-1,1)} else {$a = Fraction(1,1)}};
+if ($one == 1) {if ($yside1) {$b = Fraction(-1,1)} else {$b = Fraction(1,1)}};
+if ($one == 2) {if ($xside2) {$c = Fraction(-1,1)} else {$c = Fraction(1,1)}};
+if ($one == 3) {if ($yside2) {$d = Fraction(-1,1)} else {$d = Fraction(1,1)}};
+# Above means one coefficient will be 1, and substitution method will be used
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+
+
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub16.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub16.pg
new file mode 100644
index 0000000000..b57f12d827
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub16.pg
@@ -0,0 +1,161 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -no solutions
+# like y=(2/3)x+a, y=(2/3)x+b (no solution)
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$b = Fraction(non_zero_random(1,1,1), random(1,1,1));
+$c = $a;
+$d = Fraction(non_zero_random(1,1,1), random(1,1,1));
+# Above means the equations have the same slope, so solution is a quick recognition
+
+$det = $a*$d-$b*$c;
+
+$e = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+do {$f = Fraction(non_zero_random(-5,5,1), random(1,5,1));} until ($f != $e);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(1,1,1), random(0,0,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(1,1,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+#SystemOfLinearEquationsProblemSolutionSetup();
+$Attack = "Since these two lines have the same slope, but different [`y`]-intercepts, they are parallel lines. They never intersect and therefore the system has no solution.";
+
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub17.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub17.pg
new file mode 100644
index 0000000000..70ebe5b9c6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub17.pg
@@ -0,0 +1,163 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# integer coefficients
+# fraction solutions
+# both equations in standard form
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+$x = 'x';
+$y = 'y';
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+
+$det = $a*$d-$b*$c;
+
+$e = Fraction(non_zero_random(-5,5,1), random(1,1,1));
+do {$f = Fraction(non_zero_random(-5,5,1), random(1,1,1));} until ($f != $e);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,0,1), random(0,0,1), random(1,1,1));
+($xside2,$yside2,$cside2) = (random(0,0,1), random(0,0,1), random(1,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub20.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub20.pg
new file mode 100644
index 0000000000..8d76b6c2ae
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub20.pg
@@ -0,0 +1,171 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -integer solutions
+# -one of the coefficients is -1, none of the others are 1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$b = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$c = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$d = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+
+$one = random(0,3,1);
+if ($one == 0) {if ($xside1) {$a = Fraction(1,1)} else {$a = Fraction(-1,1)}};
+if ($one == 1) {if ($yside1) {$b = Fraction(1,1)} else {$b = Fraction(-1,1)}};
+if ($one == 2) {if ($xside2) {$c = Fraction(1,1)} else {$c = Fraction(-1,1)}};
+if ($one == 3) {if ($yside2) {$d = Fraction(1,1)} else {$d = Fraction(-1,1)}};
+# Above means one coefficient will be 1, and substitution method will be used
+
+$det = $a*$d-$b*$c;
+
+$e = $det*random(-3,3,1);
+$f = $det*random(-3,3,1);
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+
+
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub25.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub25.pg
new file mode 100644
index 0000000000..ec1e313773
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub25.pg
@@ -0,0 +1,169 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -solutions can be fractions
+# -one coefficient is 0
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$b = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$c = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$d = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+
+$zero = random(0,3,1);
+if ($zero == 0) {$a = Fraction(0,1)};
+if ($zero == 1) {$b = Fraction(0,1)};
+if ($zero == 2) {$c = Fraction(0,1)};
+if ($zero == 3) {$d = Fraction(0,1)};
+# Above means one coefficient will be 0, so one variable is quickly solved for
+
+$e = Fraction(random(-5,5,1), random(1,1,1));
+$f = Fraction(random(-5,5,1), random(1,1,1));
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+
+
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub30.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub30.pg
new file mode 100644
index 0000000000..1ad0f44d92
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub30.pg
@@ -0,0 +1,170 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -solutions can be fractions
+# -no coefficient is 0
+# -one coefficient is 1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$b = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$c = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$d = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+
+$one = random(0,3,1);
+if ($one == 0) {if ($xside1) {$a = Fraction(-1,1)} else {$a = Fraction(1,1)}};
+if ($one == 1) {if ($yside1) {$b = Fraction(-1,1)} else {$b = Fraction(1,1)}};
+if ($one == 2) {if ($xside2) {$c = Fraction(-1,1)} else {$c = Fraction(1,1)}};
+if ($one == 3) {if ($yside2) {$d = Fraction(-1,1)} else {$d = Fraction(1,1)}};
+# Above means one coefficient will be 1, and substitution method will be used
+
+$e = Fraction(random(-5,5,1), random(1,1,1));
+$f = Fraction(random(-5,5,1), random(1,1,1));
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+
+
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub35.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub35.pg
new file mode 100644
index 0000000000..9b5d76b991
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub35.pg
@@ -0,0 +1,170 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -integer coefficients
+# -solutions can be fractions
+# -no coefficient is 0
+# -one coefficient is -1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$b = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$c = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+$d = Fraction(random(2,5,1)*random(-1,1,2), random(1,1,1));
+
+$one = random(0,3,1);
+if ($one == 0) {if ($xside1) {$a = Fraction(1,1)} else {$a = Fraction(-1,1)}};
+if ($one == 1) {if ($yside1) {$b = Fraction(1,1)} else {$b = Fraction(-1,1)}};
+if ($one == 2) {if ($xside2) {$c = Fraction(1,1)} else {$c = Fraction(-1,1)}};
+if ($one == 3) {if ($yside2) {$d = Fraction(1,1)} else {$d = Fraction(-1,1)}};
+# Above means one coefficient will be 1, and substitution method will be used
+
+$e = Fraction(random(-5,5,1), random(1,1,1));
+$f = Fraction(random(-5,5,1), random(1,1,1));
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+
+
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub40.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub40.pg
new file mode 100644
index 0000000000..60daad767e
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub40.pg
@@ -0,0 +1,165 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -fraction coefficients
+# -exactly one of the four coefficients is 0
+# -its partner coefficient is +- 1
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+
+$zero = random(0,3,1);
+if ($zero == 0) {$a = Fraction(0,1), $b = Fraction(1,1)};
+if ($zero == 1) {$b = Fraction(0,1), $a = Fraction(1,1)};
+if ($zero == 2) {$c = Fraction(0,1), $d = Fraction(1,1)};
+if ($zero == 3) {$d = Fraction(0,1), $c = Fraction(1,1)};
+# Above means one coefficient will be 0, and one variable can be solved for immediately
+
+$e = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$f = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub45.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub45.pg
new file mode 100644
index 0000000000..b0a2a98670
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquationsSub45.pg
@@ -0,0 +1,163 @@
+# WeBWorK problem written by Alex Jordan, 2013
+# Portland Community College
+#
+# Solve a system with
+# -fraction coefficients
+# -exactly one of the four coefficients is 0
+#
+# Last updated: Jordan 9/9/13;
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','integer')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "parserAssignment.pl",
+ "SystemsOfLinearEquationsProblemPCC.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+
+# What will the variables be?
+if (list_random(0,1))
+ {$x = "x"; $y = "y";}
+ else {
+ do {$x = RandomVariableName(); $y = RandomVariableName()}
+ until ($x ne $y
+ and ($x ne "y" and $y ne "x"));
+ # it would be bad to swap x and y for point answers.
+ };
+
+#What will the coefficients be?
+#Some helpful linear algebra:
+#Integer solutions <== det[[a,b],[c,d]] divides both e and f
+#Unique solution <==> det[[a,b],[c,d]] != 0
+#No solutions <==> det[[a,b],[c,d]] == 0 and c*e != a*f
+Context("Fraction");
+Parser::Number::NoDecimals;
+Context()->noreduce('(-x)-y','-(x)+y');
+do {
+$a = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$b = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$c = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$d = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+
+$zero = random(0,3,1);
+if ($zero == 0) {$a = Fraction(0,1)};
+if ($zero == 1) {$b = Fraction(0,1)};
+if ($zero == 2) {$c = Fraction(0,1)};
+if ($zero == 3) {$d = Fraction(0,1)};
+# Above means one coefficient will be 0, and a variable can be solved for immediately
+
+$e = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+$f = Fraction(non_zero_random(-5,5,1), random(1,5,1));
+}
+until (!($a == Fraction(0,1) and $b == Fraction(0,1)) and !($c == Fraction(0,1) and $d == Fraction(0,1)));
+
+
+
+
+#0 means that term is on the left; 1 on the right.
+($xside1,$yside1,$cside1) = (random(0,1,1), random(0,1,1), random(0,1,1));
+($xside2,$yside2,$cside2) = (random(0,1,1), random(0,1,1), random(0,1,1));
+
+
+SystemOfLinearEquationsProblemSetup();
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{
+ \begin{aligned}
+ [$left1] & = [$right1]\\
+ [$left2] & = [$right2]
+ \end{aligned}
+ \right.
+ ```]
+
+[$EnterAnswers]**
+
+ [_____________________________]
+
+END_PGML
+##############################################
+
+SystemOfLinearEquationsProblemSolutionSetup();
+
+BEGIN_PGML_SOLUTION
+
+[$Attack]**
+
+END_PGML_SOLUTION
+
+
+Context("LinearSystems");
+parser::Assignment->Allow;
+Context()->variables->are($x=>'Real', $y=>'Real', constant=>'Real');
+
+if ($determinant != Fraction(0,1)) {
+ $ans = Compute("$x = $xsol, $y = $ysol");
+ $pointAns = Compute("($xsol,$ysol)");
+ }
+ elsif ($c*$e != $a*$f) {
+ $ans = Compute("no solutions");
+ }
+ else {
+ $ans = Compute("infinitely many solutions");
+ };
+
+
+
+
+#If there is a unique solution
+if ($determinant != Fraction(0,1)) {
+ANS($ans->cmp(
+ entry_type => "a solution",
+ checker => ~~&solutionChecker,
+ extra => ~~&extraChecker
+)
+->withPostFilter(AnswerHints(
+ ["$x=$xsol","$y=$ysol"] => "A solution would give values for both $x and $y",
+ ["$xsol,$ysol","$ysol,$xsol"] => ["These are the right values, but you should write $x = $US$US$US and $y= $US$US$US",replaceMessage=>1],
+))
+
+->withPostFilter( ~~&postFilterForPoints
+)
+);
+}
+
+
+#otherwise
+else {
+ANS($ans->cmp(typeMatch=>Compute("$x=0,$y=0")));
+};
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquations70.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquations70.pg
index eec4e8120b..a15c860c54 100644
--- a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquations70.pg
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquations70.pg
@@ -88,9 +88,9 @@ $d=1;
# set up $a, $b, $c, $d
while($a*$d -$c*$b == 0){
$a=random(1,5,1)*random(-1,1,2);
-$b=random(1,5,1)*random(-1,1,2);;
-$c=random(1,5,1)*random(-1,1,2);;
-$d=random(1,5,1)*random(-1,1,2);;
+$b=random(1,5,1)*random(-1,1,2);
+$c=random(1,5,1)*random(-1,1,2);
+$d=random(1,5,1)*random(-1,1,2);
}
$topLeft = Formula("$a*x+$b*y")->reduce;
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub70.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub70.pg
new file mode 100644
index 0000000000..0749e94b7d
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub70.pg
@@ -0,0 +1,399 @@
+# WeBWorK problem written by Chris Hughes, 2013
+# Portland Community College
+#
+# Solve the system of linear equations
+# a x + b y = e
+# c x + d y = f
+# where a, b, c, d are integer values on the interval [1,5]
+#
+# The solution is (x,y) where x and y are both fractions with numerators
+# and denominators on the interval [-10,10].
+#
+# Last updated: Hughes 7/30/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','fraction')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "contextFraction.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction-NoDecimals");
+ Context()->{precedence}{Fraction} = 2.5;
+ Context()->parens->set('(' => {type => "Point"} );
+ Context()->flags->set(reduceFractions=>0,allowMixedNumbers=>1,requirePureFractions=>1);
+Context()->{error}{msg}{"Mixed numbers are not allowed; you must use a pure fraction"}
+ = "Mixed numbers are not allowed; you must use a pure fraction, for example you should enter 5/4 and not 1 1/4";
+
+# globally set the reductions one time
+# so that we can then merely call ->reduce;
+Context()->noreduce('(-x)-y','(-x)+y');
+Context()->variables->are(x=>'Real',y=>'Real');
+
+# add solution strings to context- this means that if
+# students enter these (and they are not correct), then
+# WW will not give a Context warning
+Context()->strings->add("no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "infinite number of solutions"=>{},
+ "infinite"=>{alias=>'infinite number of solutions'},
+ "infinite solutions"=>{alias=>'infinite number of solutions'});
+
+# the solution
+$xnumerator = random(2,10,2); # even number
+$xdenominator = random(3,11,2); # odd number
+$ynumerator = random(3,11,2); # odd number
+$ydenominator = random(2,10,2); # even number
+
+$x = Fraction($xnumerator,$xdenominator)->reduce;
+$y = Fraction($ynumerator,$ydenominator)->reduce;
+$ans = List("($x,$y)");
+
+# set up the system
+# a x + b y =e
+# c x + d y = f
+# need to make sure that
+# ad - bc != 0
+
+# initialize the variables
+$a=1;
+$b=1;
+$c=1;
+$d=1;
+
+# set up $a, $b, $c, $d
+while($a*$d -$c*$b == 0){
+$a=random(2,5,1)*random(-1,1,2);
+$b=random(2,5,1)*random(-1,1,2);;
+$c=random(2,5,1)*random(-1,1,2);;
+$d=random(2,5,1)*random(-1,1,2);;
+#make sure one of them is 1
+if (list_random(1,0,0,0)) {$a = 1;}
+elsif (list_random(1,0,0)) {$b = 1;}
+elsif (list_random(1,0)) {$c = 1}
+else {$d = 1};
+}
+
+$topLeft = Formula("$a*x+$b*y")->reduce;
+$e = $topLeft->eval(x=>$x,y=>$y)->reduce;
+
+$botLeft = Formula("$c*x+$d*y")->reduce;
+$f = $botLeft->eval(x=>$x,y=>$y)->reduce;
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{\begin{aligned}
+ [$topLeft] & = [$e] \\
+ [$botLeft] & = [$f]
+\end{aligned}\right.```]
+
+[@KeyboardInstructions('If there is one solution, enter it as an ordered pair. If there is no solution, enter [|no solution|]*. If there is an infinite number of solutions, enter [|infinite number of solutions|]*.')@]**
+
+[_________________________________]
+
+END_PGML
+
+$showPartialCorrectAnswers = 1;
+ANS($ans->cmp(
+ checker => sub {
+ my ($correct, $student, $ans, $nth, $value) = @_;
+ $student->context->setError("Your $nth $value contains an unreduced fraction","",undef,undef,$Value::CMP_WARNING)
+ if $student->{notReduced};
+ return 0 unless $correct == $student;
+ my $reduced = 1;
+ foreach $x ($student->value) {
+ if (Value::classMatch($x,'Fraction') && !$x->isReduced) {
+ $reduced = 0;
+ break;
+ }
+ }
+ $student->{notReduced} = 1 unless $reduced || $ans->{isPreview};
+ return $reduced;
+ }
+ )->withPostFilter(AnswerHints(
+ ["infinity"] => ["Infinity doesn't make sense here- do you mean infinite number of solutions?",replaceMessage=>1],
+)));
+
+$commonConclusion = "The solution to the system is [`$ans`]. It is left as an exercise to check. Please also note that you may have solved this problem a different way.";
+
+if($a==-$c)
+{
+ # ax + by = e
+ # -ax + dy = f
+ # should be solved by addition
+ $lhs=Formula("$b*y+$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*$y")->reduce;
+BEGIN_PGML_SOLUTION
+* Let's add the two equations, which will cancel the terms involving [`x`] and give [`[$lhs]=[$e]+[$f]`].
+* This gives [`y=[$y]`].
+* We find [`x`] using either equation - let's use the first one: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==-$d)
+{
+ # ax + by = e
+ # cx + -by = f
+ # should be solved by addition
+ $lhs=Formula("$a*x+$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+($b)*(y)")->reduce;
+BEGIN_PGML_SOLUTION
+* Let's add the two equations, which will cancel the terms involving [`y`] and give [`[$lhs]=[$e]+([$f])`].
+* This gives [`x=[$x]`].
+* We find [`y`] using either equation - let's use the first one: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($a==1 and $a!=$c and $b!=$d)
+{
+ # x + by = e should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$e-$b*y")->reduce;
+ $lhs=Formula("$c*$e-$c*$b*y+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+* This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using the _first_ equation:
+
+ [`\begin{aligned}
+ x&=[$e]-([$b])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==1 and $b!=$d and $a!=$c)
+{
+ # ax + y = e should be solved for y
+ # provided that $b and $d are not equal- in this case we should use subtraction.
+ $lhs=Formula("$c*x+$d*$e-$d*$a*x")->reduce;
+ $rhs=Formula("$e-$a*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$f]`] so [`x=[$x]`]
+* Now that we have [`x`], we find [`y`] using the first equation:
+
+ [`
+ \begin{aligned}
+ y&=[$e]-([$a])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==1 and $a!=$c and $b!=$d)
+{
+ # x + dy = f should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$f-$d*y")->reduce;
+ $lhs=Formula("$a*$f-$a*$d*y+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+* This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using the _second_ equation:
+
+ [`
+ \begin{aligned}
+ x&=[$f]-([$d])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==1 and $d!=$b and $a!=$c)
+{
+ # cx + y = f should be solved for y
+ $rhs=Formula("$f-$c*x")->reduce;
+ $lhs=Formula("$a*x+$b*$f-$b*$c*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+* Now that we have [`x`], we find [`y`] using the _second_ equation:
+
+ [`
+ \begin{aligned}
+ y&=[$f]-([$c])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($a==-1 and $a != $c and $b!=$d)
+{
+ # - x + by = e should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$b*y-$e")->reduce;
+ $lhs=Formula("$c*$b*y-$c*$e+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+* This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+* We find [`x`] using the _first_ equation:
+
+ [`\begin{aligned}
+ x&=([$b])\cdot([$y])-([$e])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==-1 and $b!=$d and $a!=$c)
+{
+ # ax - y = e should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$a*x-$e")->reduce;
+ $lhs=Formula("$c*x+$d*$a*x-$d*$e")->reduce;
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$f]`] so [`x=[$x]`].
+* We find [`y`] using the first equation:
+
+ [`\begin{aligned}
+ y&=([$a])\cdot([$x])-([$e]) \\
+ &=[$y]\end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==-1 and $a!=$c and $b!=$d)
+{
+ # - x + dy = f should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$d*y-$f")->reduce;
+ $lhs=Formula("$a*$d*y-$a*$f+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+* This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+* We find [`x`] using the _second_ equation:
+
+ [`\begin{aligned}
+ x&=([$d])\cdot([$y])-([$f])\\
+ &=[$x]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==-1 and $b!=$d and $a!=$c)
+{
+ # cx - y = f should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$c*x-$f")->reduce;
+ $lhs=Formula("$a*x+$b*$c*x-$b*$f")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+* We find [`y`] using the _second_ equation:
+
+ [`\begin{aligned}
+ y&=([$c])\cdot([$x])-([$f])\\
+ &=[$y]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+else
+{
+ if($a==$c)
+ {
+ # ax + by = e
+ # ax + dy = f
+ # should be solved using subtraction
+ $lhs=Formula("$b*y-$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*($y)")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms in involving [`x`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ elsif($b==$d)
+ {
+ # ax + by = e
+ # cx + by = f
+ # should be solved using subtraction
+ $lhs=Formula("$a*x-$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms in involving [`y`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`x=[$x]`].
+* Now that we have [`x`], we find [`y`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ else
+ {
+ # otherwise use elimination
+
+ # multiply the first equation by $c
+ $topleft=Formula("$c*$a*x+$c*$b*y")->reduce;
+ $topright=$c*$e;
+
+ # multiply the second equation by $a
+ $bottomleft=Formula("$a*$c*x+$a*$d*y")->reduce;
+ $bottomright=$a*$f;
+
+ $lhs=Formula("$c*$b*y-$a*$d*y")->reduce;
+ $rhs=$c*$e-$a*$f;
+
+ # put them together
+BEGIN_PGML_SOLUTION
+* Let's multiply the _first_ equation by [$c] and the _second_ equation by [$a]
+
+ [`\begin{aligned}
+ [$topleft] &= [$topright]\\
+ [$bottomleft] &=[$bottomright]
+ \end{aligned}`]
+* Subtracting these two equations gives [`[$lhs]=[$rhs]`], so [`y=[$y]`].
+
+* Now that we have [`y`], we can use either equation to find [`x`]; let's use the first one:
+
+ [`[$a]*x+([$b])\cdot([$y])=[$e]`]
+
+ so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+}
+
+##############################################
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub80.pg b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub80.pg
new file mode 100644
index 0000000000..95d1149be6
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/systemsOfEquationsSub80.pg
@@ -0,0 +1,394 @@
+# WeBWorK problem written by Chris Hughes, 2013
+# Portland Community College
+#
+# Solve the system of linear equations
+# a x + b y = e
+# c x + d y = f
+# where a, b, c, d are fractions.
+#
+# The solution is (x,y) where x and y are both fractions with numerators
+# and denominators on the interval [-10,10].
+#
+# Last updated: Hughes 7/30/13
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Lines', 'Equations')
+## KEYWORDS('linear','equation','solve','system','fraction')
+## DBCCSS('8.EE.8','A-REI.3','A-REI.5')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "answerHints.pl",
+ "contextFraction.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Fraction-NoDecimals");
+ Context()->{precedence}{Fraction} = 2.5;
+ Context()->parens->set('(' => {type => "Point"} );
+ Context()->flags->set(reduceFractions=>0,allowMixedNumbers=>1,requirePureFractions=>1);
+Context()->{error}{msg}{"Mixed numbers are not allowed; you must use a pure fraction"}
+ = "Mixed numbers are not allowed; you must use a pure fraction, for example you should enter 5/4 and not 1 1/4";
+
+# globally set the reductions one time
+# so that we can then merely call ->reduce;
+Context()->noreduce('(-x)-y','(-x)+y');
+Context()->variables->are(x=>'Real',y=>'Real');
+
+# add solution strings to context- this means that if
+# students enter these (and they are not correct), then
+# WW will not give a Context warning
+Context()->strings->add("no solution"=>{},
+ "no solutions"=>{alias=>'no solution'},
+ "none"=>{alias=>'no solution'},
+ "infinite number of solutions"=>{},
+ "infinite"=>{alias=>'infinite number of solutions'},
+ "infinite solutions"=>{alias=>'infinite number of solutions'});
+
+# the solution
+$xnumerator = random(2,10,2); # even number
+$xdenominator = random(3,11,2); # odd number
+$ynumerator = random(3,11,2); # odd number
+$ydenominator = random(2,10,2); # even number
+
+$x = Fraction($xnumerator,$xdenominator)->reduce;
+$y = Fraction($ynumerator,$ydenominator)->reduce;
+$ans = List("($x,$y)");
+
+# set up the system
+# a x + b y =e
+# c x + d y = f
+# need to make sure that
+# ad - bc != 0
+
+# initialize the variables
+$a=1;
+$b=1;
+$c=1;
+$d=1;
+
+# set up $a, $b, $c, $d
+while(1/$a*1/$d -1/$c*1/$b == 0){
+$a=Fraction(1,random(2,5,1)*random(-1,1,2));
+$b=Fraction(1,random(2,5,1)*random(-1,1,2));
+$c=Fraction(1,random(2,5,1)*random(-1,1,2));
+$d=Fraction(1,random(2,5,1)*random(-1,1,2));
+}
+
+$topLeft = Formula("$a*x+$b*y")->reduce;
+$e = $topLeft->eval(x=>$x,y=>$y)->reduce;
+
+$botLeft = Formula("$c*x+$d*y")->reduce;
+$f = $botLeft->eval(x=>$x,y=>$y)->reduce;
+
+
+##############################################
+TEXT(beginproblem());
+BEGIN_PGML
+Solve the following system of equations.
+
+[```\left\{\begin{aligned}
+ [$topLeft] & = [$e] \\
+ [$botLeft] & = [$f]
+\end{aligned}\right.```]
+
+[@KeyboardInstructions('If there is one solution, enter it as an ordered pair. If there is no solution, enter [|no solution|]*. If there is an infinite number of solutions, enter [|infinite number of solutions|]*.')@]**
+
+[_________________________________]
+
+END_PGML
+
+$showPartialCorrectAnswers = 1;
+ANS($ans->cmp(
+ checker => sub {
+ my ($correct, $student, $ans, $nth, $value) = @_;
+ $student->context->setError("Your $nth $value contains an unreduced fraction","",undef,undef,$Value::CMP_WARNING)
+ if $student->{notReduced};
+ return 0 unless $correct == $student;
+ my $reduced = 1;
+ foreach $x ($student->value) {
+ if (Value::classMatch($x,'Fraction') && !$x->isReduced) {
+ $reduced = 0;
+ break;
+ }
+ }
+ $student->{notReduced} = 1 unless $reduced || $ans->{isPreview};
+ return $reduced;
+ }
+ )->withPostFilter(AnswerHints(
+ ["infinity"] => ["Infinity doesn't make sense here- do you mean infinite number of solutions?",replaceMessage=>1],
+)));
+
+$commonConclusion = "The solution to the system is [`$ans`]. It is left as an exercise to check. Please also note that you may have solved this problem a different way.";
+
+if($a==-$c)
+{
+ # ax + by = e
+ # -ax + dy = f
+ # should be solved by addition
+ $lhs=Formula("$b*y+$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*$y")->reduce;
+BEGIN_PGML_SOLUTION
+* Let's add the two equations, which will cancel the terms involving [`x`] and give [`[$lhs]=[$e]+[$f]`].
+* This gives [`y=[$y]`].
+* We find [`x`] using either equation - let's use the first one: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==-$d)
+{
+ # ax + by = e
+ # cx + -by = f
+ # should be solved by addition
+ $lhs=Formula("$a*x+$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+($b)*(y)")->reduce;
+BEGIN_PGML_SOLUTION
+* Let's add the two equations, which will cancel the terms involving [`y`] and give [`[$lhs]=[$e]+([$f])`].
+* This gives [`x=[$x]`].
+* We find [`y`] using either equation - let's use the first one: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($a==1 and $a!=$c and $b!=$d)
+{
+ # x + by = e should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$e-$b*y")->reduce;
+ $lhs=Formula("$c*$e-$c*$b*y+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+* This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using the _first_ equation:
+
+ [`\begin{aligned}
+ x&=[$e]-([$b])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==1 and $b!=$d and $a!=$c)
+{
+ # ax + y = e should be solved for y
+ # provided that $b and $d are not equal- in this case we should use subtraction.
+ $lhs=Formula("$c*x+$d*$e-$d*$a*x")->reduce;
+ $rhs=Formula("$e-$a*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$f]`] so [`x=[$x]`]
+* Now that we have [`x`], we find [`y`] using the first equation:
+
+ [`
+ \begin{aligned}
+ y&=[$e]-([$a])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==1 and $a!=$c and $b!=$d)
+{
+ # x + dy = f should be solved for x
+ # provided that $a and $c are not equal- in this case we should use subtraction.
+ $rhs=Formula("$f-$d*y")->reduce;
+ $lhs=Formula("$a*$f-$a*$d*y+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+* This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using the _second_ equation:
+
+ [`
+ \begin{aligned}
+ x&=[$f]-([$d])\cdot([$y])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==1 and $d!=$b and $a!=$c)
+{
+ # cx + y = f should be solved for y
+ $rhs=Formula("$f-$c*x")->reduce;
+ $lhs=Formula("$a*x+$b*$f-$b*$c*x")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+* Now that we have [`x`], we find [`y`] using the _second_ equation:
+
+ [`
+ \begin{aligned}
+ y&=[$f]-([$c])\cdot([$x])\\
+ &=[$y]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($a==-1 and $a != $c and $b!=$d)
+{
+ # - x + by = e should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$b*y-$e")->reduce;
+ $lhs=Formula("$c*$b*y-$c*$e+$d*y")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`x=[$rhs]`], which we substitute into the _second_
+equation and solve for [`y`].
+* This gives [`[$lhs]=[$f]`] so [`y=[$y]`].
+* We find [`x`] using the _first_ equation:
+
+ [`\begin{aligned}
+ x&=([$b])\cdot([$y])-([$e])\\
+ &=[$x]
+ \end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($b==-1 and $b!=$d and $a!=$c)
+{
+ # ax - y = e should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$a*x-$e")->reduce;
+ $lhs=Formula("$c*x+$d*$a*x-$d*$e")->reduce;
+BEGIN_PGML_SOLUTION
+* From the first equation we see that [`y=[$rhs]`], which we substitute into the _second_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$f]`] so [`x=[$x]`].
+* We find [`y`] using the first equation:
+
+ [`\begin{aligned}
+ y&=([$a])\cdot([$x])-([$e]) \\
+ &=[$y]\end{aligned}`]
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($c==-1 and $a!=$c and $b!=$d)
+{
+ # - x + dy = f should be solved for x
+ # unless $a and $c are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$d*y-$f")->reduce;
+ $lhs=Formula("$a*$d*y-$a*$f+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`x=[$rhs]`], which we substitute into the _first_ equation and solve for [`y`].
+* This gives [`[$lhs]=[$e]`] so [`y=[$y]`].
+* We find [`x`] using the _second_ equation:
+
+ [`\begin{aligned}
+ x&=([$d])\cdot([$y])-([$f])\\
+ &=[$x]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+elsif($d==-1 and $b!=$d and $a!=$c)
+{
+ # cx - y = f should be solved for y
+ # unless $b and $d are the same, in which case
+ # subtraction should be used
+ $rhs=Formula("$c*x-$f")->reduce;
+ $lhs=Formula("$a*x+$b*$c*x-$b*$f")->reduce;
+
+BEGIN_PGML_SOLUTION
+* From the second equation we see that [`y=[$rhs]`], which we substitute into the _first_ equation and solve for [`x`].
+* This gives [`[$lhs]=[$e]`] so [`x=[$x]`].
+* We find [`y`] using the _second_ equation:
+
+ [`\begin{aligned}
+ y&=([$c])\cdot([$x])-([$f])\\
+ &=[$y]
+ \end{aligned}`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+}
+else
+{
+ if($a==$c)
+ {
+ # ax + by = e
+ # ax + dy = f
+ # should be solved using subtraction
+ $lhs=Formula("$b*y-$d*y")->reduce;
+ $lhs1=Formula("$a*x+$b*($y)")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms in involving [`x`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`y=[$y]`].
+* Now that we have [`y`], we find [`x`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ elsif($b==$d)
+ {
+ # ax + by = e
+ # cx + by = f
+ # should be solved using subtraction
+ $lhs=Formula("$a*x-$c*x")->reduce;
+ $lhs1=Formula("$a*($x)+$b*y")->reduce;
+BEGIN_PGML_SOLUTION
+* We subtract the two equations, which will cancel the terms in involving [`y`] and give [`[$lhs]=[$e]-([$f])`].
+* This gives [`x=[$x]`].
+* Now that we have [`x`], we find [`y`] using either equation - let's use the first: [`[$lhs1]=[$e]`], so [`y=[$y]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+ else
+ {
+ # otherwise use elimination
+
+ # multiply the first equation by $c
+ $topleft=Formula("$c*$a*x+$c*$b*y")->reduce;
+ $topright=$c*$e;
+
+ # multiply the second equation by $a
+ $bottomleft=Formula("$a*$c*x+$a*$d*y")->reduce;
+ $bottomright=$a*$f;
+
+ $lhs=Formula("$c*$b*y-$a*$d*y")->reduce;
+ $rhs=$c*$e-$a*$f;
+
+ # put them together
+BEGIN_PGML_SOLUTION
+* Let's multiply the _first_ equation by [$c] and the _second_ equation by [$a]
+
+ [`\begin{aligned}
+ [$topleft] &= [$topright]\\
+ [$bottomleft] &=[$bottomright]
+ \end{aligned}`]
+* Subtracting these two equations gives [`[$lhs]=[$rhs]`], so [`y=[$y]`].
+
+* Now that we have [`y`], we can use either equation to find [`x`]; let's use the first one:
+
+ [`[$a]*x+([$b])\cdot([$y])=[$e]`]
+
+ so [`x=[$x]`].
+* [$commonConclusion]**
+END_PGML_SOLUTION
+ }
+}
+
+##############################################
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/Cofunction10.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/Cofunction10.pg
new file mode 100644
index 0000000000..dc028bd092
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/Cofunction10.pg
@@ -0,0 +1,184 @@
+# DESCRIPTION
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Precalculus')
+## DBchapter('Trigonometry')
+## DBsection('')
+## KEYWORDS('trigonometry','sine','cosine','tangent','right triangle')
+## DBCCSS('4.MD.3')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Carl Yao')
+## Institution('PCC')
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "contextFraction.pl",
+ "PGML.pl",
+ "PGchoicemacros.pl",
+ "parserPopUp.pl",
+ "PGgraphmacros.pl",
+ "PGcourse.pl"
+);
+
+TEXT(beginproblem());
+
+sub output {
+ my $n = shift;
+ if ($n==1) {return "";}
+ elsif ($n==-1) {return "-";}
+ else {return $n;}
+}
+
+Context("Fraction");
+
+do {
+ $den = list_random(3,5,6,7,8,9);
+ $num = random(1,int($den/2),1);
+} until gcd($num,$den)==1;
+
+@angle = ();
+$angle[0] = Fraction($num,$den);
+$angle[1] = (Fraction(1,2)-$angle[0])->reduce;
+
+@num = ();
+@den = ();
+($num[0],$den[0]) = $angle[0]->value;
+($num[1],$den[1]) = $angle[1]->value;
+
+@numShow = ();
+for my $i (0..1) {
+ $numShow[$i] = &output($num[$i]);
+}
+
+@values = (
+ ["\sin \left( \frac{$numShow[0]\pi}{$den[0]} \right)",
+ "\cos \left( \frac{$numShow[1]\pi}{$den[1]} \right)"],
+ ["\sin \left( \frac{$numShow[1]\pi}{$den[1]} \right)",
+ "\cos \left( \frac{$numShow[0]\pi}{$den[0]} \right)"],
+ ["\tan \left( \frac{$numShow[0]\pi}{$den[0]} \right)",
+ "\cot \left( \frac{$numShow[1]\pi}{$den[1]} \right)"],
+ ["\tan \left( \frac{$numShow[1]\pi}{$den[1]} \right)",
+ "\cot \left( \frac{$numShow[0]\pi}{$den[0]} \right)"],
+ ["\sec \left( \frac{$numShow[0]\pi}{$den[0]} \right)",
+ "\csc \left( \frac{$numShow[1]\pi}{$den[1]} \right)"],
+ ["\sec \left( \frac{$numShow[1]\pi}{$den[1]} \right)",
+ "\csc \left( \frac{$numShow[0]\pi}{$den[0]} \right)"],
+);
+
+$in0 = random(0,3,1);
+$in1 = random(0,1,1);
+
+$mc = new_checkbox_multiple_choice();
+
+$mc -> qa (
+"Using your knowledge of cofunctions, find equivalent expressions of \( $values[$in0][$in1] \). There may be more than one correct answer.",
+ "\( $values[$in0][($in1+1)%2] \) $BR",
+);
+
+$mc -> extra(
+ "\( $values[($in0+1)%4][0] \) $BR",
+ "\( $values[($in0+1)%4][1] \) $BR",
+ "\( $values[($in0+2)%4][0] \) $BR",
+ "\( $values[($in0+2)%4][1] \) $BR",
+ "\( $values[($in0+3)%4][0] \) $BR",
+ "\( $values[($in0+3)%4][1] \) $BR",
+);
+
+
+$graph = init_graph(0,0,5,5);
+$graph->lb('reset');
+
+$graph->moveTo(1,1);
+$graph->lineTo(4, 1, red, 2);
+$graph->lineTo(4, 3, red, 2);
+$graph->lineTo(1, 1, red, 2);
+
+$graph->moveTo(4, 1.2);
+$graph->lineTo(4-0.2, 1.2, red, 2);
+$graph->lineTo(4-0.2, 1, red, 2);
+
+$graph->lb(new Label(1,1,"A",'red',"right","top",large));
+$graph->lb(new Label(4,3,"B",'red',"left","bottom",large));
+$graph->lb(new Label(4,1,"C",'red',"left","top",large));
+
+$graph->lb(new Label(4,2,"a",'red',"left","middle",large));
+$graph->lb(new Label(2.5,1,"b",'red',"center","top",large));
+$graph->lb(new Label(2.5,2,"c",'red',"right","bottom",large));
+
+$alt = "This is a right triangle ABC, with C being the right angle. Angle A faces side a, Angle B faces side b, and Angle C faces side c.";
+
+$fig0 = image(insertGraph($graph),'width'=>400,'height'=>400,'tex_size'=>700, extra_html_tags => "alt = '$alt' title = '$alt' ");
+
+
+
+##############################################
+
+BEGIN_PGML
+
+[@ $mc -> print_q() @]*
+
+[@ $mc -> print_a() @]*
+
+END_PGML
+
+##############################################
+
+install_problem_grader(~~&std_problem_grader);
+
+$showPartialCorrectAnswers = 0;
+
+ANS( checkbox_cmp( $mc->correct_ans() ) );
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+>>[@ $fig0 @]*<<
+
+>> (To enlarge, click on graph, then press Ctrl+ or Command+) <<
+
+In this right triangle, note that:
+
+ [``\begin{aligned}
+ \sin(A) &= \frac{\text{opposite}}{\text{hypotenuse}} = \frac{a}{c} \\
+ \cos(B) &= \frac{\text{adjacent}}{\text{hypotenuse}} = \frac{a}{c}
+ \end{aligned}``]
+
+Because [`B=\frac{\pi}{2}-A`], we have:
+
+ [`` \sin(A) = \cos \left( \frac{\pi}{2}-A \right), \cos(A) = \sin \left( \frac{\pi}{2}-A \right)``]
+
+Similarly:
+
+ [``\begin{aligned}
+ \tan(A) &= \cot \left( \frac{\pi}{2}-A \right), \cot(A) = \tan \left( \frac{\pi}{2}-A \right) \\
+ \sec(A) &= \csc \left( \frac{\pi}{2}-A \right), \csc(A) = \sec \left( \frac{\pi}{2}-A \right)
+ \end{aligned}``]
+
+Because of such relationships,
+
+* [`y=\sin(x)`] and [`y=\cos(x)`] are cofunctions.
+* [`y=\tan(x)`] and [`y=\cot(x)`] are cofunctions.
+* [`y=\sec(x)`] and [`y=\csc(x)`] are cofunctions.
+
+In this problem, since [` \frac{[$numShow[0]]\pi}{[$den[0]]} = \frac{\pi}{2}-\frac{[$numShow[1]]\pi}{[$den[1]]} `], we have:
+
+ [`` [$values[$in0][$in1]] = [$values[$in0][($in1+1)%2]] ``]
+
+The correct answer is [@ $mc->correct_ans() @]*.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig10.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig10.pg
index f00e06d777..42d4246a56 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig10.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig10.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the length of the side opposite to the right angle is marked as $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig15.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig15.pg
index 63ffa4d9de..d5868b2415 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig15.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig15.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $base; the length of the side opposite to the right angle is marked as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig20.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig20.pg
index 31df6416f5..3ff69cb591 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig20.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig20.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side adjacent to the given acute angle is marked as x (unknown); the length of the side opposite to the right angle is marked as $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig25.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig25.pg
index a45776fc40..f2de86815e 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig25.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig25.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side adjacent to the given acute angle is marked as $height; the length of the side opposite to the right angle is marked as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig30.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig30.pg
index 2ada0ad6cb..01c6fbdd02 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig30.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig30.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the length of the side adjacent to the given acute angle is marked as $height.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
@@ -187,7 +187,7 @@ BEGIN_PGML
Find the length of [`x`]. Round your answer to two decimal places if needed.
- [`x=`][___________]{$height}
+ [`x=`][___________]{$base}
END_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig35.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig35.pg
index 462b39544a..5e9026cb8f 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig35.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig35.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $base; the length of the side adjacent to the given acute angle is marked as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig40.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig40.pg
index e85921a5da..ed0b897a99 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig40.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig40.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the length of the side adjacent to the given acute angle is marked as y (unknown); the length of the side opposite to the right angle is marked as $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig50.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig50.pg
index 36e6aff8e0..692d70f2ef 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig50.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig50.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $base; the length of the side adjacent to the given acute angle is marked as x (unknown); the length of the side opposite to the right angle is marked as y (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig60.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig60.pg
index 0119e118fa..ac1e98d85b 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig60.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrig60.pg
@@ -176,7 +176,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the length of the side adjacent to the given acute angle is marked as $height; the length of the side opposite to the right angle is marked as y (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication05.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication05.pg
index e22c62e5c8..c95450da92 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication05.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication05.pg
@@ -187,7 +187,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees, and the vertex of this angle is labeled as Town A. The vertex of the acute angle at the $bPosition is labeled as Town B. The length of the side opposite to the given acute angle is marked as x (unknown); the length of the side opposite to the right angle is marked as $hypotenuseU.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication10.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication10.pg
index ef5fb90e5c..9bf6a2cd51 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication10.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication10.pg
@@ -183,7 +183,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown), and this same side is also labeled as the wall; the side adjacent to the given acute angle is labeled as the ground; the length of the side opposite to the right angle is marked as $hypotenuseU, and this side is also labeled as the ladder.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication100.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication100.pg
index b71052c01e..fbcdb35808 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication100.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication100.pg
@@ -175,7 +175,7 @@ if ($corner==0) {
$text = "The graph shows a ramp set up from a trunk to the ground. A vertical line is drawn from upper end of the ramp (touching the trunk) straight down to the ground. A horizontal line is drawn from where the ramp touches the ground toward the trunk. The ramp, the vertical line and the horizontal line form a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU; the side adjacent to the given acute angle is labeled as the ground; and the side opposite to the right angle is labeled as the ramp, and also labeled as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication110.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication110.pg
index 1128da3e1b..af48d8da93 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication110.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication110.pg
@@ -193,7 +193,7 @@ if ($corner==0) {
$text = "The graph shows an airplane flying toward an airport. A line connects the airplane to the airport. A vertical line is drawn from the airplane to the ground, and a horizontal line is drawn from the airport toward to the airplane. Those three lines form a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU; the side adjacent to the given acute angle is marked x (unknown). A dashed horizontal line is drawn from the airplane toward the airport; this line forms a $alpha-degree angle with the hypotenuse of the right triangle.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication120.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication120.pg
index 7d0c9c4662..47686be776 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication120.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication120.pg
@@ -213,7 +213,7 @@ if ($corner==0) {
$text = "The graph shows a vertical line, representing a building. The bottom of the building is marked as C; the bottom of the second storey is marked as B; the top of the second storey is marked as A. There is an observation point, marked as D, on the ground $heightU from the bottom of the building (point C). A dashed line connects points D and B, and another dashed line connects points D and A. Angle ADC is $alpha2 degrees, and angle BDC is $alpha1 degrees. The segment AB is marked as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication130.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication130.pg
index 2c9a175485..4a34550cf5 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication130.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication130.pg
@@ -224,7 +224,7 @@ if ($corner==0) {
$text = "The graph shows an airplane (represented by point A) looking over City 1 (point D) and City 2 (point C). A vertical line is drawn from point A down to the ground, crossing the ground at point B. Angle ACB is $alpha2 degrees, while Angle ADB is $alpha1 degrees. A horizontal dashed line is draw from the airplane toward those two cities. The horizontal line forms a $alpha2 degree angle with segment AC, and forms a $alpha1 degree angle with segment AD. Segment AB is labeled as $baseU. The segment between those two cities (segment CD) is labeled as x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication140.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication140.pg
new file mode 100644
index 0000000000..6413d270be
--- /dev/null
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication140.pg
@@ -0,0 +1,163 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Law of Sines
+#
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Basic Algebra')
+## DBsection('Problem Solving with Equations')
+## KEYWORDS('area','perimeter','triangle')
+## DBCCSS('6.G.1')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGgraphmacros.pl",
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "parserNumberWithUnits.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("Numeric");
+Context()->flags->set(
+ tolerance => 0.005,
+ tolType => "absolute",
+);
+
+
+$B = random(31, 70, 1);
+$C = 90;
+$A = 180-$B-$C;
+$a = random(50, 100, 1);
+$b = $a*sin($B*pi/180)/sin($A*pi/180);
+$c = $a*sin($C*pi/180)/sin($A*pi/180);
+$h = $c*sin($B*pi/180);
+
+$xmin = 0; #The viewing window
+$base = ($c*cos($B*pi/180));
+$xmax = ($base)*240/210;
+$ymin = 0;
+$ymax = (210*$h/$base+30)*$h/(210*$h/$base);
+
+$xLabelShift = $xmax/20;
+$yLabelShift = $ymax/80;
+
+# Ax, Bx, Cx
+@x = (($xmax+$base)/2, ($xmax-$base)/2, ($xmax-$base)/2+$a);
+# Ay, By, Cy
+@y = (($ymax+$h)/2, ($ymax-$h)/2, ($ymax-$h)/2);
+
+for my $i (0..1) {
+$picture[$i] = init_graph($xmin,$ymin,$xmax,$ymax,
+ pixels=>[240,240*$ymax/$xmax]);
+
+if ($i==0) {
+ $picture[$i]->lb( new Label( ($x[1]+$x[2])/2, $y[1],"$a miles",'black','center','top','large'));
+} else {
+ $picture[$i]->lb( new Label( ($x[1]+$x[2])/2, $y[1],"c=$a miles",'black','center','top','large'));
+}
+if ($i==1) {
+ $picture[$i]->lb( new Label(($x[0]+$x[2])/2+0.5*$xLabelShift, ($y[0]+$y[1])/2,"a",'black','left','bottom','large'));
+ $picture[$i]->lb( new Label(($x[0]+$x[1])/2-$xLabelShift,($y[0]+$y[1])/2,"b",'black','right','bottom','large'));
+ $picture[$i]->lb( new Label( $x[0], $y[0],"C (boat)",'black','right','bottom','large'));
+} else {
+ $picture[$i]->lb( new Label( $x[0], $y[0],"boat",'black','center','bottom','large'));
+}
+
+$picture[$i]->lb( new Label( $x[1], $y[1],"A",'black','right','top','large'));
+$picture[$i]->lb( new Label( $x[1]+2*$xLabelShift, $y[1]+$yLabelShift,$B,'black','left','bottom','large'));
+$picture[$i]->lb( new Label( $x[2], $y[2],"B",'black','left','top','large'));
+$picture[$i]->lb( new Label( $x[2]+$xLabelShift, $y[2]+$yLabelShift,$C2,'black','left','bottom','large'));
+
+$picture[$i]->new_color("darkblue", 100,100,255);
+
+$picture[$i]->moveTo($x[0],$y[0]);
+$picture[$i]->lineTo($x[1],$y[1], darkblue,3);
+$picture[$i]->lineTo($x[2],$y[2], darkblue,3);
+$picture[$i]->lineTo($x[0],$y[0], darkblue,3);
+
+$picture[$i]->moveTo($x[2],$y[2]);
+$picture[$i]->lineTo($x[0],$y[2], darkblue,1,dashed);
+
+$xShift = $xmax/200;
+$yShift = $xShift*210/240;
+$picture[$i]->moveTo($x[0],$y[2]+10*$yShift);
+$picture[$i]->lineTo($x[0]-10*$xShift,$y[2]+10*$yShift, darkblue,3);
+$picture[$i]->lineTo($x[0]-10*$xShift,$y[2], darkblue,3);
+
+}
+
+$text[0] = "This is a right triangle with one side parallel to the ground; this side is marked as $a miles; the top point is marked as boat. The left endpoint is marked as A, and right endpoint is marked as B. The angle of elevation from A to the boat is $B degrees, and the angle of elevation from B to the boat is 90 degrees. The boat is right above Point B, making Angle B inside the triangle a right angle.";
+
+$text[1] = "This is a right triangle with one side parallel to the ground; this side is marked as c=$a miles; the top point is marked as C (boat). The left endpoint is marked as A, and right endpoint is marked as B. The angle of elevation from A to the boat is $B degrees, and the angle of elevation from B to the boat is 90 degrees. The boat is right above Point B, making Angle B inside the triangle a right angle. The side AC is marked as b, and the side BC is marked as a.";
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+>>[@ image(insertGraph( $picture[0] ), width=>240, extra_html_tags => "alt = '$text[0]' title = '$text[0]' ") @]*<<
+
+To determine how far a boat is from shore, two radar stations [`[$a]`] miles apart find the angles out to the boat, as shown in the figure. The angle of elevation from Station A to the boat is [`[$B]^{\circ}`], and angle of elevation from Station B to the boat is [`[$C]^{\circ}`].
+
+Determine the distance of the boat from Station A and Station B.
+
+The distance from the boat to Station A is [____________]{$c} miles.
+
+The distance from the boat to Station B is [____________]{$b} miles.
+
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+Assume the boat is at Point C. Assume the distance from the boat to Station A is [`b`] miles, and to Station B is [`a`] miles. Assume the distance between those two stations is [`c=[$a]`] miles.
+
+>>[@ image(insertGraph( $picture[1] ), width=>240, extra_html_tags => "alt = '$text[1]' title = '$text[1]' ") @]*<<
+
+We use trigonometry to calculate the length of [`b`]:
+
+ [``\begin{aligned}[t]
+ \cos(A) &= \frac{c}{b} \\
+ b\cdot\cos(A) &= c \\
+ b &= \frac{c}{\cos(A)} \\
+ b &= \frac{[$a]}{\cos([$B]^{\circ})} \\
+ b &= [$c]
+ \end{aligned}``]
+
+The distance from the boat to Station A is [`[$c]`] miles.
+
+And, use trigonometry to calculate the length of [`a`]:
+
+ [``\begin{aligned}[t]
+ \tan(A) &= \frac{a}{c} \\
+ c\cdot\tan(A) &= a \\
+ a &= c\cdot\tan(A) \\
+ a &= [$a]\cdot{\tan([$B]^{\circ})} \\
+ a &= [$b]
+ \end{aligned}``]
+
+The distance from the boat to Station B is [`[$b]`] miles.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication20.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication20.pg
index 14f0a322a8..a21b7b50b7 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication20.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication20.pg
@@ -183,7 +183,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown), and this same side is also labeled as the wall; the length of the side opposite to the right angle is marked as $hypotenuseU, and this side is also labeled as the ladder.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication30.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication30.pg
index 97745b3374..ea1d6ece45 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication30.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication30.pg
@@ -183,7 +183,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU, and this same side is also labeled as the pole; the side adjacent to the given acute angle is labeled as the ground; the length of the side opposite to the right angle is marked as x (unknown), and this side is also labeled as the wire.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication40.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication40.pg
index a8d207c8b0..2c96129186 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication40.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication40.pg
@@ -184,7 +184,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU, and this same side is also labeled as the pole; the side adjacent to the given acute angle is marked as x (unknown), and this same side is also labeled as the ground; the side opposite to the right angle is labeled as the wire.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication50.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication50.pg
index a7e99bd1b1..50f887546f 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication50.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication50.pg
@@ -184,7 +184,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU, and this same side is also labeled as the ground; the side adjacent to the given acute angle is marked as x (unknown), and this same side is also labeled as the wall; the side opposite to the right angle is labeled the light beam.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication60.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication60.pg
index 37b50b3d7d..827d0ab773 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication60.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication60.pg
@@ -204,7 +204,7 @@ if ($corner==0) {
$text = "The graph shows a $heightPersonU person on the ground, looking up at a flying object. A horizontal line is drawn from his eyes toward the object, and a vertical line is drawn from the object downward. Another line is connected from his eyes to the object. These three lines form a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the side adjacent to the given acute angle is marked $heightU.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication70.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication70.pg
index f9a678d4e2..db21d5ddaa 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication70.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication70.pg
@@ -187,7 +187,7 @@ if ($corner==0) {
$text = "The graph has a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU, and this same side is also labeled as the ground; the side adjacent to the given acute angle is marked as x (unknown), and this same side is also labeled as the wall; the side opposite to the right angle is labeled the light beam. From the spotlight on the wall, a dashed horizontal line is drawn, and the angle between the triangle's hypotenuse and the horizontal line is $beta degrees.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication80.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication80.pg
index 8b43aa7fb6..03982edd74 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication80.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication80.pg
@@ -193,7 +193,7 @@ if ($corner==0) {
$text = "The graph shows a lighthouse with a spotlight on its top, shining light at a boat on the sea. The lighthouse, the line connecting the boat to the lighthouse, and a line connecting the boat to the spotlight form a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as $baseU (height of the lighthouse); the side adjacent to the given acute angle is marked x (unknown). A dashed horizontal line is drawn from the spotlight toward the boat; this line forms a $alpha-degree angle with the hypotenuse of the right triangle.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication90.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication90.pg
index e43aac9b8b..d7557b34e5 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication90.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigApplication90.pg
@@ -205,7 +205,7 @@ if ($corner==0) {
$text = "The graph shows a $heightPersonU person on the ground, looking up at a kite. A horizontal line is drawn from his hand (very close to his eyes) toward the kite, and a vertical line is drawn from the kite downward. Another line is connected from his hand to the kite. These three lines form a right triangle. The right angle is at the $cPosition corner of the picture. At the $aPosition, the acute angle measures $alpha degrees. The length of the side opposite to the given acute angle is marked as x (unknown); the side opposite to the right angle is marked $hypotenuseU.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg
index 3c66f1e8a9..b8b2a87fa5 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg
@@ -119,7 +119,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg
index 8677cb038d..63aab95b2a 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg
@@ -120,7 +120,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg
index b53ff6f9a5..fa338bf2a0 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg
@@ -120,7 +120,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg
index be60ceb5e4..8106cd6353 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg
@@ -120,7 +120,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg
index 81ed6f6ba6..abf21a6abf 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg
@@ -201,7 +201,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg
index eb855610b4..99cb4bfb76 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg
@@ -206,7 +206,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
First, we need to find the missing side. By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg
index 1fcfed6690..9373609b34 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg
@@ -207,7 +207,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
First, we need to find the missing leg's length. By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg
index 9dc26aabf2..a6f8f67489 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg
@@ -322,7 +322,7 @@ if ($corner==0) {
$text = "This is a right triangle. Right angle C is at the $cPosition corner of the picture. Acute angle A is at the $aPosition, and acute angle B is at the $bPosition. The length of the side facing Angle A is $base; the length of the side facing Angle B is $height; the length of the side facing Angle C is x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg
index 96e4d0f46f..fe896a79e7 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg
@@ -326,7 +326,7 @@ if ($corner==0) {
$text = "This is a right triangle. Right angle C is at the $cPosition corner of the picture. Acute angle A is at the $aPosition, and acute angle B is at the $bPosition. The length of the side facing Angle A is $base; the length of the side facing Angle B is x (unknown); the length of the side facing Angle C is $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek10.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek10.pg
index 56f7e55780..22bde52958 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek10.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek10.pg
@@ -137,7 +137,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek20.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek20.pg
index d11ed34b74..0dff16c69d 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek20.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek20.pg
@@ -135,7 +135,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek30.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek30.pg
index a13e27a6cb..3fcc17fefc 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek30.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek30.pg
@@ -138,7 +138,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek40.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek40.pg
index e2bdadfa30..65213939ae 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek40.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek40.pg
@@ -109,7 +109,7 @@ $ansTangentS = Compute("s/r");
$text = "This is a right triangle. The right angle is at the bottom right corner of the picture. Acute angle alpha is at the bottom left, and acute angle beta is at the top right. Angle alpha faces side r; Angle beta faces side s; the right angle faces side t.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek50.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek50.pg
index 38c472480f..2c55464c9e 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek50.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek50.pg
@@ -221,7 +221,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
By definition:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek60.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek60.pg
index 46175aed05..04a5e4ecef 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek60.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek60.pg
@@ -225,7 +225,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
First, we need to find the missing side. By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek70.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek70.pg
index b3c38bb676..84d995c16c 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek70.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek70.pg
@@ -226,7 +226,7 @@ Based on the given figure, find the following values of trigonometric functions.
END_PGML
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML_SOLUTION
First, we need to find the missing leg's length. By the Pythagorean Theorem, we have:
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek80.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek80.pg
index 4e3b374811..24893d1a6d 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek80.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek80.pg
@@ -341,7 +341,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. Acute angle alpha is at the $aPosition, and acute angle beta is at the $bPosition. The length of the side facing angle alpha is $base; the length of the side facing angle beta is $height; the length of the side facing the right angle is x (unknown).";
##############################################
-$refreshCachedImages = 1;
+
BEGIN_PGML
diff --git a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek90.pg b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek90.pg
index 89cf1acb21..728eb9582b 100644
--- a/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek90.pg
+++ b/Contrib/PCC/BasicAlgebra/Trigonometry/RightTriangleTrigDefinitionGreek90.pg
@@ -346,7 +346,7 @@ if ($corner==0) {
$text = "This is a right triangle. The right angle is at the $cPosition corner of the picture. Acute angle alpha is at the $aPosition, and acute angle beta is at the $bPosition. The length of the side facing angle alpha is $base; the length of the side facing angle beta is x (unknown); the length of the side facing the right angle is $hypotenuse.";
##############################################
-$refreshCachedImages = 1;
+
TEXT(beginproblem());
diff --git a/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberAddition130.pg b/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberAddition130.pg
index 9ae2290bc9..564caf70b3 100644
--- a/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberAddition130.pg
+++ b/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberAddition130.pg
@@ -52,7 +52,7 @@ $den2 = $den1;
do {$num1 = random(1,$den1-1,1);} until (gcd($num1,$den1)==1);
$num2 = $numReduced*$multiple - $num1;
-} until ((gcd($num2,$den2)==1) && ($num2<$den2));
+} until ((gcd($num2,$den2)==1) && ($num2<$den2) && ($num2 > 0) );
$int1 = random(1,5,1);
$frac1 = Fraction($num1,$den1);
diff --git a/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberSubtraction90.pg b/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberSubtraction90.pg
index 7c51551f20..ed645d5377 100644
--- a/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberSubtraction90.pg
+++ b/Contrib/PCC/BasicMath/FractionsCalculation/MixedNumberSubtraction90.pg
@@ -53,7 +53,7 @@ $den2 = $den1;
do {$num1 = random(1,$den1-1,1);} until (gcd($num1,$den1)==1);
$num2 = $numReduced*$multiple - $num1;
-} until ((gcd($num2,$den2)==1) && ($num2<$den2));
+} until ((gcd($num2,$den2)==1) && ($num2<$den2) && ($num2 >0) );
$int1 = random(1,5,1);
$frac1 = Fraction($num1,$den1);
diff --git a/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityFromGraph30.pg b/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityFromGraph30.pg
index 36b37fd4de..974d597ec9 100644
--- a/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityFromGraph30.pg
+++ b/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityFromGraph30.pg
@@ -53,8 +53,9 @@ do {
$p = -$a*($x1+$x2)/2;
$q = $a*$x1*$x2;
$d = ($p)**2-4*$o*$q;
- $x3 = (-$p+sqrt($d))/(2*$o);
- $x4 = (-$p-sqrt($d))/(2*$o);
+ $x3 = Real((-$p+sqrt($d))/(2*$o));
+ $x4 = Real((-$p-sqrt($d))/(2*$o));
+ ($x3,$x4) = num_sort($x3,$x4);
$y3 = $func->eval(x=>$x3);
$y4 = $func->eval(x=>$x4);
} until ( (abs($y1)<10) && (abs($y2)<10) && (abs($y3)<10) && (abs($y4)<10) );
@@ -96,11 +97,11 @@ for my $i (0..0) {
Context("Interval");
if ($a>0) {
- $ALT = "This is a graph of a function starting at the top left, going down till the point ($x4,$y4), turning up to the inflection point ($x1,$y1), continuing up till the point (0,0), turning down to the inflection point ($x2,$y2), continuing down till the point ($x3,$y3), and finally turning up to the top right.";
+ $ALT = "This is a graph of a function starting at the top left, going down till the point ($x3,$y3), turning up to the inflection point ($x1,$y1), continuing up till the point (0,0), turning down to the inflection point ($x2,$y2), continuing down till the point ($x4,$y4), and finally turning up to the top right.";
$ansDown = Compute("($x1,$x2)");
$ansUp = Compute("(-inf,$x1)U($x2,inf)");
} else {
- $ALT = "This is a graph of a function starting at the bottom left, going up till the point ($x4,$y4), turning down to the inflection point ($x1,$y1), continuing down till the point (0,0), turning up to the inflection point ($x2,$y2), continuing up till the point ($x3,$y3), and finally turning down to the bottom right.";
+ $ALT = "This is a graph of a function starting at the bottom left, going up till the point ($x3,$y3), turning down to the inflection point ($x1,$y1), continuing down till the point (0,0), turning up to the inflection point ($x2,$y2), continuing up till the point ($x4,$y4), and finally turning down to the bottom right.";
$ansUp = Compute("($x1,$x2)");
$ansDown = Compute("(-inf,$x1)U($x2,inf)");
}
diff --git a/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityInContext40.pg b/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityInContext40.pg
index 4d7253649c..30017eaa3b 100644
--- a/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityInContext40.pg
+++ b/Contrib/PCC/CollegeAlgebra/Concavity/ConcavityInContext40.pg
@@ -67,7 +67,7 @@ $gr[1]->lb( new Label(0,9,'Distance','black','left','middle'));
$gr[1]->lb( new Label(9,0,'Time','black','left','bottom'));
@problems = (
- ["A runner completes a 100-meter dash race. The function models the runner's distance from the starting line as time passes.",
+ ["A runner completes a 100-meter dash race. He started from a speed of zero, and then sped up during the whole race. The function models the runner's distance from the starting line as time passes.",
"increasing",
"concave up",
"The distance increases as time passes, so the function is increasing.",
diff --git a/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations40.pg b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations40.pg
index e17ee23103..2888b8fba8 100644
--- a/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations40.pg
+++ b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations40.pg
@@ -60,7 +60,7 @@ do {
} until ( ($c2<0) && ($c2n != 1) && (abs($b2n)!=1) );
$f = Compute("$b1*$var+$c1")->reduce;
-
+$e1 = Compute("$b2h*$var")->reduce;
##############################################
@@ -68,7 +68,7 @@ BEGIN_PGML
Solve the exponential equation
- [` e^{[$f]} = \frac{e^{[$var]^2}}{e^{[$c2n]}}\cdot \left(e^{[$b2h][$var]}\right)^2 `]
+ [` e^{[$f]} = \frac{e^{[$var]^2}}{e^{[$c2n]}}\cdot \left(e^{[$e1]}\right)^2 `]
* Enter multiple answers in set notation, such as [`\{1,-1\}`], or separated by commas, such as [` x=1, x=-1 `].
* If there are no real solutions, enter *no real solutions*
diff --git a/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations50.pg b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations50.pg
new file mode 100644
index 0000000000..937ff16574
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations50.pg
@@ -0,0 +1,91 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Functions')
+## DBsection('Exponential')
+## KEYWORDS()
+## TitleText1()
+## EditionText1()
+## AuthorText1()
+## Section1()
+## Problem1()
+## Author('Carl Yao')
+## Institution('PCC')
+
+
+
+##############################################
+
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
+);
+
+
+##############################################
+
+TEXT(beginproblem());
+Context("Numeric");
+Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
+Context()->reduction->set('(-x)-y'=>0); #So that the displayed inequalities
+Context()->reduction->set('(-x)+y'=>0); #will look as intended
+
+$var = RandomVariableName('type' => variable);
+Context()->variables->are($var => 'Real');
+
+$a = random(2,9,1);
+do {$b = random(2,9,1);} until ($b!=$a);
+$left = Compute("e**(2*$var)+($b-$a)*e**($var)")->reduce->reduce;
+$right = $a*$b;
+
+Context("FiniteSolutionSets");
+Context()->variables->are($var => 'Real');
+$ans = Formula("{ln($a)}");
+
+##############################################
+
+BEGIN_PGML
+
+Solve the exponential equation
+
+ [` [$left] = [$right] `]
+
+* Enter multiple answers in set notation, such as [`\{1,-1\}`], or separated by commas, such as [` x=1, x=-1 `].
+* If there are no real solutions, enter *no real solutions*
+
+ [__________________________________]{$ans}
+
+END_PGML
+
+##############################################
+
+##############################################
+
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$left] &= [$right] \\
+ \left( e^{[$var]} \right)^2 +[$b-$a]e^{[$var]} - [$right] &= 0 \\
+ \left( e^{[$var]}-[$a] \right) \left( e^{[$var]}+[$b] \right) &= 0 \\
+ e^{[$var]}-[$a] &= 0 \text{ or } e^{[$var]}+[$b] = 0 \\
+ e^{[$var]} &= [$a] \text{ or } e^{[$var]} = [$b*-1] \\
+ [$var] &= \ln([$a]) \text{ or no solution} \\
+\end{aligned}
+ ``]
+
+The solutions could be written in set notation: [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
\ No newline at end of file
diff --git a/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations60.pg b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations60.pg
new file mode 100644
index 0000000000..d09663cef4
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/ExponentialFunctions/ExponentialEquations60.pg
@@ -0,0 +1,99 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Functions')
+## DBsection('Exponential')
+## KEYWORDS()
+## TitleText1()
+## EditionText1()
+## AuthorText1()
+## Section1()
+## Problem1()
+## Author('Carl Yao')
+## Institution('PCC')
+
+
+
+##############################################
+
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
+ "PGcourse.pl",
+);
+
+
+##############################################
+
+TEXT(beginproblem());
+Context("Fraction");
+Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0, formatStudentAnswer=>parsed);
+Context()->reduction->set('(-x)-y'=>0); #So that the displayed inequalities
+Context()->reduction->set('(-x)+y'=>0); #will look as intended
+
+$var = RandomVariableName('type' => variable);
+Context()->variables->are($var => 'Real');
+
+do {
+ $a = list_random(2,3,5);
+ $b = random(1,5,1);}
+until gcd($b,$a)==1;
+$c = random(1,5,1);
+$d = $a*$c-$b;
+$bc = $b*$c;
+$left = Compute("$a*e**(2*$var)")->reduce;
+$right = Compute("$bc-$d*e**{$var}")->reduce;
+$ans1 = Fraction($b,$a);
+$s1 = Compute("$d*e**{$var}")->reduce;
+
+Context("FiniteSolutionSets");
+Context()->variables->are($var => 'Real');
+$ans = Formula("{ln($ans1)}");
+
+##############################################
+
+BEGIN_PGML
+
+Solve the exponential equation
+
+ [` [$left] = [$right] `]
+
+* Enter multiple answers in set notation, such as [`\{1,-1\}`], or separated by commas, such as [` x=1, x=-1 `].
+* If there are no real solutions, enter *no real solutions*
+
+ [__________________________________]{$ans}
+
+END_PGML
+
+##############################################
+
+##############################################
+
+
+BEGIN_PGML_SOLUTION
+
+ [``
+\begin{aligned}
+ [$left] &= [$right] \\
+ \left( [$a]e^{[$var]} \right)^2 +[$s1] - [$bc] &= 0 \\
+ \left( [$a]e^{[$var]}-[$b] \right) \left( e^{[$var]}+[$c] \right) &= 0 \\
+ [$a]e^{[$var]}-[$b] &= 0 \text{ or } e^{[$var]}+[$c] = 0 \\
+ e^{[$var]} &= [$ans1] \text{ or } e^{[$var]} = [$c*-1] \\
+ [$var] &= \ln\left([$ans1]\right) \text{ or no solution} \\
+\end{aligned}
+ ``]
+
+The solutions could be written in set notation: [`[$ans]`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
\ No newline at end of file
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg
index b4e42cd8b3..2e5ef2ab00 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg
@@ -26,6 +26,7 @@ loadMacros(
"unionTables.pl",
"parserAssignment.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"pccTables.pl",
"PGML.pl",
"PCCmacros.pl",
@@ -65,6 +66,9 @@ Context()->operators->redefine('or',using=>',',from=>'Numeric');
Context()->operators->set(","=>{string=>"or",TeX=>"or ",perl=>","});
$formula = Formula("$var=$solvefequals0 ");
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{$solvefequals0}");
##############################################
@@ -75,9 +79,8 @@ If [`[$f]`] is a function defined by [`[$f]([$var]) = [$function]`],
a. Find [`[$f](0)`].
[_]{$fof0}{20}
-a. Solve [`[$f]([$var])=0`].
- [@KeyboardInstructions("The answer should be in the form [|$var=23|]*, and not simply give the numerical value of the solution, like [|23|]*. If there are two solutions, use the word [|or|]*, as in [|$var=23 or $var=12|]*. If you need to use the square root sign, as in [`\\sqrt{23}`], type it like [|sqrt(23)|]*.")@]**
- [_]{$formula}{20}
+a. Solve [`[$f]([$var])=0`].
+ [_]{$ans}{20}
END_PGML
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve20.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve20.pg
index 17608d2d7f..a39b9e182b 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve20.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve20.pg
@@ -26,6 +26,7 @@ loadMacros(
"unionTables.pl",
"parserAssignment.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"pccTables.pl",
"PGML.pl",
"PCCmacros.pl",
@@ -89,6 +90,9 @@ if ($b == 1 and $c ne '') {$b = ''};
$solvefequals0 = Compute("$var=$b $c or $var=-$b $c");
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{$b $c, -$b $c}");
##############################################
@@ -99,9 +103,9 @@ If [`[$f]`] is a function defined by [`[$f]([$var]) = [$function]`],
a. Find [`[$f](0)`].
[_]{$fof0}{20}
-a. Solve [`[$f]([$var])=0`].
- [@KeyboardInstructions("The answer should be in the form [|$var=23|]*, and not simply give the numerical value of the solution, like [|23|]*. If there are two solutions, use the word [|or|]*, as in [|$var=23 or $var=12|]*. If you need to use the square root sign, as in [`\\sqrt{23}`], type it like [|sqrt(23)|]*.")@]**
- [_]{$solvefequals0}{20}
+a. Solve [`[$f]([$var])=0`].
+ [@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+ [_]{$ans}{20}
END_PGML
@@ -111,6 +115,38 @@ END_PGML
$showPartialCorrectAnswers=1;
+Context("Numeric")->variables->are($var=>'Real');
+$leading = Formula("$leadingCoefficient*$var^2")->reduce;
+
+$solve = '';
+
+if ($leadingCoefficient == 1) {
+ $solve = '[$f]([$var]) &= 0\\
+ [$function] &= 0\\
+ [$var]^2 &= [$a]\\
+ [$var] &= \pm\sqrt{[$a]}\\';
+ if ($c eq '') {$solve .= '&= \pm [$b]';}
+ elsif ($b ne '') {$solve .= '&= \pm [$b] [$c]';}
+} elsif ($den == 1 or $den == 4) {
+ $solve = '[$f]([$var]) &= 0\\
+ [$function] &= 0\\
+ [$leading] &= [$constant]\\
+ [$var]^2 &= [$a]\\
+ [$var] &= \pm\sqrt{[$a]}\\';
+ if ($c eq '') {$solve .= '&= \pm [$b]';}
+ elsif ($b ne '') {$solve .= '&= \pm\sqrt{[$squarepart**2]\cdot[$newnewnum]}\\ &= \pm [$b] [$c]';}
+} else {
+ $solve = '[$f]([$var]) &= 0\\
+ [$function] &= 0\\
+ [$leading] &= [$constant]\\
+ [$var]^2 &= [$a]\\
+ [$var] &= \pm\sqrt{[$a]}\\
+ [$var] &= \pm\sqrt{[$a]\cdot\frac{[$den]}{[$den]}}\\
+ [$var] &= \pm\sqrt{\frac{[$num*$den]}{[$den*$den]}}\\
+ [$var] &= \pm\sqrt{\frac{[$squarepart**2]\cdot[$newnewnum]}{[$den*$den]}}\\';
+ if ($c eq '') {$solve .= '&= \pm [$b]';}
+ elsif ($b ne '') {$solve .= '&= \pm [$b] [$c]';}
+};
##############################################
@@ -120,8 +156,7 @@ BEGIN_PGML_SOLUTION
To evaluate [`[$f](0)`],
[`\begin{aligned}
-[$f](0)
-&= [$leadingCoefficient]*(0)^2-[$constant]\\
+[$f](0) &= [$leadingCoefficient]*(0)^2-[$constant]\\
&= [$leadingCoefficient]*(0)-[$constant]\\
&= 0-[$constant]\\
&= -[$constant]\\
@@ -131,20 +166,11 @@ To evaluate [`[$f](0)`],
To solve [`[$f]([$var])=0`],
[`\begin{aligned}
-[$f]([$var])
-&= 0\\
-[$leadingCoefficient]*([$var])^2-[$constant]
-&= 0\\
-[$leadingCoefficient]*([$var])^2
-&=[$constant]\\
-([$var])^2
-&=[$a]\\
-[$var]
-&=\sqrt{[$a]}\mbox{ or }{-\sqrt{[$a]}}\\
-[$var]
-&=[@sqrt($a)@]\mbox{ or }{-[@sqrt($a)@]}\\
+[$solve]**
\end{aligned}`]
+So the solution set is [`[$ans]`].
+
END_PGML_SOLUTION
ENDDOCUMENT();
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg
index 56e365db4d..a02f666b5f 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg
@@ -26,6 +26,7 @@ loadMacros(
"unionTables.pl",
"parserAssignment.pl",
"contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"pccTables.pl",
"PGML.pl",
"PCCmacros.pl",
@@ -69,7 +70,9 @@ Context()->operators->set(","=>{string=>"or",TeX=>"\text{ or }",perl=>","});Cont
$solvefequals0 = Compute("$var=$root1 or $var=$root2");
-
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{$root1, $root2}");
##############################################
@@ -81,8 +84,9 @@ a. Find [`[$f](0)`].
[_]{$fof0}{20}
a. Solve [`[$f]([$var])=0`].
- [@KeyboardInstructions("The answer should be in the form [|$var=23|]*, and not simply give the numerical value of the solution, like [|23|]*. If there are two solutions, use the word [|or|]*, as in [|$var=23 or $var=12|]*. If you need to use the square root sign, as in [`\\sqrt{23}`], type it like [|sqrt(23)|]*.")@]**
- [_]{$solvefequals0}{20}
+ [@KeyboardInstructions("If you need to use the square root symbol, as in [`x=\\sqrt{17}`], type it as [|x=sqrt(17)|]*. If there are no real solutions, enter [|no real solutions|]*.")@]**
+ [_]{$ans}{20}
+
END_PGML
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionMaxMin20.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionMaxMin20.pg
index 4c039b8bdf..231e62db5b 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionMaxMin20.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionMaxMin20.pg
@@ -44,12 +44,12 @@ do {
$x1 = random(-4,-2,1);
$x2 = random(-1,1,1);
$x3 = random(2,4,1);
- $a = random(0.005,0.01,0.001)*random(-1,1,2);
- $b = random(-5,5,1);
- $func = Compute("$a/4*x**4-$a*($x1+$x2+$x3)/3*x**3+$a*($x1*$x2+$x1*$x3+$x2*$x3)/2*x**2-$a*$x1*$x2*$x3*x+$b");
- $y1 = $func->eval(x=>$x1);
- $y2 = $func->eval(x=>$x2);
- $y3 = $func->eval(x=>$x3);
+ $a = random(0.005,0.01,0.001)*random(-1,1,2);
+ $b = random(-5,5,1);
+ $func = Compute("$a/4*x**4-$a*($x1+$x2+$x3)/3*x**3+$a*($x1*$x2+$x1*$x3+$x2*$x3)/2*x**2-$a*$x1*$x2*$x3*x+$b");
+ $y1 = $func->eval(x=>$x1);
+ $y2 = $func->eval(x=>$x2);
+ $y3 = $func->eval(x=>$x3);
} until ( (abs($y1)<10) && (abs($y2)<10) && (abs($y3)<10) && ($x2-$x1>1) && ($x3-$x2>1) );
$x4 = $x1-1;
@@ -64,11 +64,11 @@ $y4 = Round($y4,2);
$y5 = Round($y5,2);
%points = (
- $y1 => $x1,
- $y2 => $x2,
- $y3 => $x3,
- $y4 => $x4,
- $y5 => $x5,
+ $x1 => $y1,
+ $x2 => $y2,
+ $x3 => $y3,
+ $x4 => $y4,
+ $x5 => $y5,
);
if ($a > 0) {
@@ -80,9 +80,17 @@ if ($a > 0) {
}
$globalMinY = min($y1,$y2,$y3,$y4,$y5);
-$globalMinX = Real($points{$globalMinY});
+my @minx;
+for my $xx ($x1,$x2,$x3,$x4,$x5) {
+ push (@minx,$xx) if ($points{$xx} == $globalMinY);
+}
+$globalMinX = List(@minx);
$globalMaxY = max($y1,$y2,$y3,$y4,$y5);
-$globalMaxX = Real($points{$globalMaxY});
+my @maxx;
+for my $xx ($x1,$x2,$x3,$x4,$x5) {
+ push (@maxx,$xx) if ($points{$xx} == $globalMaxY);
+}
+$globalMaxX = List(@maxx);
($min[0], $max[0], $min[1], $max[1], $ticknum[0], $ticknum[1], $xticks_ref, $yticks_ref, $marksep[0], $marksep[1]) = NiceGraphParameters([$x4,$x5],[$y1,$y2,$y3,$y4,$y5],centerOrigin=>0);
@@ -133,7 +141,7 @@ A function's graph is shown below. A few points are highlighted for your referen
>>[@image(insertGraph($gr[0]), width=>xScreen(), height=>yScreen(), tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'") @]*<<
-If a value doesn't exist, type *DNE* (meaning "does not exist"). Use commas to separate your answers if needed.
+If a value doesn't exist, type [|DNE|]* (meaning "does not exist"). Use commas to separate your answers if needed.
The function has a local minimum at [_______]{$localMinX}.
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionRelations10.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionRelations10.pg
index 28635ecd29..6602326beb 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionRelations10.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionRelations10.pg
@@ -37,8 +37,6 @@ loadMacros(
TEXT(beginproblem());
Context("Numeric");
-$mc = new_checkbox_multiple_choice();
-
$a = random(2,5,1);
$b = random(2,5,1);
$c = (random(1,10,1))**2;
@@ -52,8 +50,7 @@ $j = random(2,8,1);
$k = $d+1;
$l = random(3,9,1);
-$mc -> qa (
-"Select all of the following relations that make \(y\) a function of \(x\). There are several correct answers.",
+@fs = (
"\( y=x^{$a} \) $BR",
"\( y=\frac{1}{x^{$b}} \) $BR",
"\( y=\left| x \right| \) $BR",
@@ -64,7 +61,7 @@ $mc -> qa (
"\( y=\sqrt[$l]{x} \) $BR",
);
-$mc -> extra(
+@notfs = (
"\( y=\pm\sqrt{$c-x^2} \) $BR",
"\( x=y^{$d} \) $BR",
"\( x^2+y^2=$e \) $BR",
@@ -72,19 +69,51 @@ $mc -> extra(
);
+@findices = NchooseK(8,8);
+@notfindices = NchooseK(4,4);
+
+for my $i (0..3) {
+$mc[$i] = new_checkbox_multiple_choice();
+
+$mc[$i] -> qa (
+"Select all of the following relations that make \(y\) a function of \(x\).",
+$fs[$findices[2*$i]],
+$fs[$findices[2*$i + 1]],
+);
+
+$mc[$i] -> extra(
+$notfs[$notfindices[$i]]
+);
+}
+
##############################################
Context()->texStrings;
BEGIN_TEXT
+\{KeyboardInstructions("To receive credit you must get each checkbox correct. For this problem, WeBWorK will not tell you which parts you have right or wrong, or you could just change your checks after one submission, and you wouldn't have to think. If you do not get full credit, carefully review your response for each checkbox. If you do not have full credit after several attempts, contact a tutor or your instructor.")\}
+$PAR
+\{ $mc[0] -> print_q() \}
$BR
-\{ $mc -> print_q() \}
+\{ $mc[0] -> print_a() \}
+$BR
+
+\{ $mc[1] -> print_q() \}
+$BR
+\{ $mc[1] -> print_a() \}
+$BR
+
+\{ $mc[2] -> print_q() \}
+$BR
+\{ $mc[2] -> print_a() \}
+$BR
+
+\{ $mc[3] -> print_q() \}
+$BR
+\{ $mc[3] -> print_a() \}
$BR
-\{ $mc -> print_a() \}
-$PAR
-\{KeyboardInstructions("To receive credit you must get each checkbox correct. For this problem, WeBWorK will not tell you which parts you have right or wrong, or you could just change your checks after one submission, and you wouldn't have to think. If you do not get full credit, carefully review your response for each checkbox. If you do not have full credit after several attempts, contact a tutor or your instructor.")\}
END_TEXT
Context()->normalStrings;
@@ -92,7 +121,10 @@ install_problem_grader(~~&std_problem_grader);
$showPartialCorrectAnswers = 0;
-ANS( checkbox_cmp( $mc->correct_ans() ) );
+ANS( checkbox_cmp( $mc[0]->correct_ans() ) );
+ANS( checkbox_cmp( $mc[1]->correct_ans() ) );
+ANS( checkbox_cmp( $mc[2]->correct_ans() ) );
+ANS( checkbox_cmp( $mc[3]->correct_ans() ) );
@@ -101,7 +133,7 @@ ANS( checkbox_cmp( $mc->correct_ans() ) );
BEGIN_SOLUTION
-The correct answer is \{ $mc->correct_ans() \}. In each of those answers, whenever a value would be substituted in for \(x\), then either there is exactly one \(y\)-value that will make the relation true, or perhaps none at all.
+The correct answers are \{ $mc[0]->correct_ans() \}, \{ $mc[1]->correct_ans() \}, \{ $mc[2]->correct_ans() \}, and \{ $mc[3]->correct_ans() \}. In each of those answers, whenever a value would be substituted in for \(x\), then either there is exactly one \(y\)-value that will make the relation true, or perhaps none at all.
In the other answers, there can be an \(x\)-value where more than one \(y\)-value will make the relation true.
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg
index 156ab1c606..db127badb8 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg
@@ -52,8 +52,8 @@ Context()->strings->add(
@questions = (
'When we write [`y=f(x)`], we call [`x`] the [__________]{OneOf("independent, input, explanatory, argument")} variable, and we call [`y`] the [__________]{OneOf("dependent, output, response")} variable. ',
-'The collection of all possible output values from a function is called the [__________]{range} of that function. ',
-'The collection of all valid input values for a function is called the [__________]{domain} of that function. ');
+'The collection of all possible output values from a function is called the [__________]{"range"} of that function. ',
+'The collection of all valid input values for a function is called the [__________]{"domain"} of that function. ');
@@ -92,4 +92,4 @@ If we write [`y=f(x)`], then [`x`] can be referred to as the _input_ variable, t
END_PGML_SOLUTION
-ENDDOCUMENT();
\ No newline at end of file
+ENDDOCUMENT();
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise10.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise10.pg
index 7241cfab40..28a6604c08 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise10.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise10.pg
@@ -103,6 +103,8 @@ $gr->stamps( closed_circle($d,$a,'blue') );
$gr->stamps( closed_circle($co3,$a,'blue') );
$gr->stamps( closed_circle($ans5,$e,'red') );
+$altb = "This is a graph of a piecewise function. In ($xmin,$d), the function is $a*x**2+$b, with an open dot at $d. In [$d,$co3], the function is y=$a, with closed dots at $d and $co3. In ($co3,$xmax), the function is y=$c-x, with an open dot at $co3. A horizontal line y=$e is graphed, intersecting with y=$c-x at ($ans5,$e).";
+
BEGIN_PGML_SOLUTION
a) Since [`[$co1]<[$d]`], to find [`f([$co1])`], we apply the first rule.
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise20.pg b/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise20.pg
index e40f1b76a6..666487ccbb 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise20.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionBasics/Piecewise20.pg
@@ -86,9 +86,9 @@ $ans3 = List(Formula("x = $s1"), Formula("x = $s2"));
BEGIN_PGML
Let [` f(x)=\begin{cases}
- [$f1] & [$x1] [$x3]
+ [$f3] & x \gt [$x3]
\end{cases}
`]
@@ -129,6 +129,7 @@ $gr->stamps( open_circle($x1,$k1,'blue') );
$gr->stamps( closed_circle($s1,$y,'red') );
$gr->stamps( closed_circle($s2,$y,'red') );
+$altb = "This is a graph of a piecewise function. In ($x1,$x2], the function is $f1, with an open dot at $x1. In [$x2,$x3], the function is $f2. In [$x3,$xmax], the function is $f3. Those three functions are continuous. A horizontal line y=$y is graphed, intersecting with the piecewise function at ($s1,$y) and ($s2,$y).";
$sol1 = $f2->substitute(x=>Formula("$a"));
$sol2 = $f3->substitute(x=>Formula("$b"));
diff --git a/Contrib/PCC/CollegeAlgebra/FunctionComposition/FunctionComposition140.pg b/Contrib/PCC/CollegeAlgebra/FunctionComposition/FunctionComposition140.pg
index 9b758717a7..6a2a167590 100644
--- a/Contrib/PCC/CollegeAlgebra/FunctionComposition/FunctionComposition140.pg
+++ b/Contrib/PCC/CollegeAlgebra/FunctionComposition/FunctionComposition140.pg
@@ -67,11 +67,11 @@ BEGIN_PGML
The manufacturer of a computer is offering two discounts on last year's model computer. The first discount is at a [`\$[$rebate]`] rebate and the second discount is [`[$perc]%`] off the regular price [`p`].
-a) Write a formula for a function [`f`] that that represents the sale price as a function of the regular price if only the rebate applies. Your answer should be in the form *f(p)=...*.
+a) Write a formula for a function [`f`] that represents the sale price as a function of the regular price if only the rebate applies. Your answer should be in the form *f(p)=...*.
[______________________]
-a) Write a formula for a function [`g`] that that represents the sale price as a function of the regular price if only the [`[$perc]%`] discount applies. Your answer should be in the form *g(p)=...*.
+a) Write a formula for a function [`g`] that represents the sale price as a function of the regular price if only the [`[$perc]%`] discount applies. Your answer should be in the form *g(p)=...*.
[______________________]
diff --git a/Contrib/PCC/CollegeAlgebra/InversesOfFunctions/InversesOfFunctions131.pg b/Contrib/PCC/CollegeAlgebra/InversesOfFunctions/InversesOfFunctions131.pg
new file mode 100644
index 0000000000..7d40985585
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/InversesOfFunctions/InversesOfFunctions131.pg
@@ -0,0 +1,114 @@
+# WeBWorK problem written by Alex Jordan
+# Portland Community College
+# ENDDESCRIPTION
+
+## DBsubject('Algebra')
+## DBchapter('Functions')
+## DBsection('Inverse Functions')
+## KEYWORDS()
+## TitleText1()
+## EditionText1()
+## AuthorText1()
+## Section1()
+## Problem1()
+## Author('Alex Jordan')
+## Institution('PCC')
+
+
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+
+TEXT(beginproblem());
+
+##############################################
+
+
+Context("Numeric");
+Context()->flags->set(reduceConstants=>0);
+Context()->variables->are(q=>'Real', C=>'Real');
+
+
+$base = random(80,120,5);
+$rate = random(0.1,0.2,0.1);
+
+$f = Formula("$base + $rate*q");
+
+$inverse = Formula("(C-$base)/$rate");
+
+##############################################
+
+
+BEGIN_PGML
+
+The cost [`C`] (in thousands of dollars) of producing [`q\;\mathrm{kg}`] of a chemical is given by [`C=f(q)=[$f]`].
+
+a) Find [`f(10)`].
+
+ [`f(10)={}`][_______________]
+
+a) Find [`f^{-1}(200)`].
+
+ [`f^{-1}(200)={}`][_______________]
+
+
+a) Find [`f^{-1}(C)`].
+
+ [`f^{-1}(C)={}`][_______________]
+
+END_PGML
+
+
+##############################################
+
+$showPartialCorrectAnswers=1;
+
+
+ANS( $f->eval(q=>10)->cmp() );
+ANS( $inverse->eval(C=>200)->cmp() );
+ANS( Formula("q")->cmp() );
+
+##############################################
+
+Context()->texStrings;
+$bigCost = 1000*$f->eval(q=>10);
+
+BEGIN_PGML_SOLUTION
+
+a) [`\begin{aligned}[t]
+f(10) &= [$f->substitute(q=>Formula("10"))]\\
+&= [$f->eval(q=>10)]
+\end{aligned}`]
+
+ This means that to produce [`10\;\mathrm{kg}`] of the chemical will cost [`\$[$bigCost]`].
+
+a) To find [`f^{-1}(200)`], we solve the equation
+
+ [`\begin{aligned}[t]
+f(q) &= 200\\
+[$f] &= 200\\
+[$rate]q & = [@200-$base@]\\
+q &= [@$inverse->eval(C=>200)@]
+\end{aligned}`]
+
+ This means that if it had cost [`$200000`] to produce some amount of the chemical, then [`[@$inverse->eval(C=>200)@]\;\mathrm{kg}`] of the chemical was produced.
+
+a) Since [`C=f(q)`] is the original function, [`f^{-1}(C)=f^{-1}\left(f(q)\right)=q`]
+
+ So [`f^{-1}(C)=q`]. In other words, [`C=f(q)`] and [`f^{-1}(C)`] canceled out each other.
+
+END_PGML_SOLUTION
+
+Context()->normalStrings;
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations50.pg b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations50.pg
index f4050d45f8..0deed4ab3f 100644
--- a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations50.pg
+++ b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations50.pg
@@ -59,7 +59,7 @@ $ans = Formula("$var=$x");
TEXT(beginproblem());
BEGIN_PGML
-Solve the quadratic equation
+Solve the equation
[`` e^{[$var]}=[$a] ``]
diff --git a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations60.pg b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations60.pg
index d576773bda..6fda280046 100644
--- a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations60.pg
+++ b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations60.pg
@@ -65,7 +65,7 @@ $ans = Formula("$var=$x");
TEXT(beginproblem());
BEGIN_PGML
-Solve the quadratic equation
+Solve the equation
[`` [$a]-[$b]e^{[$d][$var]}=[$c] ``]
diff --git a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations70.pg b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations70.pg
index 16b86eb6b5..fb42185163 100644
--- a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations70.pg
+++ b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations70.pg
@@ -65,7 +65,7 @@ $ans = Formula("$var=$x");
TEXT(beginproblem());
BEGIN_PGML
-Solve the quadratic equation
+Solve the equation
[`` [$a]\cdot 10^{[$var]+[$d]}+[$b]=[$c] ``]
diff --git a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations80.pg b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations80.pg
index 95e0a549f6..a38a8b601e 100644
--- a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations80.pg
+++ b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmEquations80.pg
@@ -72,7 +72,7 @@ Context()->{error}{msg}{"Unexpected character '='"}
TEXT(beginproblem());
BEGIN_PGML
-Solve the quadratic equation
+Solve the equation
[`` 10^{[$c][$var]}+[$a]=[$b] ``]
diff --git a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmProperties80.pg b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmProperties80.pg
index b1e76bf406..99f134dfac 100644
--- a/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmProperties80.pg
+++ b/Contrib/PCC/CollegeAlgebra/Logarithms/LogarithmProperties80.pg
@@ -47,11 +47,10 @@ do {
$a = random(2,9,1);
$b = random(2,5,1);
$c = $a**$b;
-} until ($c < 100);
+ $ab = $a*$b;
+} until ( ($c < 100) && ($c != $ab) );
$d = random(2,5,1);
-$ab = $a*$b;
-
$question = "$b \log($a) - $d \log($var1)";
$s1 = "\log \left( $a^{$b} \right) - \log \left( $var1^{$d} \right)";
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials17.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials17.pg
index be4af5f17b..5caccfa980 100644
--- a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials17.pg
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials17.pg
@@ -28,9 +28,6 @@ loadMacros(
);
TEXT(beginproblem());
-
-TEXT(beginproblem());
-
##############################################
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials18.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials18.pg
index 45f88ebe57..cae56af3c2 100644
--- a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials18.pg
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials18.pg
@@ -28,9 +28,6 @@ loadMacros(
);
TEXT(beginproblem());
-
-TEXT(beginproblem());
-
##############################################
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials28.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials28.pg
index f342a85065..caa297efe6 100644
--- a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials28.pg
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials28.pg
@@ -115,7 +115,7 @@ $size = 220;
add_functions($graphs[$i], "$f[$i] for x in <-10,10> " .
"using color:blue and weight:2");
-
+($graphs[$i]->fn)[0]->steps(200);
}
sub shufflemap {
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials50.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials50.pg
new file mode 100644
index 0000000000..2235a99586
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials50.pg
@@ -0,0 +1,94 @@
+##DESCRIPTION
+## Algebra problem: polynomial functions
+##ENDDESCRIPTION
+
+##KEYWORDS('algebra', 'polynomial function', 'end behavior')
+
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+TEXT(beginproblem());
+
+$showPartialCorrectAnswers = 1;
+$showPartialCredit = 1;
+
+#############################
+
+Context("Numeric");
+Context()->noreduce('(-x)-y');
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$a = random(2,8,2);
+$b = non_zero_random(-10,10,1);
+$c = non_zero_random(-10,10,1);
+$d = non_zero_random(-10,10,1);
+
+$ex0 = random(6,9,1);
+$ex1 = random(2,$ex0-1,1);
+
+$s = random(-1,1,2);
+$a = $s*$a;
+
+$func = Compute("$a*x**$ex0+$b*x**$ex1+$c*x+$d")->reduce;
+
+if ($a>0) {
+ if ($ex0%2==1) {
+ $ans0 = Compute("-infinity");
+ $ans1 = Compute("infinity");
+ } else {
+ $ans0 = Compute("infinity");
+ $ans1 = Compute("infinity");
+ }
+} else {
+ if ($ex0%2==1) {
+ $ans0 = Compute("infinity");
+ $ans1 = Compute("-infinity");
+ } else {
+ $ans0 = Compute("-infinity");
+ $ans1 = Compute("-infinity");
+ }
+}
+
+#############################
+
+BEGIN_PGML
+
+Given [`P(x)=[$func]`], answer the following questions.
+
+[@KeyboardInstructions(
+"\n".'* Enter [|inf|]* for [`\infty`].'
+)@]**
+
+* As [`x \rightarrow -\infty`], [`P(x) \rightarrow `][________]{$ans0}.
+
+* As [`x \rightarrow \infty`], [`P(x) \rightarrow `][________]{$ans1}.
+
+END_PGML
+
+#############################
+
+BEGIN_PGML_SOLUTION
+
+A polynomial's leading term determines its end behaviors. You need to know that:
+
+* For [`y=x^2`] or other even power, [`y \rightarrow \infty`] as [`x \rightarrow -\infty`] or as [`x \rightarrow \infty`].
+
+* For [`y=x^3`] or other odd power, [`y \rightarrow -\infty`] as [`x \rightarrow -\infty`], and [`y \rightarrow \infty`] as [`x \rightarrow \infty`].
+
+For [`P(x)=[$func]`], the leading term is [`[$a]x^{[$ex0]}`], so:
+
+* As [`x \rightarrow -\infty`], [`P(x) \rightarrow [$ans0]`].
+
+* As [`x \rightarrow \infty`], [`P(x) \rightarrow [$ans1]`].
+
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
+
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials80.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials80.pg
new file mode 100644
index 0000000000..dcf046a880
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Polynomials80.pg
@@ -0,0 +1,73 @@
+##DESCRIPTION
+
+
+##KEYWORDS('algebra')
+## Type: evaluation
+##ENDDESCRIPTION
+
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+TEXT(beginproblem());
+$showPartialCredit = 1;
+#############################
+
+Context("Numeric");
+Context()->noreduce('(-x)-y');
+Context()->noreduce('(-x)-y','(-x)+y');
+
+$x0 = random(1,5,1);
+$x1 = -$x0;
+do {$x2 = random(1,5,1);} until ($x2 != $x1);
+$x3 = -$x2;
+
+$x02 = $x0**2;
+$x22 = $x2**2;
+
+$b = -$x22-$x02;
+$c = $x02*$x22;
+
+$func = Compute("x**4+$b*x**2+$c")->reduce;
+$ans = List($x0,$x1,$x2,$x3);
+
+#############################
+
+BEGIN_PGML
+
+Find all real zeroes of [`` f(x) = [$func] ``].
+
+[@KeyboardInstructions(
+"\n".'* If there is more than one answer, enter them separated by a comma, like [`1, 2`].'
+)@]**
+
+ [`x=`][______________________]{$ans}
+
+END_PGML
+
+#############################
+
+$s1 = Compute("x**2-$x02")->reduce;
+$s2 = Compute("x**2-$x22")->reduce;
+
+BEGIN_PGML_SOLUTION
+
+To find zeroes of [`f(x)`], we solve for [`x`] in [`f(x)=0`].
+
+ [``\begin{aligned}
+ [$func] &= 0 \\
+ ([$s1])([$s2]) &= 0 \\
+ (x-[$x0])(x-[$x1])(x-[$x2])(x-[$x3]) &= 0 \\
+ x &= [$x0] \text{ or } [$x1] \text{ or } [$x2] \text{ or } [$x3]
+ \end{aligned}``]
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
+
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_103.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_103.pg
index 4c3cf1469f..cd5dd52a94 100644
--- a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_103.pg
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_103.pg
@@ -14,8 +14,8 @@ loadMacros(
"MathObjects.pl",
"unionTables.pl",
"contextFraction.pl",
-
-
+ "PGML.pl",
+ "PGcourse.pl",
);
@@ -52,9 +52,9 @@ $denominator = (-$a[0])**($m[0])*(-$a[1])**($m[1])*(-$a[2])**($m[2]);}
$e = Fraction("$d","$denominator");
-Context("Numeric");
+#Context("Numeric");
-$f = Compute("$e (x-$a[0])^($m[0])(x-$a[1])^($m[1])(x-$a[2])^($m[2])")->reduce;
+$f = Formula("$e (x-$a[0])^($m[0])(x-$a[1])^($m[1])(x-$a[2])^($m[2])")->reduce;
@@ -94,8 +94,32 @@ Context()->normalStrings;
$showPartialCorrectAnswers = 1;
+$s1 = Compute("(x-$a[1])**$m[1]")->reduce;
+if ($m[1]==1) {$s1 = "(".$s1->TeX.")";}
+$s2 = Compute("(x-$a[2])**$m[2]")->reduce;
+$s3 = $m[1]==1 ? "" : "^{$m[1]}";
ANS( $f->cmp() );
+BEGIN_PGML_SOLUTION
+
+Since [$a[0]] is a zero with multiplicity [$m[0]], [`(x-[$a[0]])^{[$m[0]]}`] is a factor.
+
+Similarly, [`[$s1]`] and [`([$s2])`] are factors.
+
+Now we have [`f(x)= a(x-[$a[0]])^{[$m[0]]}[$s1]([$s2])`].
+
+It's given that the [`y`]-intercept is [`[$d]`], we can substitute in [`x=0`] and [`y=[$d]`], and we have:
+
+ [``\begin{aligned}
+ f(x) &= a(x-[$a[0]])^{[$m[0]]}[$s1]([$s2]) \\
+ [$d] &= a(0-[$a[0]])^{[$m[0]]}(0-[$a[1]])[$s3](0-[$a[2]]) \\
+ [$d] &= [$denominator]a \\
+ [$e] &= a
+ \end{aligned}``]
+
+The function is [`f(x)=[$f]`].
+
+END_PGML_SOLUTION
ENDDOCUMENT();
\ No newline at end of file
diff --git a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_120.pg b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_120.pg
index 3a4b91d015..55f4495ed0 100644
--- a/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_120.pg
+++ b/Contrib/PCC/CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_120.pg
@@ -16,8 +16,8 @@ loadMacros(
"contextFraction.pl",
"PGgraphmacros.pl",
"parserRadioButtons.pl",
-
-
+ "PGML.pl",
+ "PGcourse.pl",
);
@@ -27,11 +27,13 @@ loadMacros(
TEXT(beginproblem());
Context("Fraction");
-$a = random(1,2,1);
+$a = random(2,3,1);
$b = $a+random(1,3,1);
$c = $b+random(1,2,1);
-$zeropower = list_random(0,1,1,2);
+$zeropower = list_random(0,1,2);
+$deg = 6+$zeropower;
+$turn = $deg-1;
$s = random(-1,1,2);
@@ -140,4 +142,37 @@ ANS( $radiolead->cmp() );
ANS( $radiosym->cmp() );
ANS( Compute("$n")->cmp() );
+##############################################
+
+$s1 = ($deg%2==0) ? 'the same infinity' : 'opposite infinities';
+if ($s>0) {
+ $s2 = ($deg%2==0) ? '\infty' : '-\infty';
+ $s3 = 'positive';
+} else {
+ $s2 = ($deg%2==0) ? '-\infty' : '\infty';
+ $s3 = 'negative';
+}
+
+BEGIN_PGML_SOLUTION
+
+###Part a
+
+When [`x \rightarrow -\infty`] and [`x \rightarrow \infty`], the function is approaching [$s1], implying the function has [$degree] degrees.
+
+###Part b
+
+Recall the end behaviors of [`y=x^2`] and [`y=x^3`].
+
+Since the function has [$degree] degrees, and [`y \rightarrow [$s2]`] as [`x \rightarrow -\infty`], we can tell the leading coefficient is [$s3].
+
+###Part c
+
+By the graph, the function has [$sym].
+
+###Part d
+
+The function's graph has [`[$turn]`] turns, implying its minimum degree is [`[$deg]`].
+
+END_PGML_SOLUTION
+
ENDDOCUMENT();
\ No newline at end of file
diff --git a/Contrib/PCC/CollegeAlgebra/RationalFunctions/Formulas40.pg b/Contrib/PCC/CollegeAlgebra/RationalFunctions/Formulas40.pg
index 2e99f772b7..116b24e540 100644
--- a/Contrib/PCC/CollegeAlgebra/RationalFunctions/Formulas40.pg
+++ b/Contrib/PCC/CollegeAlgebra/RationalFunctions/Formulas40.pg
@@ -38,10 +38,11 @@ TEXT(beginproblem());
Context("Numeric");
$r[0] = random(-4,-1,1);
-for my $i (1..3)
-{
- $r[$i] = $r[$i-1] + random(1,5,1);
-}
+do {
+ for my $i (1..3) {
+ $r[$i] = $r[$i-1] + random(1,5,1);
+ }
+} until ( ($r[1]!=0) && ($r[2]!=0) );
$p = Compute("(x-$r[0])*(x-$r[3])/((x-$r[1])*(x-$r[2]))")->reduce;
@@ -116,7 +117,7 @@ We need to see from the graph that there are zeros at [`[@$r[0]@]`] and [`[@$r[3
We also need to see that there are vertical asymptotes at [`[@$r[1]@]`] and [`[@$r[2]@]`]. Since the arms of the function go in opposite directions (one up, one down) as [`x`] approaches either of these, then the degree of the vertical asymptotes must be odd: [`1`], [`3`], [`5`], etc.
-Since this is a rational function, having zeros at [`[@$r[0]@]`] and [`[@$r[2]@]`] means that [`(x-[@$r[0]@])`] and [`(x-[@$r[2]@])`] are factors of the numerator.
+Since this is a rational function, having zeros at [`[@$r[0]@]`] and [`[@$r[3]@]`] means that [`(x-[@$r[0]@])`] and [`(x-[@$r[3]@])`] are factors of the numerator.
Having vertical asymptotes at [`[@$r[1]@]`] and [`[@$r[2]@]`] means that [`(x-[@$r[1]@])`] and [`(x-[@$r[2]@])`] are factors of the denominator.
diff --git a/Contrib/PCC/CollegeAlgebra/RationalFunctions/GraphingRationalFunctions110.pg b/Contrib/PCC/CollegeAlgebra/RationalFunctions/GraphingRationalFunctions110.pg
index 23c9ebee0a..2176544661 100644
--- a/Contrib/PCC/CollegeAlgebra/RationalFunctions/GraphingRationalFunctions110.pg
+++ b/Contrib/PCC/CollegeAlgebra/RationalFunctions/GraphingRationalFunctions110.pg
@@ -53,7 +53,7 @@ $x1 = $b/$a;
do {$x2 = non_zero_random(-4,-1,1);} until (abs($x1)!=abs($x2));
$x1N = -$x1;
$x2N = -$x2;
-do {$x3 = non_zero_random(-4,4,1);} until ($x3!=$x2);
+do {$x3 = non_zero_random(-4,4,1);} until (abs($x3)!=abs($x2));
$x3N = -$x3;
$x1p3 = -$b-$a*$x3;
diff --git a/Contrib/PCC/CollegeAlgebra/Transformations/General4.pg b/Contrib/PCC/CollegeAlgebra/Transformations/General4.pg
new file mode 100644
index 0000000000..2e732ec525
--- /dev/null
+++ b/Contrib/PCC/CollegeAlgebra/Transformations/General4.pg
@@ -0,0 +1,68 @@
+#DESCRIPTION
+## Algebra problem: Transformations of functions
+##ENDDESCRIPTION
+
+##KEYWORDS('algebra', 'transformation of function')
+
+## tcao , PAID on 11-24-2003
+
+## DBsubject('Algebra')
+## DBchapter('Functions')
+## DBsection('Transformations of Functions')
+## Date('6/3/2002')
+## Author('')
+## Institution('')
+## TitleText1('Precalculus')
+## EditionText1('3')
+## AuthorText1('Stewart, Redlin, Watson')
+## Section1('2.4')
+## Problem1('25')
+
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"PGcourse.pl"
+);
+
+#TEXT(beginproblem());
+$showPartialCredit = 1;
+$showHint = 3;
+
+$a=random(2,15,2);
+$b=random(3,30,2);
+
+BEGIN_PGML
+Start with [`f`], where [`f(x)=\sqrt{x} `]. Let [`g`] be the function that we have after performing the following transformations:
+
+1) reflect over the [`x`]-axis,
+
+2) stretch horizontally by a factor of [`[$b]`], and
+
+3) shift to the left [`[$a]`] units.
+
+
+Using [|sqrt(x)|] for [`\sqrt{x}`], The new function has formula
+
+ [`g(x)={}`][_____________________]
+
+END_PGML
+
+$ans1 = "-sqrt(1/$b *(x + $a))";
+
+ANS(fun_cmp($ans1));
+
+
+BEGIN_PGML_SOLUTION
+
+1) Reflect over the [`x`]-axis, making the function [`f(x)=-\sqrt{x} `].
+
+2) Stretch horizontally by a factor of [`[$b]`], making the function [`f(x)=-\sqrt{\frac{1}{[$b]}x} `].
+
+3) Shift to the left [`[$a]`] units, making the function [`g(x) = -{\sqrt{\frac{1}{[$b]} (x + [$a])}}`].
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations40.pg b/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations40.pg
index ddbd723db9..46f54c7ff7 100644
--- a/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations40.pg
+++ b/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations40.pg
@@ -76,12 +76,12 @@ BEGIN_PGML_SOLUTION
a) If [`g(x) = f(x) + [$a1]`], then [`g`] has a modification from [`f`] that is external to [`f`]'s formula, so the transformation is of a vertical nature. Vertical transformations work in an intuitive way, where addition means shifting up and subtraction means shifting down. So The graph of [`g`] is obtained by shifting the graph of [`f`] [@$popupa->correct_ans@] one unit.
-a) If [`g(x) = f(x+[$a2])`], then [`g`] has a modification from [`f`] that is internal to [`f`]'s formula, so the transformation is of a horizontal nature. Horizontal transformations work in a counterintuitive way, where addition means shifting left and subtraction means shifting right. So The graph of [`g`] is obtained by shifting the graph of [`f`] [@$popupa->correct_ans@] one unit.
-
-a) If [`g(x) = -f(x)`], then [`g`] has a modification from [`f`] that is external to [`f`]'s formula, so the transformation is of a vertical nature. The negation implies a reflection about one of the main axes, and a vertical reflection would be over the [`x`]-axis.
+a) If [`g(x) = f(x+[$a2])`], then [`g`] has a modification from [`f`] that is internal to [`f`]'s formula, so the transformation is of a horizontal nature. Horizontal transformations work in a counterintuitive way, where addition means shifting left and subtraction means shifting right. So The graph of [`g`] is obtained by shifting the graph of [`f`] [@$popupb->correct_ans@] one unit.
a) If [`g(x) = f(-x)`], then [`g`] has a modification from [`f`] that is internal to [`f`]'s formula, so the transformation is of a horizontal nature. The negation implies a reflection about one of the main axes, and a vertical reflection would be over the [`y`]-axis.
+a) If [`g(x) = -f(x)`], then [`g`] has a modification from [`f`] that is external to [`f`]'s formula, so the transformation is of a vertical nature. The negation implies a reflection about one of the main axes, and a vertical reflection would be over the [`x`]-axis.
+
END_PGML_SOLUTION
diff --git a/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations80.pg b/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations80.pg
index d5e4dd2f7c..c7ee0a7287 100644
--- a/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations80.pg
+++ b/Contrib/PCC/CollegeAlgebra/Transformations/GeneralTransformations80.pg
@@ -200,13 +200,13 @@ $horshiftA = abs($horshift);
BEGIN_PGML_SOLUTION
-Identify that the parent function, before transformation, is [`y=\left| x\right|}`].
+Identify that the parent function, before transformation, is [`y=\left| x\right|`].
Before doing transformation for [`f(x)=[$f[0]]`], since there is a number in front of the independent variable [`x`], we need to factor the expression and convert the function to:
[``f(x)=[$f[0]]=[$funcFactored]``]
-To transform from [`y=\left| x\right|}`] to [`[$funcFactored]`], there is a horizontal [$soc] the [`y`]-axis by a factor of [`\frac{1}{[$a]}`], and a horizontal shift to the [$lor] by [`[$horshiftA]`] units.
+To transform from [`y=\left| x\right|`] to [`[$funcFactored]`], there is a horizontal [$soc] the [`y`]-axis by a factor of [`\frac{1}{[$a]}`], and a horizontal shift to the [$lor] by [`[$horshiftA]`] units.
By order of transformations, first we need to do the [$soc1] on [`y=\left| x\right|`], and then the shift. The correct graph for [`f(x)=[$f[0]]`] is Graph [`[$answer]`].
diff --git a/Contrib/PCC/CollegeAlgebra/Transformations/Shifting60.pg b/Contrib/PCC/CollegeAlgebra/Transformations/Shifting60.pg
index 09092fe75b..f6dde6f195 100644
--- a/Contrib/PCC/CollegeAlgebra/Transformations/Shifting60.pg
+++ b/Contrib/PCC/CollegeAlgebra/Transformations/Shifting60.pg
@@ -214,7 +214,7 @@ $PAR
(2,$a[4])&\to(2,$k[4])
\end{aligned}\]
-And so we find \(k(-2)=$k[0]\), \(k(-1)=$k[1]\), \(k(0)=$k[2]\), \(k(1)=$k[3]\), and \(k(2)=$k[3]\), giving us all five values for the table for \(k\).
+And so we find \(k(-2)=$k[0]\), \(k(-1)=$k[1]\), \(k(0)=$k[2]\), \(k(1)=$k[3]\), and \(k(2)=$k[4]\), giving us all five values for the table for \(k\).
$PAR
\(m\) is the function \(f\) shifted \(1\) unit to the right and \(3\) units up. So the points that are represented in the table for \(f\) need to be shifted \(1\) unit right and \(3\) up to get points that are on \(m\)'s graph:
@@ -232,4 +232,4 @@ And so we find \(m(-1)=$k[0]\), \(m(0)=$k[1]\), \(m(1)=$k[2]\), and \(m(2)=$k[3]
END_SOLUTION
-ENDDOCUMENT();
\ No newline at end of file
+ENDDOCUMENT();
diff --git a/Contrib/PCC/CompSci/CS161/problemSample.pg b/Contrib/PCC/CompSci/CS161/problemSample.pg
new file mode 100644
index 0000000000..e917b969fc
--- /dev/null
+++ b/Contrib/PCC/CompSci/CS161/problemSample.pg
@@ -0,0 +1,61 @@
+## DESCRIPTION
+## Precalculus: function decomposition
+## ENDDESCRIPTION
+## KEYWORDS('precalculus', 'function decomposition')
+## DBsubject('WeBWorK')
+## DBchapter('WeBWorK Tutorial')
+## DBsection('Fort Lewis Tutorial 2011')
+## Date('01/30/2011')
+## Author('Paul Pearson')
+## Institution('Fort Lewis College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+###########################
+# Initialization
+DOCUMENT();
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"answerComposition.pl",
+"AnswerFormatHelp.pl",
+);
+TEXT(beginproblem());
+###########################
+# Setup
+Context("Numeric");
+Context()->variables->add(u=>"Real");
+$a = random(2,9,1);
+$f = Formula("sqrt(u)");
+$g = Formula("x^2+$a");
+###########################
+# Main text
+Context()->texStrings;
+BEGIN_TEXT
+Express the function \( y = \sqrt{ x^2 + $a } \)
+as a composition \( y = f(g(x)) \) of two simpler
+functions \( y = f(u) \) and \( u = g(x) \).
+$BR
+$BR
+\( f(u) \) = \{ ans_rule(20) \}
+\{ AnswerFormatHelp("formulas") \}
+$BR
+\( g(x) \) = \{ ans_rule(20) \}
+\{ AnswerFormatHelp("formulas") \}
+END_TEXT
+Context()->normalStrings;
+############################
+# Answer evaluation
+$showPartialCorrectAnswers = 1;
+COMPOSITION_ANS( $f, $g, vars=>['u','x'], showVariableHints=>1);
+############################
+# Solution
+Context()->texStrings;
+BEGIN_SOLUTION
+Solution explanation goes here.
+END_SOLUTION
+Context()->normalStrings;
+COMMENT('MathObject version.');
+ENDDOCUMENT();
\ No newline at end of file
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_01_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_01_AbsValEq.pg
index 5ba2102c78..b326c22447 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_01_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_01_AbsValEq.pg
@@ -62,8 +62,11 @@ $ans = Formula("{-$a, $a}");
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$var] \right\rvert = [$a] `]
+Solve the equation.
+[`` \left\lvert [$var] \right\rvert = [$a] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_02_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_02_AbsValEq.pg
index 29c147dc3a..1cb0eca13a 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_02_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_02_AbsValEq.pg
@@ -63,9 +63,11 @@ $ans = Formula("{$ans1, $ans2}");
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$var] - [$a] \right\rvert = [$b] `]
+Solve the equation.
+[`` \left\lvert [$var] - [$a] \right\rvert = [$b] ``]
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_03_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_03_AbsValEq.pg
index e5d0fd5a6d..c4ee72db7d 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_03_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_03_AbsValEq.pg
@@ -63,10 +63,11 @@ $ans = Formula("{$sol[0],$sol[1]}");
TEXT(beginproblem());
BEGIN_PGML
-Solve: [` \left\lvert 2[$var] + [$a] \right\rvert = [$b] `]
+Solve the eqation.
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[`` \left\lvert 2[$var] + [$a] \right\rvert = [$b] ``]
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_04_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_04_AbsValEq.pg
index 314476dd38..0be15c8490 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_04_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_04_AbsValEq.pg
@@ -56,6 +56,7 @@ Context("Fraction");
$sol1 = Fraction($a-$b*$c,2);
$sol2 = Fraction($a+$b*$c,2);
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$sol1,$sol2}");
######################################
@@ -63,10 +64,11 @@ $ans = Formula("{$sol1,$sol2}");
TEXT(beginproblem());
BEGIN_PGML
-Solve: [`\displaystyle \left\lvert\frac{2 [$var] - [$a]}{[$b]}\right\rvert = [$c] `]
+Solve the equation.
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[``\displaystyle \left\lvert\frac{2 [$var] - [$a]}{[$b]}\right\rvert = [$c] ``]
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_05_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_05_AbsValEq.pg
index 7fa6202600..334c846a00 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_05_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_05_AbsValEq.pg
@@ -47,7 +47,9 @@ $ans = Compute("no solutions");
# Main text
BEGIN_PGML
-Solve the equation: [` \left\lvert [$var] \right\rvert = [$a] `]
+Solve the equation.
+
+[`` \left\lvert [$var] \right\rvert = [$a] ``]
[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_06_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_06_AbsValEq.pg
index c46ca1f959..ab256718f0 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_06_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_06_AbsValEq.pg
@@ -25,6 +25,7 @@ loadMacros(
"contextInequalitiesAllowStrings.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl"
);
@@ -52,13 +53,19 @@ Context()->variables->are($var=>'Real');
Context()->strings->add("No solution"=>{NONE});
$ans = List(-$a);
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{-$a}");
+
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$var] + [$a] \right\rvert = 0 `]
+Solve the equation.
+
+[`` \left\lvert [$var] + [$a] \right\rvert = 0 ``]
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_07_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_07_AbsValEq.pg
index eec32de2f5..ae9c7624d2 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_07_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_07_AbsValEq.pg
@@ -68,8 +68,11 @@ $ans = Formula("{$v1, $v2}");
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$a] - 3[$var] \right\rvert = [$b] `]
+Solve the equation.
+[`` \left\lvert [$a] - 3[$var] \right\rvert = [$b] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_08_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_08_AbsValEq.pg
index 1f4752d59c..cef7f6612e 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_08_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_08_AbsValEq.pg
@@ -55,7 +55,9 @@ $ans = Formula("{$ans1,$ans2}");
# Main text
BEGIN_PGML
-Solve the equation: [` \left\lvert\frac{1}{[$a]}[$var] + [$b]\right\rvert = [$c] `]
+Solve the equation.
+
+[`` \left\lvert\frac{1}{[$a]}[$var] + [$b]\right\rvert = [$c] ``]
[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_09_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_09_AbsValEq.pg
index 3e674193a6..0cffba9659 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_09_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_09_AbsValEq.pg
@@ -25,6 +25,8 @@ loadMacros(
"contextInequalitiesAllowStrings.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "contextFraction.pl",
"PGcourse.pl"
);
@@ -54,13 +56,24 @@ Context()->variables->are($var=>'Real');
Context()->strings->add("No solution"=>{NONE});
$ans = List(($c+$a)/$b, (-$c+$a)/$b);
+Context("Fraction");
+$soln1 = Fraction(($c+$a)/$b);
+$soln2 = Fraction((-$c+$a)/$b);
+
+Context("FiniteSolutionSets");
+#Context()->flags->remove("NumberCheck");
+Context()->variables->are($var=>'Real');
+$ans = Formula("{$soln1,$soln2}");
+
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert[$a]- [$b][$var]\right\rvert = [$c] `]
+Solve the equation.
+
+[`` \left\lvert[$a]- [$b][$var]\right\rvert = [$c] ``]
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_10_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_10_AbsValEq.pg
index df7c402f12..8009b0d5c9 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_10_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_10_AbsValEq.pg
@@ -23,7 +23,7 @@ DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "contextInequalitiesAllowStrings.pl",
+ "contextFiniteSolutionSets.pl",
"PGML.pl",
"PCCmacros.pl",
"PGcourse.pl"
@@ -42,26 +42,21 @@ $a = random(1,9,2);
$b = random(2,8,2);
$c = random(2,6,2);
-$RequiredFormat = "Enter your answer in the form: ".
-"${BITALIC}$var=m.$EITALIC $BR For more than one answer: ".
-"${BITALIC}$var=m$EITALIC or ${BITALIC}$var=n$EITALIC ".
-"(include the word ${BBOLD}or$EBOLD between the solutions), ".
-"or enter your answer as a set ${BITALIC}{m, n}${EITALIC}. $BR".
-"For no solution, type ${BITALIC}NONE${EITALIC} and ".
-"if all real numbers are solutions, ".
-"type ${BITALIC}All real numbers${EITALIC}.";
-Context("Inequalities-AllowStrings");
+Context("FiniteSolutionSets");
Context()->variables->are($var=>'Real');
-Context()->strings->add("No solution"=>{NONE});
-$ans = List(-$c-$b-$a, $c+$b-$a);
+$d = -$c-$b-$a;
+$e = $c+$b-$a;
+$ans = Formula("{$d, $e}");
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$var] + [$a]\right\rvert - [$b] = [$c] `]
+Solve the equation.
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[`` \left\lvert [$var] + [$a]\right\rvert - [$b] = [$c] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_12_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_12_AbsValEq.pg
index 2fb232eeaa..e30e9c89e9 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_12_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_12_AbsValEq.pg
@@ -26,6 +26,7 @@ loadMacros(
"contextInequalitiesAllowStrings.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl"
);
@@ -55,13 +56,19 @@ Context()->variables->are($var=>'Real'); ##
Context()->strings->add("No solution");
$ans = Compute("NONE");
+Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real'); ##
+$ans = Compute("no solutions");
+
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$var] + [$a] \right\rvert + [$b] = [$c] `]
+Solve the equation.
+
+[`` \left\lvert [$var] + [$a] \right\rvert + [$b] = [$c] ``]
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_13_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_13_AbsValEq.pg
index c91d37b8d2..c15d8e3511 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_13_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_13_AbsValEq.pg
@@ -24,7 +24,7 @@ DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "contextInequalitiesAllowStrings.pl",
+ "contextFiniteSolutionSets.pl",
"PGML.pl",
"PCCmacros.pl",
"PGcourse.pl"
@@ -44,25 +44,19 @@ $c = random(2,6,2);
$b = $c + random(1,5,1); #This gives a negative for the absolute value
$d = random(2,8,2);
-$RequiredFormat = "Enter your answer in the form: ".
-"${BITALIC}$var=m.$EITALIC $BR For more than one answer: ".
-"${BITALIC}$var=m$EITALIC or ${BITALIC}$var=n$EITALIC ".
-"(include the word ${BBOLD}or$EBOLD between the solutions), ".
-"or enter your answer as a set ${BITALIC}{m, n}${EITALIC}. $BR".
-"For no solution, type ${BITALIC}NONE${EITALIC} and ".
-"if all real numbers are solutions, ".
-"type ${BITALIC}All real numbers${EITALIC}.";
-Context("Inequalities-AllowStrings");
+Context("FiniteSolutionSets");
Context()->variables->are($var=>'Real');
-$ans = Compute("NONE");
+$ans = Compute("no solutions");
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert [$d] [$var] + [$a]\right\rvert + [$b] = [$c] `]
+Solve the equation.
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[`` \left\lvert [$d] [$var] + [$a]\right\rvert + [$b] = [$c] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_14_AbsValEq.pg b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_14_AbsValEq.pg
index f1122af2fd..e709dd4f26 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_14_AbsValEq.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/43IntAlg_14_AbsValEq.pg
@@ -23,7 +23,7 @@ DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "contextInequalitiesAllowStrings.pl",
+ "contextFiniteSolutionSets.pl",
"PGML.pl",
"PCCmacros.pl",
"PGcourse.pl"
@@ -43,25 +43,19 @@ $n = random(1,5,1);
$b = $a * $n;
$c = random(1,8,1);
-$RequiredFormat = "Enter your answer in the form: ".
-"${BITALIC}$var=m.$EITALIC $BR For more than one answer: ".
-"${BITALIC}$var=m$EITALIC or ${BITALIC}$var=n$EITALIC ".
-"(include the word ${BBOLD}or$EBOLD between the solutions), ".
-"or enter your answer as a set ${BITALIC}{m, n}${EITALIC}. $BR".
-"For no solution, type ${BITALIC}NONE${EITALIC} and ".
-"if all real numbers are solutions, ".
-"type ${BITALIC}All real numbers${EITALIC}.";
-Context("Inequalities-AllowStrings");
+Context("FiniteSolutionSets");
Context()->variables->are($var=>'Real');
-$ans = List($n);
+$ans = Formula("{$n}");
######################################
# Main text
BEGIN_PGML
-Solve: [` \left\lvert[$a] [$var] - [$b]\right\rvert + [$c] = [$c] `]
+Solve the equation.
-[@KeyboardInstructions("If there is more than one solution, enter the solutions as a comma-separated list. If there are no solutions, enter [|NONE|]*.")@]**
+[`` \left\lvert[$a] [$var] - [$b]\right\rvert + [$c] = [$c] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-12-Absolute-value.pg b/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-12-Absolute-value.pg
index 9c429bc743..030f4088bb 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-12-Absolute-value.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-12-Absolute-value.pg
@@ -34,6 +34,8 @@ loadMacros(
"AnswerFormatHelp.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl"
);
@@ -91,6 +93,12 @@ Context()->{error}{convert} = sub {
return $message;
};
+Context("Fraction");
+$soln1 = Fraction(($a+$b)/$c);
+$soln2 = Fraction(-($a+$b)/$c);
+
+Context("FiniteSolutionSets");
+$sol = Formula("{$soln1,$soln2}");
###################################
# Main text
@@ -98,10 +106,10 @@ Context()->{error}{convert} = sub {
BEGIN_PGML
a. Write the equation [`[$eqn]`] as two separate equations. Neither of your equations should use absolute value.
- [__]{$multians}{width=>30}
+ [__]{$multians}{width=>30}
[__]{$multians}{width=>30}
-a. Solve both equations above. [@KeyboardInstructions('Enter your solutions as a comma-separated list.')@]**
+a. Solve the original equation by solveing each of the equations above.
[__]{$sol}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-14-Absolute-value.pg b/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-14-Absolute-value.pg
index 1bfae126be..3f10907ec3 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-14-Absolute-value.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/MCH1-3-3-14-Absolute-value.pg
@@ -104,7 +104,7 @@ $sol = Formula("{$sol1,$sol2}");
BEGIN_PGML
a. Write the equation [`[$eqn]`] as two separate equations. Neither of your equations should use absolute value.
- [__]{$multians}{width=>30}
+ [__]{$multians}{width=>30}
[__]{$multians}{width=>30}
a. Solve the equation [`[$eqn]`], possibly by solving each equation from part a.
diff --git a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_60.pg b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_60.pg
index 12467fb744..54c0d0b161 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_60.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_60.pg
@@ -52,9 +52,9 @@ $ans = Formula("{-$x}");
BEGIN_PGML
Solve the equation _by inspection_ (meaning in your head).
->>[``\left\lvert [$a]x + [$b]\right\rvert = 0 ``]<<
+[``\left\lvert [$a]x + [$b]\right\rvert = 0 ``]
-[@KeyboardInstructions('If there are multiple solutions, enter the solutions as a comma-separated list.')@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_70.pg b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_70.pg
index abc2e9bb19..84c305410b 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_70.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_70.pg
@@ -72,9 +72,9 @@ $ans = Formula("{$an1, $an2}");
BEGIN_PGML
The equation [` \lvert x\rvert =\lvert y\rvert `] is satisfied if [` x=y `] or [` x=-y `]. Use this fact to solve the following equation.
->>[``\left\lvert [$f] \right\rvert = \left\lvert [$g] \right\rvert``]<<
+[``\left\lvert [$f] \right\rvert = \left\lvert [$g] \right\rvert``]
-[@KeyboardInstructions('If there is more than one solution, enter the solutions as a comma-separated list.')@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_72.pg b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_72.pg
index 4be5b9c6dd..a32178583b 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_72.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/ks_2_7_72.pg
@@ -29,6 +29,8 @@ loadMacros(
"MathObjects.pl",
"unionLists.pl",
"contextInequalities.pl",
+ "contextFiniteSolutionSets.pl",
+ "contextFraction.pl",
"PGML.pl",
"PCCmacros.pl",
"PGcourse.pl"
@@ -42,22 +44,24 @@ $showPartialCorrectAnswers = 1;
##############################################################
-Context("Numeric");
-Context()->strings->add(none=>{},EmptySet=>{alias=>"none"});
-
$a = random(2,6,2);
$b = random(-5,-1,2);
+$c = -$a-$b;
+
+Context("Fraction");
+$c = Fraction( -$a-$b,2);
-$ans = List("(-$a-$b)/2");
+Context("FiniteSolutionSets");
+$ans = Formula("{$c}");
##############################################################
BEGIN_PGML
The equation [` \lvert x\rvert =\lvert y\rvert `] is satisfied if [` x=y `] or [` x=-y `]. Use this fact to solve the following equation.
->>[``\left\lvert x + [$a] \right\rvert = \left\lvert x + [$b] \right\rvert``]<<
+[``\left\lvert x + [$a] \right\rvert = \left\lvert x + [$b] \right\rvert``]
-[@KeyboardInstructions('If there is more than one solution, enter the solutions as a comma-separated list.')@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/lh1-6_66.pg b/Contrib/PCC/Math95/AbsValueEquations/lh1-6_66.pg
index 0976d5fd61..def8cbd224 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/lh1-6_66.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/lh1-6_66.pg
@@ -45,7 +45,11 @@ $answer = Formula("{$ans1,$ans2}");
BEGIN_PGML
-Solve the equation [`\left\lvert [$a] x ? {[$b]}\right\rvert =[$c] `]. [@KeyboardInstructions('If there is more than one solution, enter the solutions as a comma-separated list.')@]**
+Solve the equation.
+
+[``\left\lvert [$a] x ? {[$b]}\right\rvert =[$c] ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$answer}{width=>20}
END_PGML
diff --git a/Contrib/PCC/Math95/AbsValueEquations/pn4.pg b/Contrib/PCC/Math95/AbsValueEquations/pn4.pg
index 8c3e4f4a1e..93d7fa23d6 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/pn4.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/pn4.pg
@@ -29,6 +29,8 @@ loadMacros(
"extraAnswerEvaluators.pl",
"PGML.pl",
"PCCmacros.pl",
+ "contextFraction.pl",
+ "contextFiniteSolutionSets.pl",
"PGcourse.pl"
);
@@ -45,12 +47,21 @@ $e=-($b+$c);
$ans1 = "$d/$a";
$ans2= "$e/$a";
+Context("Fraction");
+$ans1 = Fraction($d,$a);
+$ans2 = Fraction($e,$a);
+
+Context("FiniteSolutionSets");
+$ans = Formula("{$ans1,$ans2}");
+
BEGIN_PGML
-Solve the following equation. [@KeyboardInstructions('If there is more than one solution, write them separated by commas.')@]**
+Solve the equation.
+
+[`` \left\lvert [$pol] \right\rvert = [$c] ``]
->>[`` \left\lvert [$pol] \right\rvert = [$c] ``]<<
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
-[__]{List($ans1,$ans2)}{width=>20}
+[__]{$ans}{width=>20}
END_PGML
diff --git a/Contrib/PCC/Math95/AbsValueEquations/s5p6.pg b/Contrib/PCC/Math95/AbsValueEquations/s5p6.pg
index d78a2c1b73..03ed192dc6 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/s5p6.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/s5p6.pg
@@ -20,6 +20,8 @@ loadMacros(
"PGstandard.pl",
"PGchoicemacros.pl",
"PGML.pl",
+ "contextFiniteSolutionSets.pl",
+ "contextFraction.pl",
"PCCmacros.pl",
"PGcourse.pl"
);
@@ -33,19 +35,22 @@ $a = random(2,8,2);
$b = random(2,9,1);
$c = random(3,9,2);
$d = random(2,9,1);
-$answer1 = ($b+$d)/($a-$c);
-$answer2 = ($b-$d)/($a+$c);
+Context("Fraction");
+$answer1 = Fraction($b+$d,$a-$c);
+$answer2 = Fraction($b-$d,$a+$c);
if ($answer2 < $answer1)
{ $dummy = $answer1; $answer1 = $answer2; $answer2 = $dummy; }
-$ans = List($answer1,$answer2);
+Context("FiniteSolutionSets");
+$ans = Formula("{$answer1,$answer2}");
BEGIN_PGML
-Solve the equation:
->>[`` \left\lvert [$a] x - [$b] \right\rvert = \left\lvert [$c] x + [$d]\right\rvert ``]<<
+Solve the equation.
-[@KeyboardInstructions('If there is more than one solution, enter the solutions as a comma-separated list.')@]**
+[`` \left\lvert [$a] x - [$b] \right\rvert = \left\lvert [$c] x + [$d]\right\rvert ``]
+
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/AbsValueEquations/zhu3.pg b/Contrib/PCC/Math95/AbsValueEquations/zhu3.pg
index 28790bcc14..b8747695c3 100644
--- a/Contrib/PCC/Math95/AbsValueEquations/zhu3.pg
+++ b/Contrib/PCC/Math95/AbsValueEquations/zhu3.pg
@@ -22,6 +22,8 @@ loadMacros(
"PGML.pl",
"MathObjects.pl",
"PCCmacros.pl",
+ "contextFiniteSolutionSets.pl",
+ "contextFraction.pl",
"PGcourse.pl"
);
@@ -39,14 +41,22 @@ $h=$a+$c;
$ans1 = "$e/$f";
$ans2= "$g/$h";
$ans = List($ans1,$ans2);
-$f = Formula("$a x + $b")->reduce;
+$func = Formula("$a x + $b")->reduce;
+
+Context("Fraction");
+$ans1 = Fraction($e,$f);
+$ans2 = Fraction($g,$h);
+
+Context("FiniteSolutionSets");
+$ans = Formula("{$ans1,$ans2}");
+if ($ans1 == $ans2) {$ans = Formula("{$ans1}");};
BEGIN_PGML
-Solve the following equation.
+Solve the equation.
->>[``\left\lvert [$f] \right\rvert = \left\lvert[$c] x +[$d]\right\rvert ``]<<
+[``\left\lvert [$func] \right\rvert = \left\lvert[$c] x +[$d]\right\rvert ``]
-[@KeyboardInstructions('If there is more than one solution, enter the solutions as a comma-separated list.')@]**
+[@KeyboardInstructions("If there are no solutions, you may type [|no solutions|]*.")@]**
[__]{$ans}{width=>20}
diff --git a/Contrib/PCC/Math95/Functions/Functions13.pg b/Contrib/PCC/Math95/Functions/Functions13.pg
index 9ea84ea00e..93db162fc8 100644
--- a/Contrib/PCC/Math95/Functions/Functions13.pg
+++ b/Contrib/PCC/Math95/Functions/Functions13.pg
@@ -32,8 +32,9 @@ loadMacros(
"PCCmacros.pl",
"PCCgraphMacros.pl",
"PGML.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
-
);
@@ -64,38 +65,24 @@ $xmax = max($x2+3,5);
$ymin = -5;
$ymax = 5;
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ minor xtick = {$xmin,...,$xmax},
+ trig format plots=rad,
+ ]
+ \addplot+[domain=$xmin:$xmax, smooth] {$f};
+ \legend{\(y=$fname(x)\)};
+\end{axis}
+END_TIKZ
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-
- $gr->lb('reset');
- for my $j ($xmin+1..$xmax-1) {
- if (abs($j)<10**(-10) or $j%2 == 1) {next;}
- $gr->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j ($ymin+1..$ymax-1) {
- if (abs($j)<10**(-10)) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($xmax,0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$ymax,'y','black','left','top','large'));
-
-
-add_functions($gr, "$f for x in <$xmin,$xmax>" .
- " using color:blue and weight:1");
-$start = $xmin;
-$stop = $xmax;
-$pixel = ($xmax-$xmin)/240;
-$gr->moveTo($start+3*$pixel,$f->eval(x=>$start+3*$pixel));
-$gr->arrowTo($start,$f->eval(x=>$start),'blue',1);
-$gr->moveTo($stop-3*$pixel,$f->eval(x=>$stop-3*$pixel));
-$gr->arrowTo($stop,$f->eval(x=>$stop),'blue',1);
$peak = $q+$s;
$trough = $peak+$q;
@@ -109,12 +96,12 @@ Use the graph of [`[$fname]`] below to evaluate the given expressions. (Estimate
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>240, height=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
-a. [`[$fname]([$x1])={}`][_____]{$y1->cmp(tolType=>absolute, tolerance=>0.1)}
+a. [`[$fname]([$x1])={}`][_____]{$y1->cmp(tolType=>'absolute', tolerance=>0.1)}
-a. [`[$fname]([$x2])={}`][_____]{$y2->cmp(tolType=>absolute, tolerance=>0.1)}
+a. [`[$fname]([$x2])={}`][_____]{$y2->cmp(tolType=>'absolute', tolerance=>0.1)}
END_PGML
diff --git a/Contrib/PCC/Math95/Functions/Functions14.pg b/Contrib/PCC/Math95/Functions/Functions14.pg
index a3bd415e60..f2eb5ece4b 100644
--- a/Contrib/PCC/Math95/Functions/Functions14.pg
+++ b/Contrib/PCC/Math95/Functions/Functions14.pg
@@ -32,6 +32,8 @@ loadMacros(
"PCCmacros.pl",
"PCCgraphMacros.pl",
"PGML.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -65,27 +67,6 @@ $ymin = -10;
$ymax = 10;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-
- $gr->lb('reset');
- for my $j ($xmin+1..$xmax-1) {
- if (abs($j)<10**(-10) or $j%2 == 1) {next;}
- $gr->lb( new Label($j,0, $j,'black','center','top','large'));
- }
-
- for my $j ($ymin+1..$ymax-1) {
- if (abs($j)<10**(-10) or $j%2 == 1) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($xmax,0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$ymax,'y','black','left','top','large'));
-
-
@xvalues = ($xmin,$xmax);
if ($a > 0) {
push(@xvalues,sqrt(($ymax-$k)/$a)+$h);
@@ -98,15 +79,25 @@ else {
@xvalues = num_sort(@xvalues);
$start = $xvalues[1];
$stop = $xvalues[2];
-$pixel = ($xmax-$xmin)/240;
-add_functions($gr, "$f for x in <$start,$stop>" .
- " using color:blue and weight:1");
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ ]
+ \addplot+[domain=$start:$stop, smooth] {$a*(x-$h)^2+$k};
+ \legend{\(y=$fname(x)\)};
+\end{axis}
+END_TIKZ
-$gr->moveTo($start+$pixel,$a*($start+$pixel-$h)**2+$k);
-$gr->arrowTo($start,$a*($start-$h)**2+$k,'blue',1);
-$gr->moveTo($stop-$pixel,$a*($stop-$pixel-$h)**2+$k);
-$gr->arrowTo($stop,$a*($stop-$h)**2+$k,'blue',1);
$direction = ($a == 1) ? "upward" : "downward";
$yint = $f->eval(x=>0);
@@ -121,7 +112,7 @@ Use the graph of [`[$fname]`] below to evaluate the given expressions. (Estimate
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>240, height=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
a. [`[$fname]([$x1])={}`][_____]{$y1->cmp(tolType=>absolute, tolerance=>0.1)}
diff --git a/Contrib/PCC/Math95/Functions/Functions15.pg b/Contrib/PCC/Math95/Functions/Functions15.pg
index 7afe931662..a28e820906 100644
--- a/Contrib/PCC/Math95/Functions/Functions15.pg
+++ b/Contrib/PCC/Math95/Functions/Functions15.pg
@@ -50,7 +50,7 @@ $x[$i] = $x[$i-1]+$s;
}
for my $i (0..4) {
-Real($y[$i] = random(-2,10,0.1));
+Real($y[$i] = Real(random(-2,10,0.1)));
}
diff --git a/Contrib/PCC/Math95/Functions/Functions17.pg b/Contrib/PCC/Math95/Functions/Functions17.pg
index fa117da356..c400318535 100644
--- a/Contrib/PCC/Math95/Functions/Functions17.pg
+++ b/Contrib/PCC/Math95/Functions/Functions17.pg
@@ -42,7 +42,7 @@ loadMacros(
##############################################
TEXT(beginproblem());
-$fname = RandomVariableName(type=>function);
+$fname = RandomVariableName(type=>'function');
Context("Numeric");
@@ -80,13 +80,13 @@ a. Give a numeric representation of [`[$fname]`]:
[@
BeginTable(border=>1, tex_border=>"1pt", spacing=>0, padding=>4).
AlignedRow([general_math_ev3('x'),general_math_ev3('0'),general_math_ev3('1'),general_math_ev3('2'),general_math_ev3('3'),general_math_ev3('4')], align=>LEFT, separation=>0).
-AlignedRow([general_math_ev3("$fname(x)"), ans_rule(1), ans_rule(1), ans_rule(1), ans_rule(1), ans_rule(1)], align=>RIGHT, separation=>0).
+AlignedRow([general_math_ev3("$fname(x)"), ans_rule(1), ans_rule(1), ans_rule(1), ans_rule(1), ans_rule(1)], align=>'RIGHT', separation=>0).
EndTable()
@]*
a. Give a formula for [`[$fname]`].
- [@KeyboardInstructions(qw!Include the function's name and an equals sign in the formula.!)@]**
+ [@KeyboardInstructions(qq!Include the function's name and an equals sign in the formula.!)@]**
[__________]
diff --git a/Contrib/PCC/Math95/Functions/Functions20.pg b/Contrib/PCC/Math95/Functions/Functions20.pg
index 5dd9e01b78..d54836f84a 100644
--- a/Contrib/PCC/Math95/Functions/Functions20.pg
+++ b/Contrib/PCC/Math95/Functions/Functions20.pg
@@ -27,10 +27,11 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "PGgraphmacros.pl",
"PGML.pl",
"PCCmacros.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -57,7 +58,8 @@ $f = Formula("$a x^3+$b x^2+$c x + $d");
$crit = (-2*$b+sqrt(4*$b**2-12*$a*$c))/(6*$a);
$peak = random(2,5,1);
-$f = $f*$peak/($f->eval(x=>$crit));
+$ch = $f->eval(x=>$crit);
+$f = $f*$peak/$ch;
Context("Interval");
$domain = Interval("[$r[0],$r[2])");
@@ -70,30 +72,24 @@ $ymin = -$peak-3;
$ymax = $peak+3;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-
- $gr->lb('reset');
- for my $j ($xmin+1..$xmax-1) {
- if (abs($j)<10**(-10) or $j%2 != 0) {next;}
- $gr->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j ($ymin+1..$ymax-1) {
- if (abs($j)<10**(-10) or $j%2 != 0) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($xmax,0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$ymax,'y','black','left','top','large'));
-
-add_functions($gr, "$f for x in <$r[0],$r[2]>" .
- " using color:blue and weight:1");
-$gr->stamps( closed_circle($r[0],0,'blue') );
-$gr->stamps( open_circle($r[2],0,'blue') );
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+[-,domain=$r[0]:$r[2],samples=50] {($a*x^3+$b*x^2+$c*x + $d)*$peak/$ch};
+ \addplot[soliddot] coordinates {($r[0],0)};
+ \addplot[hollowdot] coordinates {($r[2],0)};
+\end{axis}
+END_TIKZ
$starty = $f->eval(x=>$r[0]);
$endy = $f->eval(x=>$r[2]);
@@ -107,9 +103,9 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>240, height=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
- [@KeyboardInstructions('If you need to enter [`\infty`], you can type [|inf|]* or [|infinity|]*. If you need to union two (or more) intervals, use the letter [|U|]*. For example, to enter [`(-\infty,5)\cup(5,10]`] you can type [|(-inf,5)U(5,10]|]*.')@]**
+[@KeyboardInstructions('If you need to enter [`\infty`], you can type [|inf|]* or [|infinity|]*. If you need to union two (or more) intervals, use the letter [|U|]*. For example, to enter [`(-\infty,5)\cup(5,10]`] you can type [|(-inf,5)U(5,10]|]*.')@]**
The function has domain [__________]{$domain} and range [__________]{$range}.
diff --git a/Contrib/PCC/Math95/LinearEquations/LinearEquations3.pg b/Contrib/PCC/Math95/LinearEquations/LinearEquations3.pg
index 41df236467..ab2ffa03b2 100644
--- a/Contrib/PCC/Math95/LinearEquations/LinearEquations3.pg
+++ b/Contrib/PCC/Math95/LinearEquations/LinearEquations3.pg
@@ -11,8 +11,8 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
-
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"contextFraction.pl"
);
@@ -36,25 +36,24 @@ $xmax = max(6,$d+2);
$ymin = -6;
$ymax = 6;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-$gr->lb('reset');
-for my $i (floor($xmin/2)+1..-1,1..ceil($xmax/2)-1) {
- $gr->lb( new Label(2*$i,0,2*$i,'black','center','top','large'));
-}
-for my $i ($ymin+1..-1,1..$ymax-1) {
- $gr->lb( new Label(0,$i,$i,'black','right','middle','large'));
-}
-Context("Numeric");
($start,$stop) = (num_sort($xmin,$xmax,($ymin-$bperl)/$mperl,($ymax-$bperl)/$mperl))[1,2];
-$gr->moveTo(0,$bperl);
-$gr->arrowTo($start,$mperl*$start+$bperl,'blue',1);
-$gr->moveTo(0,$bperl);
-$gr->arrowTo($stop,$mperl*$stop+$bperl,'blue',1);
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ ]
+ \addplot+[domain=$start:$stop] {$mperl*x+$b};
+\end{axis}
+END_TIKZ
##############################################
@@ -67,16 +66,12 @@ BEGIN_TEXT
Below is a line's graph.
$PAR
-
-$BBLOCKQUOTE
\{ image( insertGraph($gr),
width=>240,height=>240,tex_size=>800 ) \}
$PAR
The slope of this line is \{ ans_rule(10) \}.
-$EBLOCKQUOTE
-
END_TEXT
Context()->normalStrings;
diff --git a/Contrib/PCC/Math95/LinearEquations/LinearEquations4.pg b/Contrib/PCC/Math95/LinearEquations/LinearEquations4.pg
index d270f1c7e1..5cdf3aa5d1 100644
--- a/Contrib/PCC/Math95/LinearEquations/LinearEquations4.pg
+++ b/Contrib/PCC/Math95/LinearEquations/LinearEquations4.pg
@@ -11,8 +11,8 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
-
- "PGgraphmacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"contextFraction.pl"
);
@@ -36,27 +36,24 @@ $xmax = max(6,$d+2);
$ymin = -6;
$ymax = 6;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-$gr->lb('reset');
-for my $i (floor($xmin/2)+1..-1,1..ceil($xmax/2)-1) {
- $gr->lb( new Label(2*$i,0,2*$i,'black','center','top','large'));
-}
-for my $i ($ymin+1..-1,1..$ymax-1) {
- $gr->lb( new Label(0,$i,$i,'black','right','middle','large'));
-}
-
-Context("Numeric");
-$h = non_zero_random(-3,3,1);
-($start,$stop) = (num_sort($xmin,$xmax,($ymin-$bperl)/$mperl+$h,($ymax-$bperl)/$mperl+$h))[1,2];
-$gr->moveTo($h,$bperl);
-$gr->arrowTo($start,$mperl*($start-$h)+$bperl,'blue',1);
-$gr->moveTo($h,$bperl);
-$gr->arrowTo($stop,$mperl*($stop-$h)+$bperl,'blue',1);
-
+($start,$stop) = (num_sort($xmin,$xmax,($ymin-$bperl)/$mperl,($ymax-$bperl)/$mperl))[1,2];
+
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick = {$xmin,...,$xmax},
+ minor ytick = {$ymin,...,$ymax},
+ ]
+ \addplot+[domain=$start:$stop] {$mperl*x+$b};
+\end{axis}
+END_TIKZ
##############################################
diff --git a/Contrib/PCC/Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg b/Contrib/PCC/Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg
index 4437f0a316..013bc6bd0d 100644
--- a/Contrib/PCC/Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg
+++ b/Contrib/PCC/Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg
@@ -32,10 +32,11 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "PGgraphmacros.pl",
"PGML.pl",
"PCCmacros.pl",
"PCCgraphMacros.pl",
+ "PGtikz.pl",
+ "ORCCA.pl",
"PGcourse.pl",
);
@@ -69,32 +70,23 @@ $ymin = -5;
$ymax = 5;
-$gr = init_graph($xmin,$ymin,$xmax,$ymax,
-axes=>[0,0],
-grid=>[$xmax-$xmin,$ymax-$ymin],
-size=>[240,240]
-);
-
- $gr->lb('reset');
- for my $j ($xmin+1..$xmax-1) {
- if (abs($j)<10**(-10) or $j%2 != 0) {next;}
- $gr->lb( new Label($j, 0, $j,'black','center','top','large'));
- }
-
- for my $j ($ymin+1..$ymax-1) {
- if (abs($j)<10**(-10) or $j%2 != 0) {next;}
- $gr->lb( new Label(0, $j, $j,'black','right','middle','large'));
- }
-
- $gr->lb(new Label($xmax,0,'x','black','right','bottom','large'));
- $gr->lb(new Label(0,$ymax,'y','black','left','top','large'));
-
-
-add_functions($gr, "$f for x in <$left,$right>" .
- " using color:blue and weight:1");
-$gr->stamps( closed_circle($left,$f->eval(x=>$left),'blue') );
-$gr->moveTo($right-0.2,sqrt($right-0.2));
-$gr->arrowTo($right,sqrt($right),'blue',1);
+$gr = createTikZImage();
+$gr->addToPreamble(latexImagePreamble());
+$gr->BEGIN_TIKZ
+\begin{axis}[
+ xmin = $xmin,
+ xmax = $xmax,
+ ymin = $ymin,
+ ymax = $ymax,
+ xtick =,
+ ytick =,
+ minor xtick =,
+ minor ytick =,
+ ]
+ \addplot+[-{Kite},domain=$left:$right,smooth] {$f};
+ \addplot[soliddot] coordinates {(0,0)};
+\end{axis}
+END_TIKZ
$starty = $f->eval(x=>$left);
$endy = $f->eval(x=>$right);
@@ -111,9 +103,9 @@ A function is graphed.
[@EnlargeImageStatementPGML()@]**
->>[@image(insertGraph($gr), width=>240, height=>240, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
+>>[@image($gr, width=>300, tex_size=>TeXscalar(), extra_html_tags=>"alt = '$ALT' title = '$ALT'")@]*<<
- [@KeyboardInstructions('If you need to enter [`\infty`], you can type [|inf|]* or [|infinity|]*. If you need to union two (or more) intervals, use the letter [|U|]*. For example, to enter [`(-\infty,5)\cup(5,10]`] you can type [|(-inf,5)U(5,10]|]*.')@]**
+[@KeyboardInstructions('If you need to enter [`\infty`], you can type [|inf|]* or [|infinity|]*. If you need to union two (or more) intervals, use the letter [|U|]*. For example, to enter [`(-\infty,5)\cup(5,10]`] you can type [|(-inf,5)U(5,10]|]*.')@]**
The function has domain [__________]{$domain} and range [__________]{$range}.
diff --git a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg
index a28a8e622b..e363c5dde1 100644
--- a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg
+++ b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg
@@ -60,7 +60,7 @@ BEGIN_PGML
Simplify the expression. Do not assume the variables take only positive values.
-[@KeyboardInstructions('To enter [`\sqrt{x}`], type [|sqrt(x)|]*. To enter [`|x|`], type [||x||]* or [|abs(x)|]*.@]**
+[@KeyboardInstructions('To enter [`\sqrt{x}`], type [|sqrt(x)|]*. To enter [`|x|`], type [||x||]* or [|abs(x)|]*.')@]**
>>[``[$display]``]<<
diff --git a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg
index bdf8b17e79..7d17655eb3 100644
--- a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg
+++ b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg
@@ -53,7 +53,7 @@ BEGIN_PGML
Use rational exponents to write the expression.
-[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.@]**
+[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.') @]**
[``[$problem]``]=[_________________]{$ans}
diff --git a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg
index 220b816680..3789a5de0d 100644
--- a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg
+++ b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg
@@ -59,7 +59,7 @@ BEGIN_PGML
Use rational exponents to write the expression.
-[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.@]**
+[@KeyboardInstructions('To enter [`x^{m/n}`], type [|x^(m/n)|]*.')@]**
[``[$problem]=``][_________________]{$ans}
diff --git a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg
index 2c6db63e98..dd73389936 100644
--- a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg
+++ b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg
@@ -40,7 +40,8 @@ Context()->operators->set(
'//' => {class => 'bizarro::BOP::divide', isCommand => 1},
);
$var = list_random('x','y','z','t','r','m','n','a','b','c');
-Context()->variables->are($var=>'Real',limits=>[0,1]);
+Context()->variables->are($var=>'Real');
+Context()->variables->set($var=>{limits=>[0,1]});
Context()->flags->set(reduceConstants=>0);
$n = random(3,11,2);
@@ -50,7 +51,6 @@ $n = random(3,11,2);
Context()->functions->undefine('sqrt','abs');
-
$ans = Formula("$var^(2/$n)");
$evaluator = $ans->cmp(
diff --git a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg
index 4cb443b2d0..be03f4d96a 100644
--- a/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg
+++ b/Contrib/PCC/Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg
@@ -59,7 +59,7 @@ BEGIN_PGML
Simplify the expression.
-[@KeyboardInstructions('To enter [`\sqrt{x}`], type [|sqrt(x)|]*. To enter [`|x|`], type [||x||]* or [|abs(x)|]*.@]**
+[@KeyboardInstructions('To enter [`\sqrt{x}`], type [|sqrt(x)|]*. To enter [`|x|`], type [||x||]* or [|abs(x)|]*.')@]**
>>[``[$display]``]<<
diff --git a/Contrib/PCC/Math95/SimplifyRadicals/SimplifyRadicals24.pg b/Contrib/PCC/Math95/SimplifyRadicals/SimplifyRadicals24.pg
index 9878789f89..327ad66d5c 100644
--- a/Contrib/PCC/Math95/SimplifyRadicals/SimplifyRadicals24.pg
+++ b/Contrib/PCC/Math95/SimplifyRadicals/SimplifyRadicals24.pg
@@ -19,7 +19,7 @@ DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
- "contextLimitedRadical.pl",
+ "contextForm.pl",
"PGML.pl",
"PCCmacros.pl",
"PGcourse.pl",
@@ -41,14 +41,18 @@ $e = $c**2-$b;
$expression = "\dfrac{$a}{\sqrt{$b}+$c}";
$stringans = "($d-$a sqrt($b))/$e";
+if ($e == 1) {$stringans = "$d-$a sqrt($b)";};
+if ($e == -1) {$stringans = "-$d+$a sqrt($b)";};
$G = gcd($a,$d);
$D = $d/$G;
$A = $a/$G;
$factored = "$G($D-$A sqrt($b))/$e";
+if ($e == 1) {$factored = "$G($D-$A sqrt($b))";};
+if ($e == -1) {$factored = "$G(-$D+$A sqrt($b))";};
-Context("LimitedRadical");
+Context("Form");
$ans = Formula("$stringans");
-if ($G != 1) {$ans = OneOf(Formula("$stringans"),Formula("$factored"));};
+#if ($G != 1) {$ans = OneOf(Formula("$stringans"),Formula("$factored"));};
##############################################
diff --git a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg
index 67c35455bd..3a72b55ead 100644
--- a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg
+++ b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg
@@ -47,6 +47,7 @@ $right = Formula("$b")->reduce;
$r[0] = Fraction("$b**3+$a","1");
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$r[0]}");
diff --git a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg
index 0531cad9cf..919c123a9e 100644
--- a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg
+++ b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg
@@ -52,6 +52,7 @@ $h2 = sqrt($a*$r[0]+$b); #helper variable 2
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$r[0]}");
diff --git a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg
index aec6b9dce2..6260bce4ba 100644
--- a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg
+++ b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg
@@ -54,6 +54,7 @@ $h3 = sqrt($r[0]); # helper variable for checking solution
$h4 = sqrt($h2); # helper variable for checking solution
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$r[0]}");
diff --git a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg
index b28a914a51..4e8cd05a2b 100644
--- a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg
+++ b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg
@@ -54,6 +54,7 @@ $h3 = sqrt($r[0]+$b); # helper variable for checking solution
$h4 = sqrt($h2+$b); # helper variable for checking solution
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$r[0]}");
diff --git a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg
index 7f671cf649..78133298b0 100644
--- a/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg
+++ b/Contrib/PCC/Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg
@@ -54,6 +54,7 @@ $h3 = sqrt($b-$r[0]); # helper variable for checking solution
$h4 = sqrt($b-$h2); # helper variable for checking solution
Context("FiniteSolutionSets");
+Context()->variables->are($var=>'Real');
$ans = Formula("{$r[0]}");
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setAbsolute_Value.def b/Contrib/PCC/OldSetDefinitions/MTH060/setAbsolute_Value.def
new file mode 100644
index 0000000000..d24431c409
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setAbsolute_Value.def
@@ -0,0 +1,12 @@
+
+openDate = 12/11/2013 at 12:12am PST
+dueDate = 06/30/2014 at 01:06am PDT
+answerDate = 06/30/2014 at 01:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AbsoluteValue.pg
+description = basic absolute value calculations
+problemList =
+BasicAlgebra/NumberBasics/AbsoluteValue10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setAccount_Interest_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setAccount_Interest_Word_Problems.def
new file mode 100644
index 0000000000..567cc4e823
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setAccount_Interest_Word_Problems.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 01:28am PST
+dueDate = 06/30/2014 at 02:38am PDT
+answerDate = 06/30/2014 at 02:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AccountInterestWordProblems.pg
+description = word problems involving accounts earning a net interest rate
+problemList =
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setAdd_Subtract_Fractions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setAdd_Subtract_Fractions.def
new file mode 100644
index 0000000000..f21431ff96
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setAdd_Subtract_Fractions.def
@@ -0,0 +1,42 @@
+
+openDate = 12/11/2013 at 12:06am PST
+dueDate = 06/30/2014 at 01:03am PDT
+answerDate = 06/30/2014 at 01:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AddSubtractFractions.pg
+description = adding and subtracting fractions
+problemList =
+BasicAlgebra/FractionArithmetic/AddFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions04.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions08.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions09.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions12.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions22.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions24.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions26.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions01.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions05.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions90.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions90.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions100.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def
new file mode 100644
index 0000000000..479a1ee2ac
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def
@@ -0,0 +1,38 @@
+
+openDate = 12/11/2013 at 12:42am PST
+dueDate = 06/30/2014 at 01:44am PDT
+answerDate = 06/30/2014 at 01:44am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicPercentageWordProblems.pg
+description = percent and decimal conversion; percent calculations
+problemList =
+BasicAlgebra/NumberBasics/PercentDecimalConversion10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber110.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber120.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber90.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber100.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Word_Problems.def
new file mode 100644
index 0000000000..2b1d8035de
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setBasic_Word_Problems.def
@@ -0,0 +1,35 @@
+
+openDate = 12/11/2013 at 12:36am PST
+dueDate = 06/30/2014 at 01:40am PDT
+answerDate = 06/30/2014 at 01:40am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicWordProblems.pg
+description = translating English to math equations; solving some basic word problems
+problemList =
+BasicAlgebra/EnglishToMath/EnglishToMathEquation10.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation20.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation30.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation40.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation50.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation60.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation70.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation80.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation90.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation100.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation110.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation120.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation130.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation140.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation150.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation160.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation170.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation180.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation30.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation40.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setCoordinate_System.def b/Contrib/PCC/OldSetDefinitions/MTH060/setCoordinate_System.def
new file mode 100644
index 0000000000..72a8c5a5dd
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setCoordinate_System.def
@@ -0,0 +1,14 @@
+
+openDate = 12/11/2013 at 01:00am PST
+dueDate = 06/30/2014 at 02:10am PDT
+answerDate = 06/30/2014 at 02:10am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/CoordinateSystem.pg
+description = the basics of the Cartesian coordinate system
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/Quadrant10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setDistance_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setDistance_Word_Problems.def
new file mode 100644
index 0000000000..28b4367034
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setDistance_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 01:26am PST
+dueDate = 06/30/2014 at 02:37am PDT
+answerDate = 06/30/2014 at 02:37am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/DistanceWordProblems.pg
+description = word problems involving distance traveled
+problemList =
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setEvaluating_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setEvaluating_Expressions.def
new file mode 100644
index 0000000000..4dcf1a4cda
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setEvaluating_Expressions.def
@@ -0,0 +1,27 @@
+
+openDate = 12/11/2013 at 12:02am PST
+dueDate = 06/30/2014 at 01:01am PDT
+answerDate = 06/30/2014 at 01:01am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/EvaluatingExpressions.pg
+description = evaluating symbols in mathematical expressions
+problemList =
+BasicAlgebra/EvaluateExpressions/evaluate10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate12.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate15.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate18.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate20.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate50.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate60.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate80.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate90.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar0.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar5.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluateInContext10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluateInContext20.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/FahrenheitCelsius10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula40.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Basics.def b/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Basics.def
new file mode 100644
index 0000000000..1451106031
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Basics.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 12:18am PST
+dueDate = 06/30/2014 at 01:14am PDT
+answerDate = 06/30/2014 at 01:14am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentBasics.pg
+description = the basics of exponents
+problemList =
+BasicAlgebra/Exponents/ExponentDefinition10.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition20.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Rules.def b/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Rules.def
new file mode 100644
index 0000000000..10b72c3844
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setExponent_Rules.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:20am PST
+dueDate = 06/30/2014 at 01:16am PDT
+answerDate = 06/30/2014 at 01:16am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentRules.pg
+description = the rules of working with exponents
+problemList =
+BasicAlgebra/Exponents/exponentsMultiplication10.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication09.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication0.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication15.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication20.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication23.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication24.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Graph.def b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Graph.def
new file mode 100644
index 0000000000..8e8987a989
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Graph.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 01:12am PST
+dueDate = 06/30/2014 at 02:22am PDT
+answerDate = 06/30/2014 at 02:22am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByGraph.pg
+description = using a grpah to identify the equation of a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def
new file mode 100644
index 0000000000..a17e032d8a
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 01:14am PST
+dueDate = 06/30/2014 at 02:24am PDT
+answerDate = 06/30/2014 at 02:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByPointSlope.pg
+description = use information about a point and slope to find an equation of a line
+problemList =
+BasicAlgebra/PointSlopeForm/PointSlopeBasics10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeBasics20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeBasics30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept40.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation40.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation50.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Two_Points.def b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Two_Points.def
new file mode 100644
index 0000000000..d706a91dc2
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setFind_Equation_by_Two_Points.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 01:16am PST
+dueDate = 06/30/2014 at 02:26am PDT
+answerDate = 06/30/2014 at 02:26am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByTwoPoints.pg
+description = use information about two points to find an equation for a line
+problemList =
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation35.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindEquationSpecial10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindEquationSpecial20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setFunctions_Intro.def b/Contrib/PCC/OldSetDefinitions/MTH060/setFunctions_Intro.def
new file mode 100644
index 0000000000..15afffba4f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setFunctions_Intro.def
@@ -0,0 +1,28 @@
+openDate = 12/11/2013 at 01:24am PST
+dueDate = 06/30/2014 at 02:36am PDT
+answerDate = 06/30/2014 at 02:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FunctionsIntro.pg
+description = an introduction to functions
+problemList =
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Lines_by_Table.def b/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Lines_by_Table.def
new file mode 100644
index 0000000000..cec8e9661b
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Lines_by_Table.def
@@ -0,0 +1,29 @@
+
+openDate = 12/11/2013 at 01:02am PST
+dueDate = 06/30/2014 at 02:12am PDT
+answerDate = 06/30/2014 at 02:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphLineByTable.pg
+description = graphing lines by making a table of values; checking if a point is on a line
+problemList =
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/XYTable20.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine110.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot30.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot150.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def b/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def
new file mode 100644
index 0000000000..45c26f1206
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def
@@ -0,0 +1,26 @@
+
+openDate = 12/11/2013 at 01:22am PST
+dueDate = 06/30/2014 at 02:34am PDT
+answerDate = 06/30/2014 at 02:34am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphTwoVariableInequalities.pg
+description = inequalities in two variables
+problemList =
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot70.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot90.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setGraphing_Line_Summary.def b/Contrib/PCC/OldSetDefinitions/MTH060/setGraphing_Line_Summary.def
new file mode 100644
index 0000000000..540c4ec403
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setGraphing_Line_Summary.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 01:10am PST
+dueDate = 06/30/2014 at 02:20am PDT
+answerDate = 06/30/2014 at 02:20am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphingLineSummary.pg
+description = a summary of techniques that can be used to graph a line from its equation
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setInequality_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH060/setInequality_Applications.def
new file mode 100644
index 0000000000..eee2160463
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setInequality_Applications.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 12:58am PST
+dueDate = 06/30/2014 at 01:52am PDT
+answerDate = 06/30/2014 at 01:52am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/InequalityApplications.pg
+description = applications of inequalities
+problemList =
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setInteger_Operations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setInteger_Operations.def
new file mode 100644
index 0000000000..2ec3e34279
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setInteger_Operations.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 12:16am PST
+dueDate = 06/30/2014 at 01:08am PDT
+answerDate = 06/30/2014 at 01:08am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/IntegerOperations.pg
+description = multiplying, dividing, adding, and subtracting with both positive and negative integers
+problemList =
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/SignedNumberInterpretations10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setLinear_Equation_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH060/setLinear_Equation_Applications.def
new file mode 100644
index 0000000000..b378ac9e07
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setLinear_Equation_Applications.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 01:18am PST
+dueDate = 06/30/2014 at 02:30am PDT
+answerDate = 06/30/2014 at 02:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/LinearEquationApplications.pg
+description = applications of finding equations of lines
+problemList =
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def
new file mode 100644
index 0000000000..e928bef3ed
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 12:04am PST
+dueDate = 06/30/2014 at 01:02am PDT
+answerDate = 06/30/2014 at 01:02am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixedNumbersEquivalentFractions.pg
+description = translating between mixed numbers and improper fractions; reducing fractions
+problemList =
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction05.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction30.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setMixture_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setMixture_Word_Problems.def
new file mode 100644
index 0000000000..dbda55cc4f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setMixture_Word_Problems.def
@@ -0,0 +1,19 @@
+
+openDate = 12/11/2013 at 01:30am PST
+dueDate = 06/30/2014 at 02:39am PDT
+answerDate = 06/30/2014 at 02:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixtureWordProblems.pg
+description = word problems involving mixtures of solutions or populations
+problemList =
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedPopulationWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedPopulationWordProblem20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setMultiply_Divide_Fractions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setMultiply_Divide_Fractions.def
new file mode 100644
index 0000000000..984edc6dbb
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setMultiply_Divide_Fractions.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:08am PST
+dueDate = 06/30/2014 at 01:04am PDT
+answerDate = 06/30/2014 at 01:04am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MultiplyDivideFractions.pg
+description = multiplying and dividing with fractions
+problemList =
+BasicAlgebra/FractionArithmetic/MultiplyFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setNumber_Sets.def b/Contrib/PCC/OldSetDefinitions/MTH060/setNumber_Sets.def
new file mode 100644
index 0000000000..076f2c2bec
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setNumber_Sets.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 12:10am PST
+dueDate = 06/30/2014 at 01:05am PDT
+answerDate = 06/30/2014 at 01:05am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/NumberSets.pg
+description = identifying types of numbers; using number lines
+problemList =
+BasicAlgebra/NumberBasics/TypesOfNumbers10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setOrder_of_Operations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setOrder_of_Operations.def
new file mode 100644
index 0000000000..e4ac385610
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setOrder_of_Operations.def
@@ -0,0 +1,39 @@
+
+openDate = 12/11/2013 at 12:22am PST
+dueDate = 06/30/2014 at 01:18am PDT
+answerDate = 06/30/2014 at 01:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/OrderOfOperations.pg
+description = using the order of operations
+problemList =
+BasicAlgebra/OrderOfOperations/orderOfOperations10.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations20.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations30.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations40.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations50.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations60.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations70.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations80.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations90.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations100.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations110.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations120.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations140.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations130.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations150.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations160.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations170.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations180.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations190.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations230.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations200.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations210.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations220.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations240.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations250.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/OOOFractions10.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations260.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations270.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations280.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations290.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setParallel_Perpendicular_Lines.def b/Contrib/PCC/OldSetDefinitions/MTH060/setParallel_Perpendicular_Lines.def
new file mode 100644
index 0000000000..6716f9f757
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setParallel_Perpendicular_Lines.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 01:20am PST
+dueDate = 06/30/2014 at 02:32am PDT
+answerDate = 06/30/2014 at 02:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ParallelPerpendicularLines.pg
+description = questions regarding parallel or perpendicular pairs of lines and their slopes
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular90.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular100.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular110.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular120.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular130.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular140.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular150.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular160.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular170.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular180.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular190.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular200.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular210.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setPercent_of_Increase_Decrease.def b/Contrib/PCC/OldSetDefinitions/MTH060/setPercent_of_Increase_Decrease.def
new file mode 100644
index 0000000000..1ea63d363f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setPercent_of_Increase_Decrease.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 12:44am PST
+dueDate = 06/30/2014 at 01:45am PDT
+answerDate = 06/30/2014 at 01:45am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/PercentOfIncreaseDecrease.pg
+description = calculating the percent increase or decrease of a change
+problemList =
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setPerimeter_and_Area.def b/Contrib/PCC/OldSetDefinitions/MTH060/setPerimeter_and_Area.def
new file mode 100644
index 0000000000..e2233ccacf
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setPerimeter_and_Area.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:46am PST
+dueDate = 06/30/2014 at 01:46am PDT
+answerDate = 06/30/2014 at 01:46am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/PerimeterArea.pg
+description = questions about the areas and perimeters of basic two-dimensional shapes
+problemList =
+BasicAlgebra/Geometry/RectanglePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea40.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea40.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea50.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setProportion_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setProportion_Word_Problems.def
new file mode 100644
index 0000000000..7082c491b0
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setProportion_Word_Problems.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 12:52am PST
+dueDate = 06/30/2014 at 01:49am PDT
+answerDate = 06/30/2014 at 01:49am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ProportionWordProblems.pg
+description = word problems that involve a proportional equation
+problemList =
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem90.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem100.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem110.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def
new file mode 100644
index 0000000000..6e10a82e6e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 12:40am PST
+dueDate = 06/30/2014 at 01:43am PDT
+answerDate = 06/30/2014 at 01:43am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/RateAndStartValueWordProblem.pg
+description = word problems involving an initial value that cahnges with a fixed rate
+problemList =
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSimplify_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSimplify_Expressions.def
new file mode 100644
index 0000000000..8cee679e94
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSimplify_Expressions.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 12:14am PST
+dueDate = 06/30/2014 at 01:07am PDT
+answerDate = 06/30/2014 at 01:07am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SimplifyExpressions.pg
+description = simplifying expressions
+problemList =
+BasicAlgebra/PolynomialBasics/SimplifyExpression10.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression30.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression40.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty10.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty20.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty30.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty40.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty50.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty60.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty70.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty80.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty90.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/SimplifyInContext10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSlope.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSlope.def
new file mode 100644
index 0000000000..5af94ddb27
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSlope.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 01:04am PST
+dueDate = 06/30/2014 at 02:14am PDT
+answerDate = 06/30/2014 at 02:14am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Slope.pg
+description = using a graph to compute slope; using the slope formula to compute slope
+problemList =
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSlope_Intercept_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSlope_Intercept_Equations.def
new file mode 100644
index 0000000000..03f0a00beb
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSlope_Intercept_Equations.def
@@ -0,0 +1,27 @@
+
+openDate = 12/11/2013 at 01:06am PST
+dueDate = 06/30/2014 at 02:16am PDT
+answerDate = 06/30/2014 at 02:16am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SlopeInterceptEquation.pg
+description = find the slope and y-intercept of a line; use the point-slope form to garph a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept90.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Equations_with_Fractions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Equations_with_Fractions.def
new file mode 100644
index 0000000000..dc490db970
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Equations_with_Fractions.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 12:32am PST
+dueDate = 06/30/2014 at 01:36am PDT
+answerDate = 06/30/2014 at 01:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveEquationsWithFractions.pg
+description = solving linear equations that involve fractions
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction05.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction290.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction300.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction310.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction210.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction220.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction240.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction260.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction270.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Inequalities.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Inequalities.def
new file mode 100644
index 0000000000..296618b649
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Inequalities.def
@@ -0,0 +1,45 @@
+
+openDate = 12/11/2013 at 12:54am PST
+dueDate = 06/30/2014 at 01:50am PDT
+answerDate = 06/30/2014 at 01:50am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveInequalities.pg
+description = set-builder and interval notation; solving linear inequalities
+problemList =
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation110.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality150.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality180.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality200.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality220.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality260.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality280.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality320.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Multi_Step_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Multi_Step_Equations.def
new file mode 100644
index 0000000000..c8d08d623e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Multi_Step_Equations.def
@@ -0,0 +1,35 @@
+
+openDate = 12/11/2013 at 12:28am PST
+dueDate = 06/30/2014 at 01:32am PDT
+answerDate = 06/30/2014 at 01:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveMultiStepEquations.pg
+description = solving linear equations that may require multiple steps
+problemList =
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses200.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_One_Step_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_One_Step_Equations.def
new file mode 100644
index 0000000000..054ba50db2
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_One_Step_Equations.def
@@ -0,0 +1,52 @@
+
+openDate = 12/11/2013 at 12:24am PST
+dueDate = 06/30/2014 at 01:26am PDT
+answerDate = 06/30/2014 at 01:26am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveOneStepEquation.pg
+description = solving equations that only require one step to solve
+problemList =
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ10.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ20.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ30.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ40.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ50.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ60.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ70.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepCompare10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepCompare20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv190.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Proportions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Proportions.def
new file mode 100644
index 0000000000..e10430de0d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Proportions.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:50am PST
+dueDate = 06/30/2014 at 01:48am PDT
+answerDate = 06/30/2014 at 01:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveProportions.pg
+description = solving proporiton equations
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveProportion10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Two-Step_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Two-Step_Equations.def
new file mode 100644
index 0000000000..d261d00360
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_Two-Step_Equations.def
@@ -0,0 +1,19 @@
+
+openDate = 12/11/2013 at 12:26am PST
+dueDate = 06/30/2014 at 01:30am PDT
+answerDate = 06/30/2014 at 01:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveTwoStepEquations.pg
+description = solving equations that require two steps to solve
+problemList =
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_for_Variable.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_for_Variable.def
new file mode 100644
index 0000000000..eccdea6c6b
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSolve_for_Variable.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 12:34am PST
+dueDate = 06/30/2014 at 01:38am PDT
+answerDate = 06/30/2014 at 01:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveForVariable.pg
+description = symbolically solving a linear equation to isolate a variable
+problemList =
+BasicAlgebra/SolveLinearEquations/LiteralEquation10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation210.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Case_Inequalities.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Case_Inequalities.def
new file mode 100644
index 0000000000..75f08f8146
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Case_Inequalities.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:56am PST
+dueDate = 06/30/2014 at 01:51am PDT
+answerDate = 06/30/2014 at 01:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialCaseInequalities.pg
+description = linear inequalities that may have something special about them
+problemList =
+BasicAlgebra/LinearInequalities/SolveSpecialInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Solutions.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Solutions.def
new file mode 100644
index 0000000000..0ed77f524d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSpecial_Solutions.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:30am PST
+dueDate = 06/30/2014 at 01:34am PDT
+answerDate = 06/30/2014 at 01:34am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialSolutions.pg
+description = linear equations that may have something special about them
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation70.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setStandard_Form_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH060/setStandard_Form_Equations.def
new file mode 100644
index 0000000000..de8c027e91
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setStandard_Form_Equations.def
@@ -0,0 +1,47 @@
+
+openDate = 12/11/2013 at 01:08am PST
+dueDate = 06/30/2014 at 02:18am PDT
+answerDate = 06/30/2014 at 02:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/StandardFormEquations.pg
+description = find the slope and y-intercept of a line; find a line's x- and y-intercepts; use intercepts to graph a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept110.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept120.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept130.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept140.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept150.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept160.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept170.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept180.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept190.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept200.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts150.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts130.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setSum_and_Part_Word_Problems.def b/Contrib/PCC/OldSetDefinitions/MTH060/setSum_and_Part_Word_Problems.def
new file mode 100644
index 0000000000..b8d9aae6bc
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setSum_and_Part_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 12:38am PST
+dueDate = 06/30/2014 at 01:42am PDT
+answerDate = 06/30/2014 at 01:42am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SumAndPartWordProblems.pg
+description = solving word problems involving two numbers that combine in some way
+problemList =
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setTranslating_Words_into_Algebra.def b/Contrib/PCC/OldSetDefinitions/MTH060/setTranslating_Words_into_Algebra.def
new file mode 100644
index 0000000000..1dc609ee0c
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setTranslating_Words_into_Algebra.def
@@ -0,0 +1,31 @@
+openDate = 12/11/2013 at 12:00am PST
+dueDate = 06/30/2014 at 01:00am PDT
+answerDate = 06/30/2014 at 01:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/TranslatingWordsIntoAlgebra.pg
+description = translating English into algebra
+problemList =
+BasicAlgebra/EnglishToMath/englishToMath10.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath20.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath25.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath30.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath40.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath45.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath50.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath55.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath60.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath70.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath140.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath150.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath160.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath170.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath80.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath82.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath84.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath90.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath100.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath110.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath120.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath130.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath180.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setTrigonometry.def b/Contrib/PCC/OldSetDefinitions/MTH060/setTrigonometry.def
new file mode 100644
index 0000000000..ded9435294
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setTrigonometry.def
@@ -0,0 +1,13 @@
+openDate = 12/11/2013 at 12:48am PST
+dueDate = 06/30/2014 at 02:38am PDT
+answerDate = 06/30/2014 at 02:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Trigonometry.pg
+description = questions about the definition of trigonometry ratios (sine, cosine and tangent)
+problemList =
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH060/setVolume.def b/Contrib/PCC/OldSetDefinitions/MTH060/setVolume.def
new file mode 100644
index 0000000000..a35af66f6f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH060/setVolume.def
@@ -0,0 +1,16 @@
+
+openDate = 12/11/2013 at 12:48am PST
+dueDate = 06/30/2014 at 01:47am PDT
+answerDate = 06/30/2014 at 01:47am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Volume.pg
+description = questions about the volumes of prisms and cylinders
+problemList =
+BasicAlgebra/Geometry/RectangularPrismVolume10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectangularPrismVolume20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectangularPrismVolume30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume10.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume20.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setAdd_Subtract_Polynomials.def b/Contrib/PCC/OldSetDefinitions/MTH065/setAdd_Subtract_Polynomials.def
new file mode 100644
index 0000000000..445d55a7e0
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setAdd_Subtract_Polynomials.def
@@ -0,0 +1,26 @@
+
+openDate = 12/11/2013 at 02:44am PST
+dueDate = 06/30/2014 at 03:21am PDT
+answerDate = 06/30/2014 at 03:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/AddSubtractPolynomials.pg
+description = adding and subtracting polynomial expressions
+problemList =
+BasicAlgebra/PolynomialBasics/PolyAddSubtract0.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract5.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract10.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract15.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression30.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression40.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract25.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract35.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract85.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract90.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract95.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract100.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar25.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setDivide_Polynomials.def b/Contrib/PCC/OldSetDefinitions/MTH065/setDivide_Polynomials.def
new file mode 100644
index 0000000000..11c2f3a665
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setDivide_Polynomials.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 02:48am PST
+dueDate = 06/30/2014 at 03:30am PDT
+answerDate = 06/30/2014 at 03:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/DividePolynomials.pg
+description = division of polynomials by a monomial
+problemList =
+BasicAlgebra/Exponents/exponentDivision105.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision100.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision125.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision120.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision130.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision135.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision140.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setExponent_Review.def b/Contrib/PCC/OldSetDefinitions/MTH065/setExponent_Review.def
new file mode 100644
index 0000000000..93c938dfcd
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setExponent_Review.def
@@ -0,0 +1,31 @@
+openDate = 12/11/2013 at 02:42am PST
+dueDate = 06/30/2014 at 03:15am PDT
+answerDate = 06/30/2014 at 03:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ExponentReview.pg
+description = rules of working with exponents
+problemList =
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication20.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication50.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision75.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision70.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision60.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision105.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision100.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision50.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision80.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision10.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision0.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision15.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication35.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Special_Polynomials.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Special_Polynomials.def
new file mode 100644
index 0000000000..18ace46835
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Special_Polynomials.def
@@ -0,0 +1,33 @@
+
+openDate = 12/11/2013 at 03:02am PST
+dueDate = 06/30/2014 at 03:45am PDT
+answerDate = 06/30/2014 at 03:45am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorSpecialPolynomials.pg
+description = factoring special polynomials where a special form can be applied
+problemList =
+BasicAlgebra/Factoring/factoring445.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring450.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring455.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring460.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring465.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring470.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring475.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring480.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring485.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring490.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring495.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring500.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring505.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring520.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring525.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring530.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring535.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring540.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring555.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring560.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring590.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring595.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring600.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring615.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def
new file mode 100644
index 0000000000..a00b17d07f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def
@@ -0,0 +1,29 @@
+openDate = 12/11/2013 at 02:58am PST
+dueDate = 06/30/2014 at 03:39am PDT
+answerDate = 06/30/2014 at 03:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialWhenAIs1.pg
+description = factoring trinomials with a leading coefficient of 1
+problemList =
+BasicAlgebra/Factoring/factoring170.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring175.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring180.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring170.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring175.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring180.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring355.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring360.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring365.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring370.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring360.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring365.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring370.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring375.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring385.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring390.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring400.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring405.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring410.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring415.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring420.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def
new file mode 100644
index 0000000000..6a96d03b04
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:00am PST
+dueDate = 06/30/2014 at 03:42am PDT
+answerDate = 06/30/2014 at 03:42am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialsWhenAIsNot1.pg
+description = factoring trinomials whose leading coefficient is not 1
+problemList =
+BasicAlgebra/Factoring/factoring185.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring190.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring195.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring200.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring205.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring210.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring235.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring240.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring245.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring280.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring285.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring295.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring325.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_by_Grouping.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_by_Grouping.def
new file mode 100644
index 0000000000..a5d05392d2
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_by_Grouping.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 02:56am PST
+dueDate = 06/30/2014 at 03:36am PDT
+answerDate = 06/30/2014 at 03:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorByGrouping.pg
+description = factoring polynomials using the grouping technique
+problemList =
+BasicAlgebra/Factoring/factoring105.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring110.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring115.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring120.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring125.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring130.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring135.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring140.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring150.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring120.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring125.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring135.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring140.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_out_Common_Factors.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_out_Common_Factors.def
new file mode 100644
index 0000000000..adcd221338
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFactor_out_Common_Factors.def
@@ -0,0 +1,28 @@
+
+openDate = 12/11/2013 at 02:54am PST
+dueDate = 06/30/2014 at 03:33am PDT
+answerDate = 06/30/2014 at 03:33am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorOutCommonFactors.pg
+description = factoring out the greatest common factor
+problemList =
+BasicAlgebra/Factoring/factoring5.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring10.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring15.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring20.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring25.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring30.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring36.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring37.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring38.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring41.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring56.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring71.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring76.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring77.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring80.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring85.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring90.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring95.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFalling_Object_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFalling_Object_Applications.def
new file mode 100644
index 0000000000..5136393b3d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFalling_Object_Applications.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:36am PST
+dueDate = 06/30/2014 at 04:36am PDT
+answerDate = 06/30/2014 at 04:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FallingObjectApplications.pg
+description = applications of quadratic expressions to falling objects
+problemList =
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setFunctions.def b/Contrib/PCC/OldSetDefinitions/MTH065/setFunctions.def
new file mode 100644
index 0000000000..4c3b2a8714
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setFunctions.def
@@ -0,0 +1,29 @@
+
+openDate = 12/11/2013 at 03:38am PST
+dueDate = 06/30/2014 at 04:37am PDT
+answerDate = 06/30/2014 at 04:37am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/Functions.pg
+description = introduction to functions
+problemList =
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setIntroduction_to_Square_Root.def b/Contrib/PCC/OldSetDefinitions/MTH065/setIntroduction_to_Square_Root.def
new file mode 100644
index 0000000000..7f12438bf9
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setIntroduction_to_Square_Root.def
@@ -0,0 +1,16 @@
+
+openDate = 12/11/2013 at 03:04am PST
+dueDate = 06/30/2014 at 03:48am PDT
+answerDate = 06/30/2014 at 03:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/IntroductionToSquareRoot.pg
+description = evaluating square roots
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/EstimateRadical10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setMaximum_Minimum_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH065/setMaximum_Minimum_Applications.def
new file mode 100644
index 0000000000..cb7a7aa3c0
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setMaximum_Minimum_Applications.def
@@ -0,0 +1,14 @@
+
+openDate = 12/11/2013 at 03:34am PST
+dueDate = 06/30/2014 at 04:33am PDT
+answerDate = 06/30/2014 at 04:33am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MaximumMinimumApplications.pg
+description = applications of quadratic expressions to finding a maximal or minimal value
+problemList =
+BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setMoving_Parabola_Up_Down.def b/Contrib/PCC/OldSetDefinitions/MTH065/setMoving_Parabola_Up_Down.def
new file mode 100644
index 0000000000..bf99a3b23e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setMoving_Parabola_Up_Down.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 03:20am PST
+dueDate = 06/30/2014 at 04:12am PDT
+answerDate = 06/30/2014 at 04:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MovingParabolaUpDown.pg
+description = shifting a parabola up and down
+problemList =
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setMultiplying_Polynomials.def b/Contrib/PCC/OldSetDefinitions/MTH065/setMultiplying_Polynomials.def
new file mode 100644
index 0000000000..2bbc293875
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setMultiplying_Polynomials.def
@@ -0,0 +1,41 @@
+
+openDate = 12/11/2013 at 02:46am PST
+dueDate = 06/30/2014 at 03:24am PDT
+answerDate = 06/30/2014 at 03:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MultiplyingPolynomials.pg
+description = multiplication of polynomial expressions
+problemList =
+BasicAlgebra/PolynomialMultiplication/polyMultVar60.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication0.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication5.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication10.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication15.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication20.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication30.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication35.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication40.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication45.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication50.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication55.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication60.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication65.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication70.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication75.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication80.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication160.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication165.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication170.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication175.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication185.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication190.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication195.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication200.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication205.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication210.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication225.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar100.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar135.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar160.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setNegative_Exponents.def b/Contrib/PCC/OldSetDefinitions/MTH065/setNegative_Exponents.def
new file mode 100644
index 0000000000..637b215a32
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setNegative_Exponents.def
@@ -0,0 +1,32 @@
+
+openDate = 12/11/2013 at 02:50am PST
+dueDate = 06/30/2014 at 03:31am PDT
+answerDate = 06/30/2014 at 03:31am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/NegativeExponents.pg
+description = practice working with negative exponents
+problemList =
+BasicAlgebra/Exponents/negExp75.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp90.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp60.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp85.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp65.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp70.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp10.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp45.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp50.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp20.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp25.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp5.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp0.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp55.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp41.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp100.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp105.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp110.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp115.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp120.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp135.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp150.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp155.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Axis_and_Vertex.def b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Axis_and_Vertex.def
new file mode 100644
index 0000000000..53c889ea00
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Axis_and_Vertex.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 03:28am PST
+dueDate = 06/30/2014 at 04:24am PDT
+answerDate = 06/30/2014 at 04:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaAxisAndVertex.pg
+description = identifying the vertex and axis of symmetry of a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Intercepts.def b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Intercepts.def
new file mode 100644
index 0000000000..0a96aa5d43
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Intercepts.def
@@ -0,0 +1,33 @@
+
+openDate = 12/11/2013 at 03:30am PST
+dueDate = 06/30/2014 at 04:27am PDT
+answerDate = 06/30/2014 at 04:27am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaIntercepts.pg
+description = identifying the intercepts of a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts115.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts150.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts160.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts170.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts180.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts190.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts200.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts210.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts220.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts230.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Movement_Summary.def b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Movement_Summary.def
new file mode 100644
index 0000000000..ce70d11632
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Movement_Summary.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 03:26am PST
+dueDate = 06/30/2014 at 04:21am PDT
+answerDate = 06/30/2014 at 04:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaMovementSummary.pg
+description = summary of graph transformations to a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Shifting_Left_Right.def b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Shifting_Left_Right.def
new file mode 100644
index 0000000000..682473e4e0
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Shifting_Left_Right.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:24am PST
+dueDate = 06/30/2014 at 04:18am PDT
+answerDate = 06/30/2014 at 04:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaShiftingLeftRight.pg
+description = shifting a parabola left or right
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Thinner_Wider.def b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Thinner_Wider.def
new file mode 100644
index 0000000000..d3d29c9400
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setParabola_Thinner_Wider.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:22am PST
+dueDate = 06/30/2014 at 04:15am PDT
+answerDate = 06/30/2014 at 04:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaThinnerWider.pg
+description = stretching a parabola vertically to make it appear thinner
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setQuadratic_Equation_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH065/setQuadratic_Equation_Applications.def
new file mode 100644
index 0000000000..0f58ce13dc
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setQuadratic_Equation_Applications.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 03:18am PST
+dueDate = 06/30/2014 at 04:09am PDT
+answerDate = 06/30/2014 at 04:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/QuadraticEquationApplications.pg
+description = applications of quadratic equations
+problemList =
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setRationalize_Denominator.def b/Contrib/PCC/OldSetDefinitions/MTH065/setRationalize_Denominator.def
new file mode 100644
index 0000000000..c005bd45ce
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setRationalize_Denominator.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:10am PST
+dueDate = 06/30/2014 at 03:57am PDT
+answerDate = 06/30/2014 at 03:57am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/RationalizeDenominator.pg
+description = rationalizing the denominator of a radical expression
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator110.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setReview_Graphing_Lines.def b/Contrib/PCC/OldSetDefinitions/MTH065/setReview_Graphing_Lines.def
new file mode 100644
index 0000000000..aee0c2126d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setReview_Graphing_Lines.def
@@ -0,0 +1,22 @@
+openDate = 12/11/2013 at 02:32am PST
+dueDate = 06/30/2014 at 03:00am PDT
+answerDate = 06/30/2014 at 03:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ReviewGraphingLines.pg
+description = review of graphing lines
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setScientific_Notation.def b/Contrib/PCC/OldSetDefinitions/MTH065/setScientific_Notation.def
new file mode 100644
index 0000000000..bfbf62dabc
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setScientific_Notation.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 02:52am PST
+dueDate = 06/30/2014 at 03:32am PDT
+answerDate = 06/30/2014 at 03:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ScientificNotation.pg
+description = practice using scientific notation
+problemList =
+BasicAlgebra/NumberBasics/ScientificNotation10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation90.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation100.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation110.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSimplify_Square_Roots.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSimplify_Square_Roots.def
new file mode 100644
index 0000000000..74d5cfc36c
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSimplify_Square_Roots.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 03:06am PST
+dueDate = 06/30/2014 at 03:51am PDT
+answerDate = 06/30/2014 at 03:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SimplifySquareRoots.pg
+description = simplifying expressions with square roots
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSketching_Parabolas.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSketching_Parabolas.def
new file mode 100644
index 0000000000..27bd59b81c
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSketching_Parabolas.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 03:32am PST
+dueDate = 06/30/2014 at 04:30am PDT
+answerDate = 06/30/2014 at 04:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SketchingParabolas.pg
+description = sketching the graph of a quadratic expression
+problemList =
+BasicAlgebra/GraphingQuadratics/SketchParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def
new file mode 100644
index 0000000000..c1019c39e7
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def
@@ -0,0 +1,34 @@
+
+openDate = 12/11/2013 at 03:14am PST
+dueDate = 06/30/2014 at 04:03am PDT
+answerDate = 06/30/2014 at 04:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByFactoring.pg
+description = solve a quadratic equation by factoring
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad95.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad230.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad220.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad235.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad240.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad250.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad255.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad265.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad210.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad215.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad270.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad280.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad285.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad290.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad295.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad105.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad200.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad300.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad305.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad325.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad330.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad335.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad340.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def
new file mode 100644
index 0000000000..bfe9283033
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 03:16am PST
+dueDate = 06/30/2014 at 04:06am PDT
+answerDate = 06/30/2014 at 04:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByQuadraticFormula.pg
+description = solve a quadratic equation using the quadratic formula
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad145.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad150.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad155.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad185.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad375.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad380.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad385.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def
new file mode 100644
index 0000000000..4e04c67950
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:12am PST
+dueDate = 06/30/2014 at 04:00am PDT
+answerDate = 06/30/2014 at 04:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationBySquareRootProperty.pg
+description = solve a quadratic equation by using the square root
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad35.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad40.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad45.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad50.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad55.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad65.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad70.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad75.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad80.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad85.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Elimination.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Elimination.def
new file mode 100644
index 0000000000..d204b7d870
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Elimination.def
@@ -0,0 +1,20 @@
+openDate = 12/11/2013 at 02:38am PST
+dueDate = 06/30/2014 at 03:09am PDT
+answerDate = 06/30/2014 at 03:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByElimination.pg
+description = solve a systme of linear equations using the elimination (aka addition) method
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations55.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Graphing.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Graphing.def
new file mode 100644
index 0000000000..af48e49847
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Graphing.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 02:34am PST
+dueDate = 06/30/2014 at 03:03am PDT
+answerDate = 06/30/2014 at 03:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByGraphing.pg
+description = solve a system of linear equations by graphing the lines
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem40.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Substitution.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Substitution.def
new file mode 100644
index 0000000000..94f347423e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSolve_System_by_Substitution.def
@@ -0,0 +1,14 @@
+openDate = 12/11/2013 at 02:36am PST
+dueDate = 06/30/2014 at 03:06am PDT
+answerDate = 06/30/2014 at 03:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemBySubstitution.pg
+description = solve a system of linear equations by isolating one variable and using substitution
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations11.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations12.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations13.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations14.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations16.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations25.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations30.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSquare_Root_Operations.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSquare_Root_Operations.def
new file mode 100644
index 0000000000..4b4ff93965
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSquare_Root_Operations.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 03:08am PST
+dueDate = 06/30/2014 at 03:54am PDT
+answerDate = 06/30/2014 at 03:54am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SquareRootOperations.pg
+description = simplifying radical expressions
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals140.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical1.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical2.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setSystem_Equation_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH065/setSystem_Equation_Applications.def
new file mode 100644
index 0000000000..8e99e61a60
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setSystem_Equation_Applications.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 02:40am PST
+dueDate = 06/30/2014 at 03:12am PDT
+answerDate = 06/30/2014 at 03:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SystemEquationApplications.pg
+description = applications of solving systems of linear equations
+problemList =
+BasicAlgebra/SystemOfLinearEquationsApplications/systemsWord5.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication70.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication80.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication90.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH065/setTrigonometryRatios.def b/Contrib/PCC/OldSetDefinitions/MTH065/setTrigonometryRatios.def
new file mode 100644
index 0000000000..27f4a3ce63
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH065/setTrigonometryRatios.def
@@ -0,0 +1,92 @@
+assignmentType = default
+openDate = 12/11/2013 at 03:10am PST
+dueDate = 06/30/2014 at 03:58am PDT
+answerDate = 06/30/2014 at 03:58am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeaders_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/TrigonometryRatios.pg
+description =
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 2
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 3
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 4
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 5
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 6
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 7
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 8
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 9
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def
new file mode 100644
index 0000000000..38c093ce74
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def
@@ -0,0 +1,24 @@
+openDate = 12/01/2015 at 12:26am PST
+dueDate = 03/01/2016 at 12:26am PST
+answerDate = 03/01/2016 at 12:26am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Add_Subtract_Rational_Expressions.pg
+description = subtract rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions100.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions120.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions130.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions140.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions150.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setCalculator_Basics.def b/Contrib/PCC/OldSetDefinitions/MTH095/setCalculator_Basics.def
new file mode 100644
index 0000000000..9fdb03ef6f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setCalculator_Basics.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:00am PST
+dueDate = 03/01/2016 at 12:00am PST
+answerDate = 03/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Calculator_Basics.pg
+description = learning the basics about using graphing calculators
+problemList =
+BasicAlgebra/Calculator/CalculatorBasics10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics20.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics30.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics40.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics50.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics60.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics70.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics80.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics90.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorIntersection10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorIntersection20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setComplex_Number_Operations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setComplex_Number_Operations.def
new file mode 100644
index 0000000000..340fac9eed
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setComplex_Number_Operations.def
@@ -0,0 +1,23 @@
+openDate = 12/01/2015 at 12:44am PST
+dueDate = 03/01/2016 at 12:44am PST
+answerDate = 03/01/2016 at 12:44am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Complex_Number_Operations.pg
+description = add, subtract, multiply complex numbers
+problemList =
+BasicAlgebra/ComplexNumber/complexNumberBasics10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberBasics20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberBasics30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations40.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations50.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations60.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations70.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations80.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setDivide_Rational_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setDivide_Rational_Expressions.def
new file mode 100644
index 0000000000..598d861b47
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setDivide_Rational_Expressions.def
@@ -0,0 +1,17 @@
+openDate = 12/01/2015 at 12:22am PST
+dueDate = 03/01/2016 at 12:22am PST
+answerDate = 03/01/2016 at 12:22am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Divide_Rational_Expressions.pg
+description = divide rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions25.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions45.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions60.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Domain_Range.def b/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Domain_Range.def
new file mode 100644
index 0000000000..aa4e0dd9e3
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Domain_Range.def
@@ -0,0 +1,31 @@
+openDate = 12/01/2015 at 12:04am PST
+dueDate = 03/01/2016 at 12:04am PST
+answerDate = 03/01/2016 at 12:04am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Domain_Range.pg
+description = finding the domain and range functions
+problemList =
+FunctionBasics/Functions90.pg, 1, -1, 0
+FunctionBasics/Functions100.pg, 1, -1, 0
+FunctionBasics/Functions110.pg, 1, -1, 0
+FunctionBasics/Functions120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg, 1, -1, 0
+FunctionBasics/Functions170.pg, 1, -1, 0
+FunctionBasics/Functions180.pg, 1, -1, 0
+FunctionBasics/Functions200.pg, 1, -1, 0
+FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain30.pg, 1, -1, 0
+FunctionBasics/Functions225.pg, 1, -1, 0
+FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Notation.def b/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Notation.def
new file mode 100644
index 0000000000..b00d94b3b3
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setFunction_Notation.def
@@ -0,0 +1,32 @@
+openDate = 12/01/2015 at 12:02am PST
+dueDate = 03/01/2016 at 12:02am PST
+answerDate = 03/01/2016 at 12:02am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Notation.pg
+description = learning and applying function notation
+problemList =
+BasicAlgebra/FunctionBasics/FunctionInContext10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction85.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition65.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition65.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition66.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition66.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools20.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorTable10.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setMultiply_Rational_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setMultiply_Rational_Expressions.def
new file mode 100644
index 0000000000..7236470059
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setMultiply_Rational_Expressions.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:20am PST
+dueDate = 03/01/2016 at 12:20am PST
+answerDate = 03/01/2016 at 12:20am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Multiply_Rational_Expressions.pg
+description = multiply rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions100.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setOperations_with_Radicals.def b/Contrib/PCC/OldSetDefinitions/MTH095/setOperations_with_Radicals.def
new file mode 100644
index 0000000000..2d26974f77
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setOperations_with_Radicals.def
@@ -0,0 +1,43 @@
+openDate = 12/01/2015 at 12:37am PST
+dueDate = 03/01/2016 at 12:37am PST
+answerDate = 03/01/2016 at 12:37am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Operations_with_Radicals.pg
+description = operations that include radicals
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals13.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals14.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals15.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals51.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals52.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals55.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals56.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals57.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals58.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals91.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals92.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals93.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals94.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals95.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals44.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals55.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals65.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty11.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty12.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty41.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty43.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty60.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def
new file mode 100644
index 0000000000..83ee97340c
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def
@@ -0,0 +1,14 @@
+openDate = 12/01/2015 at 12:58am PST
+dueDate = 03/01/2016 at 12:58am PST
+answerDate = 03/01/2016 at 12:58am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Equations_with_Complex_Solutions.pg
+description = find, understand, and interpret complex solutions of quadratic equations
+problemList =
+BasicAlgebra/ComplexNumber/complexSolutions10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions40.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions50.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Formula.def b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Formula.def
new file mode 100644
index 0000000000..0f5d59d87d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Formula.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:56am PST
+dueDate = 03/01/2016 at 12:56am PST
+answerDate = 03/01/2016 at 12:56am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Formula.pg
+description = solve a quadratic equation using the quadratic formula
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad375.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad380.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad385.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad185.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools30.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools40.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools50.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions.def
new file mode 100644
index 0000000000..2e43c931df
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:50am PST
+dueDate = 03/01/2016 at 12:50am PST
+answerDate = 03/01/2016 at 12:50am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions.pg
+description = quadratic functions their graphs
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def
new file mode 100644
index 0000000000..a88a2e2d3f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def
@@ -0,0 +1,24 @@
+openDate = 12/01/2015 at 12:52am PST
+dueDate = 03/01/2016 at 12:52am PST
+answerDate = 03/01/2016 at 12:52am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions_Vertex_Form.pg
+description = quadratic functions in vertex form and their graphs
+problemList =
+BasicAlgebra/QuadraticFunctions/CompleteSquare10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare40.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare50.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare60.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare70.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm40.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setRadical_Functions_Domain_Range.def b/Contrib/PCC/OldSetDefinitions/MTH095/setRadical_Functions_Domain_Range.def
new file mode 100644
index 0000000000..abf0dc5bae
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setRadical_Functions_Domain_Range.def
@@ -0,0 +1,23 @@
+openDate = 12/01/2015 at 12:34am PST
+dueDate = 03/01/2016 at 12:34am PST
+answerDate = 03/01/2016 at 12:34am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Radical_Functions_Domain_Range.pg
+description = determine the domain and range of radical functions
+problemList =
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions2.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions3.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions4.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions5.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions6.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions7.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions8.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically100.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically110.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically120.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically130.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically140.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Exponents.def b/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Exponents.def
new file mode 100644
index 0000000000..eb4b66091b
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Exponents.def
@@ -0,0 +1,50 @@
+openDate = 12/01/2015 at 12:35am PST
+dueDate = 03/01/2016 at 12:35am PST
+answerDate = 03/01/2016 at 12:35am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Exponents.pg
+description = using rational exponents to simplify radical expressions
+problemList =
+Math95/RadicalsRationalExponents/RadicalsRationalExponents7.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents8.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent26.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent40.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots35.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents9.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents14.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents15.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents16.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents17.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents18.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents19.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents21.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents24.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents27.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents28.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents29.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents31.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Functions_Domain.def b/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Functions_Domain.def
new file mode 100644
index 0000000000..bb6730e752
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setRational_Functions_Domain.def
@@ -0,0 +1,29 @@
+openDate = 12/01/2015 at 12:16am PST
+dueDate = 03/01/2016 at 12:16am PST
+answerDate = 03/01/2016 at 12:16am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Functions_Domain.pg
+description = determine the domain and range of rational functions
+problemList =
+BasicAlgebra/RationalFunctions/rationalFunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions211.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions212.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions213.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions214.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions215.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions216.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions217.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote30.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote40.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def b/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def
new file mode 100644
index 0000000000..7947d00d13
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def
@@ -0,0 +1,15 @@
+openDate = 12/01/2015 at 12:46am PST
+dueDate = 03/01/2016 at 12:46am PST
+answerDate = 03/01/2016 at 12:46am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Complex_Number_Denominators.pg
+description = rationalize denominators that include complex numbers
+problemList =
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Radical_Denominators.def b/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Radical_Denominators.def
new file mode 100644
index 0000000000..7ea176a347
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setRationalize_Radical_Denominators.def
@@ -0,0 +1,35 @@
+openDate = 12/01/2015 at 12:38am PST
+dueDate = 03/01/2016 at 12:38am PST
+answerDate = 03/01/2016 at 12:38am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Radical_Denominators.pg
+description = rationalize denominators that include radicals
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator35.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator36.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator37.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator81.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator82.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator83.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator84.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator85.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator86.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator87.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator110.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator140.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator150.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication10.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication20.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication30.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals24.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals25.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals26.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator160.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator165.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator170.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator180.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator190.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator200.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator210.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_1-1.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_1-1.def
new file mode 100644
index 0000000000..3cf3e98ca6
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_1-1.def
@@ -0,0 +1,54 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:00am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = evaluating formulaic functions; domain and range; graphs of functions
+problemList =
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction110.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction140.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions110.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions150.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions160.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions170.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions200.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions225.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/Functions/Functions10.pg, 1, -1, 0
+Math95/Functions/Functions11.pg, 1, -1, 0
+Math95/Functions/Functions12.pg, 1, -1, 0
+Math95/Functions/Functions13.pg, 1, -1, 0
+Math95/Functions/Functions14.pg, 1, -1, 0
+Math95/Functions/Functions15.pg, 1, -1, 0
+Math95/Functions/Functions16.pg, 1, -1, 0
+Math95/Functions/Functions17.pg, 1, -1, 0
+Math95/Functions/Functions18.pg, 1, -1, 0
+Math95/Functions/Functions19.pg, 1, -1, 0
+Math95/Functions/Functions20.pg, 1, -1, 0
+Math95/Functions/Functions22.pg, 1, -1, 0
+Math95/Functions/Functions21.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-3.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-3.def
new file mode 100644
index 0000000000..8f7407ea3e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-3.def
@@ -0,0 +1,60 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:01am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = inequalities with number lines, interval notation, and set-builder notation; solving linear inequalities; applications
+problemList =
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality130.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality170.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality190.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality210.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality230.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality240.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality260.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality280.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality290.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality310.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+Math95/LinearInequalities/LinearInequalities8.pg, 1, -1, 0
+Math95/LinearInequalities/LinearInequalities9.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-4.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-4.def
new file mode 100644
index 0000000000..b3ced9082e
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-4.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:02am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = compound inequalities
+problemList =
+Math95/CompoundLinearInequalities/CompoundLinearInequalities1.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities2.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities3.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities4.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities5.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities6.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities11.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities10.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities7.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities8.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities9.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-5.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-5.def
new file mode 100644
index 0000000000..fc9073ba2c
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_2-5.def
@@ -0,0 +1,17 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:03am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = absolute value inequalities
+problemList =
+Math95/AbsValueInequalities/AbsValueInequalities1.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities4.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities6.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities7.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities2.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities3.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities5.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities9.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities8.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-1.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-1.def
new file mode 100644
index 0000000000..3856fa3c8f
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-1.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:04am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = rational functions; easier rational equations
+problemList =
+Math95/Functions/Functions19.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions200.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations1.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations2.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations4.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations5.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations6.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations7.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-2.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-2.def
new file mode 100644
index 0000000000..e09e4fd088
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-2.def
@@ -0,0 +1,21 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:05am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = multiplication and division of rational expressions
+problemList =
+Math95/MultiplyingRationals/MultiplyingRationals1.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_15_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_18_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_22_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_20_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_19_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_16_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_23_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_24_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_25_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_27_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_26_MultDivRatExp.pg, 1, -1, 0
+Math95/MultiplyingRationals/MultiplyingRationals2.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-3.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-3.def
new file mode 100644
index 0000000000..95dc9b7346
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-3.def
@@ -0,0 +1,24 @@
+
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:06am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = addition and subtraction of rational expressions
+problemList =
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_01_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_06_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_07_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_05_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_02_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_03_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_04_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_20_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_17_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_24_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_25_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_21_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_27_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_19_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_18_AddSubRatExp.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-4.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-4.def
new file mode 100644
index 0000000000..92902cdd2a
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-4.def
@@ -0,0 +1,32 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:07am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = more rational equations; applications
+problemList =
+Math95/MoreRationalEquations/MoreRationalEquations1.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations2.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations3.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations4.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations5.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations6.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations7.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations8.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations9.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations10.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations11.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations12.pg, 1, -1, 0
+Math95/Proportions/Proportions1.pg, 1, -1, 0
+Math95/Proportions/Proportions2.pg, 1, -1, 0
+Math95/Proportions/Proportions3.pg, 1, -1, 0
+Math95/Proportions/Proportions4.pg, 1, -1, 0
+Math95/Proportions/Proportions5.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications1.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications2.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications3.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications4.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications5.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications6.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications7.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-5.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-5.def
new file mode 100644
index 0000000000..364f7293ed
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_4-5.def
@@ -0,0 +1,18 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:08am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = "complex" fractions (rational expressions with more than two "levels")
+problemList =
+Math95/ComplexFractions/ComplexFractions1.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions2.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions3.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions4.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions5.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions6.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions7.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions8.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions9.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-1_5-2.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-1_5-2.def
new file mode 100644
index 0000000000..7ecbfb27e8
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-1_5-2.def
@@ -0,0 +1,40 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:09am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = square roots and radicals; rational exponents
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents6.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents5.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EstimateRadical10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents3.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents4.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents9.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents27.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents28.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents29.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents31.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents7.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents8.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents18.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p13.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p16.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p12.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-3.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-3.def
new file mode 100644
index 0000000000..111ce86936
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-3.def
@@ -0,0 +1,31 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:10am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = multiplying radical and rational exponent expressions
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents14.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents15.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents16.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents17.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents21.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents24.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-4.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-4.def
new file mode 100644
index 0000000000..bdde53a100
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-4.def
@@ -0,0 +1,34 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:11am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = adding like radicals; reducing radicals; rationalizing denominators; binomial multiplication with radicals and rational exponents
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical1.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical2.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical3.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals140.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-5.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-5.def
new file mode 100644
index 0000000000..f581cb19fe
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-5.def
@@ -0,0 +1,20 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:12am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = radical functions
+problemList =
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions225.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions2.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions3.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions4.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions5.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions6.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions7.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions8.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-6.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-6.def
new file mode 100644
index 0000000000..f9bd162940
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-6.def
@@ -0,0 +1,33 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:13am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = equations that radicals help solve; Pythagorean Theorem; equations with radicals in them
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad35.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad40.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad50.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad70.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad75.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad85.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad115.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad110.pg, 1, -1, 0
+Math95/EquationsNeedingRadicals/EquationsNeedingRadicals3.pg, 1, -1, 0
+Math95/EquationsNeedingRadicals/EquationsNeedingRadicals4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations1.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations5.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations8.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations9.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations10.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad135.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad140.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-7.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-7.def
new file mode 100644
index 0000000000..c183d725ec
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_5-7.def
@@ -0,0 +1,20 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:14am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = arithmetic with complex numbers; counting real and nonreal roots of quadratic polynomials
+problemList =
+Math95/ComplexNumbers/ComplexNumbers1.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers2.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers3.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers4.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers5.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers6.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers7.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers8.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-1.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-1.def
new file mode 100644
index 0000000000..6d8014412d
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-1.def
@@ -0,0 +1,24 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:15am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = graph quadratic functions; parabola axis of symmetry and vertex
+problemList =
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-2.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-2.def
new file mode 100644
index 0000000000..256be791df
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-2.def
@@ -0,0 +1,25 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:16am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = transformations of y=x^2; quadratic data
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms10.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData1.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData2.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-3.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-3.def
new file mode 100644
index 0000000000..11f4905628
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-3.def
@@ -0,0 +1,46 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:17am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = solve quadratic equations using factoring, square root, and completing the square; find x-intercepts of parabolas; applications
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad95.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad230.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad220.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad235.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad240.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad120.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad180.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad265.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad270.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad280.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad285.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad295.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad335.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad330.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad325.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts160.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts200.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts220.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts230.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola100.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-4.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-4.def
new file mode 100644
index 0000000000..8b77a87ae4
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSection_6-4.def
@@ -0,0 +1,21 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:18am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = the quadratic formula; applications
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad145.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad150.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad176.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def
new file mode 100644
index 0000000000..7c8e046444
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def
@@ -0,0 +1,18 @@
+openDate = 12/01/2015 at 12:28am PST
+dueDate = 03/01/2016 at 12:28am PST
+answerDate = 03/01/2016 at 12:28am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Complex_Rational_Expressions.pg
+description = simplify complex rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions11.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions12.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions70.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Radical_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Radical_Expressions.def
new file mode 100644
index 0000000000..207d476ffa
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Radical_Expressions.def
@@ -0,0 +1,28 @@
+openDate = 12/01/2015 at 12:36am PST
+dueDate = 03/01/2016 at 12:36am PST
+answerDate = 03/01/2016 at 12:36am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Radical_Expressions.pg
+description = simplify radical expressions
+problemList =
+Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents3.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents4.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents5.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents6.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals07.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals09.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals150.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals160.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals170.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals180.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals185.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals190.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals200.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals210.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals220.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEstimateRadical10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEstimateRadical20.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Rational_Expressions.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Rational_Expressions.def
new file mode 100644
index 0000000000..722ea2a715
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSimplify_Rational_Expressions.def
@@ -0,0 +1,27 @@
+openDate = 12/01/2015 at 12:18am PST
+dueDate = 03/01/2016 at 12:18am PST
+answerDate = 03/01/2016 at 12:18am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Rational_Expressions.pg
+description = simplify rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions100.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions110.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions120.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions130.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions150.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions160.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions170.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions180.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def
new file mode 100644
index 0000000000..20167defb9
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:12am PST
+dueDate = 03/01/2016 at 12:12am PST
+answerDate = 03/01/2016 at 12:12am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Equations.pg
+description = solve absolute value equations
+problemList =
+BasicAlgebra/AbsoluteValue/absoluteValueEquation10.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation20.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation30.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation40.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation50.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation60.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation65.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation70.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation80.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation90.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation95.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation100.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation110.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation120.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation150.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def
new file mode 100644
index 0000000000..2c025f8c71
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:14am PST
+dueDate = 03/01/2016 at 12:14am PST
+answerDate = 03/01/2016 at 12:14am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Inequalities.pg
+description = solve absolute value inequalities
+problemList =
+BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveInequality10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveInequality20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Inequalities.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Inequalities.def
new file mode 100644
index 0000000000..14a7378064
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Inequalities.def
@@ -0,0 +1,34 @@
+openDate = 12/01/2015 at 12:08am PST
+dueDate = 03/01/2016 at 12:08am PST
+answerDate = 03/01/2016 at 12:08am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Inequalities.pg
+description = solve inequalities and compound inequalities
+problemList =
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality320.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality300.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def
new file mode 100644
index 0000000000..6baeeeeadd
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def
@@ -0,0 +1,17 @@
+openDate = 12/01/2015 at 12:32am PST
+dueDate = 03/01/2016 at 12:32am PST
+answerDate = 03/01/2016 at 12:32am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Literal_Rational_Equations.pg
+description = solve literal rational equations
+problemList =
+BasicAlgebra/RationalLiteralEquations/LiteralEquation220.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation230.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation240.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation250.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation260.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation270.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation280.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation290.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Quadratic_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Quadratic_Equations.def
new file mode 100644
index 0000000000..7093359a79
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Quadratic_Equations.def
@@ -0,0 +1,21 @@
+openDate = 12/01/2015 at 12:54am PST
+dueDate = 03/01/2016 at 12:54am PST
+answerDate = 03/01/2016 at 12:54am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Quadratic_Equations.pg
+description = learning more advanced skills for graphing calculators
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Radical_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Radical_Equations.def
new file mode 100644
index 0000000000..878f61f5f0
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Radical_Equations.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:40am PST
+dueDate = 03/01/2016 at 12:40am PST
+answerDate = 03/01/2016 at 12:40am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Radical_Equations.pg
+description = solve radical equations
+problemList =
+Math95/SolvingRadicalEquations/SolvingRadicalEquations1.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations5.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations8.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral90.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral100.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral110.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral120.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRadicalEquation10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRadicalEquation20.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication92.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication102.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication122.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalFunctionApplication20.pg, 1, -1, 0
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations.def
new file mode 100644
index 0000000000..922baf84da
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations.def
@@ -0,0 +1,25 @@
+openDate = 12/01/2015 at 12:30am PST
+dueDate = 03/01/2016 at 12:30am PST
+answerDate = 03/01/2016 at 12:30am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations.pg
+description = solve rational equations
+problemList =
+BasicAlgebra/RationalEquations/solveRationalEquations10.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations20.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations25.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations27.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations28.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations30.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations40.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations50.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations55.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations60.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations61.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations65.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations66.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations70.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRationalEquation10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRationalEquation20.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def
new file mode 100644
index 0000000000..a93cb61e19
--- /dev/null
+++ b/Contrib/PCC/OldSetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def
@@ -0,0 +1,22 @@
+openDate = 12/01/2015 at 12:31am PST
+dueDate = 03/01/2016 at 12:31am PST
+answerDate = 03/01/2016 at 12:31am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations_Applications.pg
+description = solve rational equations
+problemList =
+BasicAlgebra/RationalEquations/rationalEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication15.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication25.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication35.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication44.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication45.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_1.1-2.3_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_1.1-2.3_header.pg
new file mode 100644
index 0000000000..d016f98a06
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_1.1-2.3_header.pg
@@ -0,0 +1,87 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, sections 1.1 through 2.3.
+$PAR
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_2.4-3.7_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_2.4-3.7_header.pg
new file mode 100644
index 0000000000..f1168a947c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_2.4-3.7_header.pg
@@ -0,0 +1,87 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, sections 2.4 through 3.7.
+$PAR
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Final_Exam_202003_30022_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Final_Exam_202003_30022_header.pg
new file mode 100644
index 0000000000..4d1a54fd8e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH060/Final_Exam_202003_30022_header.pg
@@ -0,0 +1,87 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, chapters 1 through 4.
+$PAR
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Exam_ORCCA_ed2_10.1-11.2_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Exam_ORCCA_ed2_10.1-11.2_header.pg
new file mode 100644
index 0000000000..6a75b5ec83
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Exam_ORCCA_ed2_10.1-11.2_header.pg
@@ -0,0 +1,89 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, sections 10.1 through 11.2.
+$PAR
+
+The last question instructs you to write responses outside of WeBWorK
+(such as on paper, using MS Word, etc) and upload them into an Assignment in D2L.
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Final_Exam_202004_40038_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Final_Exam_202004_40038_header.pg
new file mode 100644
index 0000000000..6a62b0bcb0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Final_Exam_202004_40038_header.pg
@@ -0,0 +1,84 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, chapters 10 through 13.
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Midterm_Exam_202004_40038_header.pg b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Midterm_Exam_202004_40038_header.pg
new file mode 100644
index 0000000000..6b8e633aa5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/CombinedHeaders/MTH095/Midterm_Exam_202004_40038_header.pg
@@ -0,0 +1,84 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {\{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#
+#EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+This Exam covers ORCCA 2nd edition, chapters 10 and 11.
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
new file mode 100644
index 0000000000..2714f8bbb8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
@@ -0,0 +1,113 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+Go to \{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH20Course!,"http://spot.pcc.edu/~cyao/MTH20Course", "TARGET='_blank'") \} for MTH20 lecture notes and video lectures.
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
new file mode 100644
index 0000000000..04856c28e8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
@@ -0,0 +1,93 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+Go to \{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH60Course!,"http://spot.pcc.edu/~cyao/MTH60Course", "TARGET='_blank'") \} for MTH60 lecture notes and video lectures.
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
new file mode 100644
index 0000000000..7be5627b2c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
@@ -0,0 +1,93 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+Go to \{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH65Course!,"http://spot.pcc.edu/~cyao/MTH65Course", "TARGET='_blank'") \} for MTH65 lecture notes and video lectures.
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
new file mode 100644
index 0000000000..5cfc4b9436
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
@@ -0,0 +1,185 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
new file mode 100644
index 0000000000..5cfc4b9436
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
@@ -0,0 +1,185 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
new file mode 100644
index 0000000000..5cfc4b9436
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
@@ -0,0 +1,185 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractFractions.pg
new file mode 100644
index 0000000000..caefb6f84e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractFractions.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L2AddSubtractFractions.pdf
+!,"Add/Subtract Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Add Fractions with Common Denominators Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/4pQIw5h8iUw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Fractions with Different Denominators Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/89eHMYsw8MU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Fractions with Different Denominators Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/N-TEyv7VNgY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Fractions with Different Denominators Involving Negative Numbers
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GgWnw4L9POA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractIntegers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractIntegers.pg
new file mode 100644
index 0000000000..cb19f79682
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractIntegers.pg
@@ -0,0 +1,139 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U2L2AddSubtractIntegers.pdf
+!,"Add and Subtract Integers Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+First Method to Add/Subtract Integers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/C38B33ZywWs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Second Method to Add Integers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/AIWPLvTNhXs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Second Method to Subtract Integers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/0sMIJkFV1uw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractMixedNumbers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractMixedNumbers.pg
new file mode 100644
index 0000000000..2e297725ed
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractMixedNumbers.pg
@@ -0,0 +1,170 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L6AddSubtractMixedNumbers.pdf
+!,"Add/Subtract Mixed Numbers Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Add Mixed Numbers with Common Denominators Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/MBZrYacUDyc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Mixed Numbers with Different Denominators Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CfBYGFm5gPA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Mixed Numbers with Common Denominators Involving Negative Numbers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Pj2LGQ2gHgw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add Mixed Numbers with Uncommon Denominators Involving Negative Numbers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/MwqgHvdKlmQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Subtract Mixed Numbers Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/WF7L2waDwLw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Subtract Mixed Numbers Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/4LYtLMmDuzw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Subtract a Fraction from a Whole Number Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ZpdTfe30N1s
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAdditionSubtraction.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAdditionSubtraction.pg
new file mode 100644
index 0000000000..a2807f71e6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAdditionSubtraction.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L2DecimalAdditionSubtraction.pdf
+!,"Add/Subtract Decimals Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Add Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/-wJXRgTDghA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Subtract Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/kMD7M9MSbO0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add/Subtract Decimals Involving Negative Numbers Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/7QEmT3iJBtU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Add/Subtract Decimals Involving Negative Numbers Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/qJzYcLE7_Mg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAndFraction.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAndFraction.pg
new file mode 100644
index 0000000000..8fa4597963
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAndFraction.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L4DecimalAndFraction.pdf
+!,"Decimals and Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Change Decimal to Fraction Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/bA5ZoFW1ztE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Change Decimal to Fraction Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/iOvxUXl3flc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Change Fraction to Decimal Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/I7L-vNLki5w
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Convert between Fractions and Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/5PYVMuI3qoc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalDefinition.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalDefinition.pg
new file mode 100644
index 0000000000..8e2f6dd51f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalDefinition.pg
@@ -0,0 +1,139 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L1DecimalDefinition.pdf
+!,"Introduction to Decimals Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Introduction to Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/oCnZ6ZpafNg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Compare Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/VmaY9mNy4ak
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+$PAR
+Round Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/g8hRCisK8to
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalMultiplicationDivision.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalMultiplicationDivision.pg
new file mode 100644
index 0000000000..c09db8c05f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalMultiplicationDivision.pg
@@ -0,0 +1,147 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L3DecimalMultiplicationDivision.pdf
+!,"Multiply/Divide Decimals Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Multiply by Power of 10 Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/mV0RxDZG05A
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+$PAR
+Divide by Power of 10 Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/W_VhVHRal6o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Multiply Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/xpuZIC3nolQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Divide Decimals Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/wYh0eUCdJWQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivideFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivideFractions.pg
new file mode 100644
index 0000000000..b5ea98fafd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivideFractions.pg
@@ -0,0 +1,119 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L4DivideFractions.pdf
+!,"Divide Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+\{ scalableiframe("//
+www.youtube.com/embed/7VGgnESa498
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivisibilityTest.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivisibilityTest.pg
new file mode 100644
index 0000000000..d4867edb93
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivisibilityTest.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L5DivisivilityTest.pdf
+!,"Divisibility Test Lecture Notes", "TARGET='_blank'") \}.
+
+\{ scalableiframe("//
+www.youtube.com/embed/Df9h5t64NlQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Division.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Division.pg
new file mode 100644
index 0000000000..e63977fcd6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Division.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L3Division.pdf
+!,"Division Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Division Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/MTzTqvzWzm8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Division Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/8Ft5iHhauJ0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Remainder Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/fjAbh_LCxcI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Divide by Zero Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/UjRob36yuJI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/ExponentsAndRoundingWholeNumbers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/ExponentsAndRoundingWholeNumbers.pg
new file mode 100644
index 0000000000..69260f6d3a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/ExponentsAndRoundingWholeNumbers.pg
@@ -0,0 +1,131 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L1ExponentAndRoundingWholeNumber.pdf
+!,"Exponent and Rounding Whole Numbers Lecture Notes", "TARGET='_blank'") \}
+
+$PAR
+Exponent Definition Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/i4m9jMGv4AA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+$PAR
+Round Whole Numbers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vNsmn4SMD4k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/FractionDefinition.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/FractionDefinition.pg
new file mode 100644
index 0000000000..a1761b58cf
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/FractionDefinition.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L1FractionDefinition.pdf
+!,"Fraction Definition and Equivalent Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Definition of Fractions Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/cmBdd_GmFh4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Reduce Fractions Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/eAzfN0o3CgY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Reduce Fractions Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/sznPsgkHEyA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Compare Fractions Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/nt-83HOnQHU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GCFAndLCM.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GCFAndLCM.pg
new file mode 100644
index 0000000000..9fe7581d86
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GCFAndLCM.pg
@@ -0,0 +1,136 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L7GCFAndLCM.pdf
+!,"Greatest Common Factor and Least Common Multiple Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Greatest Common Factor Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ECFmsS7z9sE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Least Common Multiple Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/D6yHKOYJiso
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Least Common Multiple Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/znmPfDfsir8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Least Common Multiple Video Lecture 3
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/w_GwBDOSNp4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GeometryBasics.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GeometryBasics.pg
new file mode 100644
index 0000000000..7c4370e760
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/GeometryBasics.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L4GeometryBasics.pdf
+!,"Geometry Basics Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/kqqmJiJez6o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/IntegersAndAbsoluteValue.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/IntegersAndAbsoluteValue.pg
new file mode 100644
index 0000000000..10b1fca043
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/IntegersAndAbsoluteValue.pg
@@ -0,0 +1,131 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U2L1IntegersAndAbsoluteValue.pdf
+!,"Integers and Absolute Value Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Introduction to Negative Numbers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Hlal9ME2Aig
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Absolute Value Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/L8fGfc7Wcco
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MeanMedianMode.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MeanMedianMode.pg
new file mode 100644
index 0000000000..4342283a11
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MeanMedianMode.pg
@@ -0,0 +1,121 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L6MeanMedianMode.pdf
+!,"Mean, Median and Mode Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/pk8_c0hAuRI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MixedNumberDefinition.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MixedNumberDefinition.pg
new file mode 100644
index 0000000000..762b888d8d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MixedNumberDefinition.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L5MixedNumberDefinition.pdf
+!,"Introduction to Mixed Numbers Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/HkELb2btWQQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Multiplication.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Multiplication.pg
new file mode 100644
index 0000000000..4abbec3df2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Multiplication.pg
@@ -0,0 +1,138 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L2Multiplication.pdf
+!,"Multiplication Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Multiplication Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/mvOkMYCygps
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Multiplication Table Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/xO_1bYgoQvA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Multiplication Table Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/qihoczo1Ujk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideIntegers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideIntegers.pg
new file mode 100644
index 0000000000..fa1f5f03ca
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideIntegers.pg
@@ -0,0 +1,131 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U2L3MultiplyDivideIntegers.pdf
+!,"Multiply and Divide Integers Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Multiply and Divide Integers Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/d8lP5tR2R3Q
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Negative Number and Exponent Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/AneubQTnoL4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideMixedNumbers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideMixedNumbers.pg
new file mode 100644
index 0000000000..765026dbc4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideMixedNumbers.pg
@@ -0,0 +1,127 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L7MultiplyDivideMixedNumbers.pdf
+!,"Multiply/Divide Mixed Numbers Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/BhUwTsPEZuM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vVx7qwUf5KU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyFractions.pg
new file mode 100644
index 0000000000..73af1c1fba
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyFractions.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L3MultiplyFractions.pdf
+!,"Multiply Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/rxISl5boIuE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_1.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_1.pg
new file mode 100644
index 0000000000..519146625d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_1.pg
@@ -0,0 +1,132 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L8OrderOfOperations_1.pdf
+!,"Order of Operations Part I (involving positive numbers only) Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ahwlw4OCEAc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/NCixeuWvLS0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/wTHSBsoDDqY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_2.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_2.pg
new file mode 100644
index 0000000000..c7ba2f6179
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_2.pg
@@ -0,0 +1,126 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U2L4OrderOfOperations_2.pdf
+!,"Order of Operations Part II Lecture Notes (involving negative numbers and absolute values)", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/a329hvX8yDA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/UzQZfvYPlzI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_3.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_3.pg
new file mode 100644
index 0000000000..00cc6e321e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_3.pg
@@ -0,0 +1,126 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U3L8OrderOfOperations_3.pdf
+!,"Order of Operations involving Fractions Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/EpX9ohiti6o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/a329hvX8yDA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentDefinition.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentDefinition.pg
new file mode 100644
index 0000000000..2936c5dc20
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentDefinition.pg
@@ -0,0 +1,155 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U6L1PercentDefinition.pdf
+!,"Introduction to Percent Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Introduction to Percent Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/xB7d4SqI25M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+$PAR
+Change Percent to Decimal Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/KBtjkblzbrw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Change Percent to Fraction Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/17sdYa0y1wo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Change Decimals/Fractions to Percent Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/eLBMph6iSiY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Percent, Fraction and Decimal Conversions Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Hkwfibux88s
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentFormula.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentFormula.pg
new file mode 100644
index 0000000000..03b1e59bc8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentFormula.pg
@@ -0,0 +1,154 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U6L2PercentFormula.pdf
+!,"Percent Formula Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Type I Percent Formula Problems Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/dKVOGoHMsfc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Type II Percent Formula Problems Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/N4kDzoQOngY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Type III Percent Formula Problems Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/DAikW24_O0A
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Solve Percent Problems with Proportion Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/T8dAK1RDexI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Solve Percent Problems with Proportion Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vuSMdL0Mke4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentOfIncreaseDecrease.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentOfIncreaseDecrease.pg
new file mode 100644
index 0000000000..e4be0e6241
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentOfIncreaseDecrease.pg
@@ -0,0 +1,130 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U6L4PercentOfIncreaseDecrease.pdf
+!,"Percent of Increase/Decrease Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/KVfRWj5CU5E
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LP9UJmBxAnw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/wzLUsEU_fvE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentWordProblems.pg
new file mode 100644
index 0000000000..2c4e582bc1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentWordProblems.pg
@@ -0,0 +1,130 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U6L3PercentWordProblem.pdf
+!,"Percent Word Problems Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/cAPXFDev8B4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/STMZeuWT4Ss
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/1LtBcfk1uHg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PrimeNumbers.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PrimeNumbers.pg
new file mode 100644
index 0000000000..10e32fc9a3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/PrimeNumbers.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U1L6PrimeNumber.pdf
+!,"Prime Number Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Find Factors Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vcn2ruTOwFo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Prime Number Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/mIStB5X4U8M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Prime Number Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/3h4UK62Qrbo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Prime Factor Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/XpUCTicRBjQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Proportion.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Proportion.pg
new file mode 100644
index 0000000000..6a12238e22
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/Proportion.pg
@@ -0,0 +1,138 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U5L2Proportion.pdf
+!,"Proportion Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Solve Proportions Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/EdM-jYtAtAM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Solve Proportions Word Problem Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/89H0Vsn7oC4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Solve Proportions Word Problem Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/KaxpT_R9a-c
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/RateAndRatio.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/RateAndRatio.pg
new file mode 100644
index 0000000000..5d243927f9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/RateAndRatio.pg
@@ -0,0 +1,130 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U5L1RateAndRatio.pdf
+!,"Rate and Ratio Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Ratio Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/MTzTqvzWzm8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Rate and Ratio Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/8Ft5iHhauJ0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/SquareRoot.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/SquareRoot.pg
new file mode 100644
index 0000000000..e02ad4fd9e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/SquareRoot.pg
@@ -0,0 +1,130 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U4L5SquareRoot.pdf
+!,"Square Root Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+Introduction to Square Root Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/yVUtSYPYM5M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Evaluate Square Root Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CCd1HrPizmw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/UnitConversion.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/UnitConversion.pg
new file mode 100644
index 0000000000..4315d6685f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH020/UnitConversion.pg
@@ -0,0 +1,146 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+END_TEXT
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH20Docs/U5L3UnitConversion.pdf
+!,"Unit Conversion Lecture Notes", "TARGET='_blank'") \}.
+
+$PAR
+American Sytem Unit Conversion Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/bcM5J-wYHjE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Metric System Video Lecture
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/6sBmVPIJwrw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Unit Cancellation Method Video Lecture 1
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/OL7liIliMD0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Unit Cancellation Method Video Lecture 2
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/daVdxGfchWI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AbsoluteValue.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AbsoluteValue.pg
new file mode 100644
index 0000000000..7a9c358d34
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AbsoluteValue.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L2_AbsoluteValue.pdf
+!,"lecture notes on absolute value", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/L8fGfc7Wcco
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AccountInterestWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AccountInterestWordProblems.pg
new file mode 100644
index 0000000000..d5d06d3d78
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AccountInterestWordProblems.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U7L3_AccountInterestProblems.pdf
+!,"lecture notes on account interest word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/7i_35zNMsjg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ieCNfN7Uwog
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AddSubtractFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AddSubtractFractions.pg
new file mode 100644
index 0000000000..5bb75ed070
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/AddSubtractFractions.pg
@@ -0,0 +1,102 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH60Docs/U2L2_AddSubtractFractions.pdf!,"lecture notes on adding/subtracting fractions", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/89eHMYsw8MU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GgWnw4L9POA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicPercentageWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicPercentageWordProblems.pg
new file mode 100644
index 0000000000..c0458f16b1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicPercentageWordProblems.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U7L1_BasicPercentProblems.pdf
+!,"lecture notes on basic percentage word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/qs-5b2IBvB8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicWordProblems.pg
new file mode 100644
index 0000000000..99fd9415c3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicWordProblems.pg
@@ -0,0 +1,130 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U5L1_BasicWordProblems.pdf
+!,"lecture notes on basic word problems", "TARGET='_blank'") \}
+$PAR
+
+First video lecture on number word problems
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/0Z5k2I-0mHo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Second video lecture on number word problems
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/UvOwDgZzxvw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on consecutive integers word problems
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/o5T6PYD5zmY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on consecutive odd/even integers word problems
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/d8De3xcVmnw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on rectangle perimeter word problems
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ja-g2qB9P9Y
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/CoordinateSystem.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/CoordinateSystem.pg
new file mode 100644
index 0000000000..85ec0d6474
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/CoordinateSystem.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L1_CoordinateSystemBasics.pdf
+!,"lecture notes on coordinate system basics", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/dzNHVMQVy84
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/DistanceWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/DistanceWordProblems.pg
new file mode 100644
index 0000000000..4f94911e91
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/DistanceWordProblems.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U7L2_DistanceWordProblems.pdf
+!,"lecture notes on distance word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/SBTAFvqMlfk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/jcETNCbcGsY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/EvaluatingExpressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/EvaluatingExpressions.pg
new file mode 100644
index 0000000000..ee12ec36f1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/EvaluatingExpressions.pg
@@ -0,0 +1,105 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L5_EvaluateExpressions.pdf
+!,"lecture notes on evaluating expressions", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/Sa6bBkztsoo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/7vt6IerxYdw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentBasics.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentBasics.pg
new file mode 100644
index 0000000000..6dcc54efa0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentBasics.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L3_IntroductionToExponents.pdf
+!,"lecture notes on exponent basics", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/AneubQTnoL4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentRules.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentRules.pg
new file mode 100644
index 0000000000..ebc3368a55
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentRules.pg
@@ -0,0 +1,102 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L3_ThreeExponentRules.pdf
+!,"lecture notes on exponent rules", "TARGET='_blank'") \}
+$PAR
+\{ htmlLink(qq!
+http://www.youtube.com/watch?v=jjajaVnVQKY
+!,"a video lecture on product rule of exponents", "TARGET='_blank'") \}
+$PAR
+\{ htmlLink(qq!
+http://www.youtube.com/watch?v=Y967TsThSGA
+!,"a video lecture on some other exponent rules", "TARGET='_blank'") \}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByGraph.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByGraph.pg
new file mode 100644
index 0000000000..c810f8336e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByGraph.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L7_WriteLinearEquationByGraph.pdf
+!,"lecture notes on finding equation by graph", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/9wOalujeZf4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByPointSlope.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByPointSlope.pg
new file mode 100644
index 0000000000..cfbe9da402
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByPointSlope.pg
@@ -0,0 +1,114 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L7_GivenPointSlopeFindEquation.pdf
+!,"lecture notes on finding equation by point and slope", "TARGET='_blank'") \}
+$PAR
+
+First video lecture on finding equation by point and slope
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/9h78OnmH6gk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+Second video lecture on finding equation by point and slope
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GNEKDFKVBOc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+Video lecture on point-slope form equations
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/YGAN_b2anv0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByTwoPoints.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByTwoPoints.pg
new file mode 100644
index 0000000000..7575d052f9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByTwoPoints.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L7_GivenTwoPointsFindEquation.pdf
+!,"lecture notes on finding equation by two points", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/U1oZU8Xzoik
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Ltapa5XJAkI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/gvwKv6F69F0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Functions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Functions.pg
new file mode 100644
index 0000000000..179335b812
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Functions.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U11L1_IntroductionToFunctions.pdf
+!,"lecture notes on functions", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/JZmIsxayvxY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FunctionsIntro.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FunctionsIntro.pg
new file mode 100644
index 0000000000..b5191510a1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/FunctionsIntro.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U11L1_IntroductionToFunctions.pdf
+!,"lecture notes on functions", "TARGET='_blank'") \}
+
+\{ scalableiframe("//
+www.youtube.com/embed/JZmIsxayvxY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphLineByTable.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphLineByTable.pg
new file mode 100644
index 0000000000..4acd9c9503
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphLineByTable.pg
@@ -0,0 +1,125 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L2_GraphLineByTable.pdf
+!,"lecture notes on graphing a line by table", "TARGET='_blank'") \}
+$PAR
+
+Video lecture on graphing a line by table
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/8OUvFd-jMGY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L2_VerticalAndHorizontalLines.pdf
+!,"lecture notes on vertical and horizontal lines", "TARGET='_blank'") \}
+$PAR
+
+Video lecture on vertical and horizontal lines
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/8OUvFd-jMGY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L2_IsPointOnLine.pdf
+!,"lecture notes on whether a point is on a line", "TARGET='_blank'") \}
+$PAR
+Video lecture on whether a point is on a line (start from 4:50)
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/l2veOwP9xr4?start=290
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphTwoVariableInequalities.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphTwoVariableInequalities.pg
new file mode 100644
index 0000000000..5859ad3722
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphTwoVariableInequalities.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L10_GraphTwoVariableInequalities.pdf
+!,"lecture notes on graphing two-variable inequalities", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/_E0GKBVkins
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphingLineSummary.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphingLineSummary.pg
new file mode 100644
index 0000000000..1c1ba555aa
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphingLineSummary.pg
@@ -0,0 +1,101 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L6_SummaryOfGraphingLines.pdf
+!,"lecture notes on summary of graphing lines", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/hs7BxU2strY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/InequalityApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/InequalityApplications.pg
new file mode 100644
index 0000000000..e80872fc1e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/InequalityApplications.pg
@@ -0,0 +1,105 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U6L3_InequalityApplications.pdf
+!,"lecture notes on inequality applications", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/yzv1JyywmSk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/2dSExvlPj3Y
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/IntegerOperations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/IntegerOperations.pg
new file mode 100644
index 0000000000..cf53be0329
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/IntegerOperations.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH60Docs/U1L1_MultiplyDivideIntegers.pdf!,"Lecture notes on how to multiply/divide integers", "TARGET='_blank'") \}
+$PAR
+\{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH60Docs/U1L1_AddSubtractIntegers.pdf!,"lecture notes on how to add/subtract integers", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/JvoAnytWm7A
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/LinearEquationApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/LinearEquationApplications.pg
new file mode 100644
index 0000000000..4ebc0ff302
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/LinearEquationApplications.pg
@@ -0,0 +1,105 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L8_LinearEquationApplications.pdf
+!,"lecture notes on linear equation applications", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/sc6folGNeiY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/LT6-O-4pjg4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixedNumbersEquivalentFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixedNumbersEquivalentFractions.pg
new file mode 100644
index 0000000000..7fcffb0961
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixedNumbersEquivalentFractions.pg
@@ -0,0 +1,109 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!http://spot.pcc.edu/~cyao/MTH60Docs/U2L1_MixedNumbersAndEquivalentFractions.pdf!,"lecture notes on mixed numbers and how to reduce fractions", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/87DiYdRXZDI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/HkELb2btWQQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/eAzfN0o3CgY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixtureWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixtureWordProblems.pg
new file mode 100644
index 0000000000..8395a8d675
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixtureWordProblems.pg
@@ -0,0 +1,115 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U7L4_MixtureProblems.pdf
+!,"lecture notes on mixture word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/OBVGQt1Eeug
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/JVlfQEhzLMM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/QKiN9K2DXBI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/o1XpzeUpcRI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MultiplyDivideFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MultiplyDivideFractions.pg
new file mode 100644
index 0000000000..fb6942e987
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/MultiplyDivideFractions.pg
@@ -0,0 +1,117 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U2L3_MultiplyDivideFractions.pdf
+!,"lecture notes on multiplying/dividing fractions", "TARGET='_blank'") \}
+$PAR
+
+Video lecture on multiplying fractions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/rxISl5boIuE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on dividing fractions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/zQMU-lsMb3U
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on multiplying and dividing fractions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/8zWZnNpEFY4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/NumberSets.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/NumberSets.pg
new file mode 100644
index 0000000000..e6d4e1d6d9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/NumberSets.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L1_SubsetsOfRealNumbers.pdf
+!,"lecture notes on subsets of real numbers", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/4FyqMDHAo48
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/OrderOfOperations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/OrderOfOperations.pg
new file mode 100644
index 0000000000..3f79c2c122
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/OrderOfOperations.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L4_OrderOfOperations.pdf
+!,"lecture notes on order of operations", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/vDaIKB19TvY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/si_OegYqXDo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/OlVvUd1XVVg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ParallelPerpendicularLines.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ParallelPerpendicularLines.pg
new file mode 100644
index 0000000000..b2b166ed0e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ParallelPerpendicularLines.pg
@@ -0,0 +1,109 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L9_ParallelAndPerpendicularLines.pdf
+!,"lecture notes on parallel and perpendicular lines", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/9hryH94KFJA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/O397kMqSBKI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Ad9fwGCJ6WU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PercentOfIncreaseDecrease.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PercentOfIncreaseDecrease.pg
new file mode 100644
index 0000000000..28b4c08174
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PercentOfIncreaseDecrease.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U7L1_PercentOfIncreaseAndDecrease.pdf
+!,"lecture notes on percent of increase/decrease word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/qs-5b2IBvB8?start=983
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PerimeterArea.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PerimeterArea.pg
new file mode 100644
index 0000000000..b436a1cc80
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/PerimeterArea.pg
@@ -0,0 +1,115 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U9L1_PerimeterAndCircumference.pdf
+!,"lecture notes on perimeter and circumference", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/CPNGuZsjDxA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U9L2_AreaOfCommonShapes.pdf
+!,"lecture notes on area of common shapes", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/kqqmJiJez6o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/tCrDyJsSFok
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ProportionWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ProportionWordProblems.pg
new file mode 100644
index 0000000000..a5024c974d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/ProportionWordProblems.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U8L2_ProportionWordProblems.pdf
+!,"lecture notes on proportion word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/89H0Vsn7oC4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/PoEzBw7hJVU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/RateAndStartValueWordProblem.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/RateAndStartValueWordProblem.pg
new file mode 100644
index 0000000000..e4931ae209
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/RateAndStartValueWordProblem.pg
@@ -0,0 +1,109 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U5L3_RateAndStartingValueWordProblems.pdf
+!,"lecture notes on Rate and Starting Value word problems", "TARGET='_blank'") \}
+$PAR
+First video lecture on Rate and Starting Value word problems (watch from 11:23 till 16:17)
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/qs-5b2IBvB8?start=683
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/cxGw0C9kXek
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/qPx7i1jwXX4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SimplifyExpressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SimplifyExpressions.pg
new file mode 100644
index 0000000000..14afc8dd48
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SimplifyExpressions.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L6_SimplifyExpressions.pdf
+!,"lecture notes on simplifying expressions", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/xqLDbfbL7pI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/YURDKBg9-Aw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Slope.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Slope.pg
new file mode 100644
index 0000000000..4eaff90270
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Slope.pg
@@ -0,0 +1,111 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L3_Slope.pdf
+!,"lecture notes on slope", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/fCIuiQz2Zv4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/SM3bj7zA0FM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/bploNzF7cxg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/hPryexyt6Sg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SlopeInterceptEquation.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SlopeInterceptEquation.pg
new file mode 100644
index 0000000000..2b2f753e9d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SlopeInterceptEquation.pg
@@ -0,0 +1,114 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L4_SlopeInterceptFormEquations.pdf
+!,"lecture notes on slope-intercept equations", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/U6x-L49_P0k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+Second video lecture on slope-intercept equations (watch from 7:08 to 13:50)
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/OxAlSHlEpwk?start=428
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L4_GraphWithPointAndSlope.pdf
+!,"lecture notes on graphing a line by slope and y-intercept", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/DBr4o6SVE2k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveEquationsWithFractions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveEquationsWithFractions.pg
new file mode 100644
index 0000000000..a149417878
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveEquationsWithFractions.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L5_SolveLinearEquationsWithFractions.pdf
+!,"lecture notes on solving linear equations with fractions", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/c8H1kqK1XnA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/1jjlful2BBY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveForVariable.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveForVariable.pg
new file mode 100644
index 0000000000..f922b084c6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveForVariable.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L6_SolveForVariable.pdf
+!,"lecture notes on solving for a variable", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/OQBJep7Gctw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/rS4JPQE4WHw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/IaE5RTnL8C8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveInequalities.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveInequalities.pg
new file mode 100644
index 0000000000..9e8d40144c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveInequalities.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U6L1_SolveInequalities.pdf
+!,"lecture notes on solving inequalities", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/XFggbIhEvvE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveMultiStepEquations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveMultiStepEquations.pg
new file mode 100644
index 0000000000..d1390758c5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveMultiStepEquations.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L3_SolveMultiStepLinearEquations.pdf
+!,"lecture notes on solving multi-step equations", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/MA2-tCfmQnw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/VDIXnZH6q00
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/5lZDQnRcAVc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/typP7RBQ6ps
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveOneStepEquation.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveOneStepEquation.pg
new file mode 100644
index 0000000000..b84bbbfd71
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveOneStepEquation.pg
@@ -0,0 +1,123 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L1_SolveOneStepLinearEquations.pdf
+!,"lecture notes on solving one-step equations", "TARGET='_blank'") \}
+$PAR
+Video lecture on how to check solutions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/BmzsG2LMUnI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Video lecture on solving one-step equations
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/g6jeSuHYhyY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+First video lecture on solving one-step equations with fractions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/jWlEyVkqw_Q
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+Second video lecture on solving one-step equations with fractions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LWV7bjoh4rQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveProportions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveProportions.pg
new file mode 100644
index 0000000000..aa4a24041f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveProportions.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U8L1_SolveProportions.pdf
+!,"lecture notes on solving proportions", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/l_s3t5zgnOs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveTwoStepEquations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveTwoStepEquations.pg
new file mode 100644
index 0000000000..cb88f3274c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveTwoStepEquations.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L2_SolveTwoStepLinearEquations.pdf
+!,"lecture notes on solving two-step equations", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/XdKQIKjV_LY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/1c5HY3z4k8M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/f15zA0PhSek
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialCaseInequalities.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialCaseInequalities.pg
new file mode 100644
index 0000000000..5bc3aabaf9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialCaseInequalities.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U6L2_SpecialCaseInequalities.pdf
+!,"lecture notes on solving inequalities with special solutions", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/v=jNomYBR5rMU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialSolutions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialSolutions.pg
new file mode 100644
index 0000000000..945964fe7a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialSolutions.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U4L4_SpecialLinearEquations.pdf
+!,"lecture notes on solving linear equations with special solutions", "TARGET='_blank'") \}
+$PAR
+First video lecture on solving linear equations with special solutions
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GM76QU5Tr9k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.khanacademy.org/embed_video?v=qsL_5Y8uWPU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.khanacademy.org/embed_video?v=uQs100shv-A
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.khanacademy.org/embed_video?v=Dq0xFgQB9qo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/StandardFormEquations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/StandardFormEquations.pg
new file mode 100644
index 0000000000..85e18982b6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/StandardFormEquations.pg
@@ -0,0 +1,114 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L5_StandardFormEquation.pdf
+!,"lecture notes on standard-form equations", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/V6Xynlqc_tc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/dZT203NHvaM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L5_GraphLineByIntercepts.pdf
+!,"lecture notes on graphing a line by intercepts", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/0o4gps38dBU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SumAndPartWordProblems.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SumAndPartWordProblems.pg
new file mode 100644
index 0000000000..fc217ea188
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/SumAndPartWordProblems.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U5L2_GivenSumFindPartsWordProblems.pdf
+!,"lecture notes on 'Given Sum, Find Parts' word problems", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/GQhGGZc772E
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/TranslatingWordsIntoAlgebra.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/TranslatingWordsIntoAlgebra.pg
new file mode 100644
index 0000000000..c38dd9e859
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/TranslatingWordsIntoAlgebra.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U3L7_TranslateWordsIntoAlgebraicExpressions.pdf
+!,"lecture notes on translating words to Algebraic expressions", "TARGET='_blank'") \}
+$PAR
+
+\{ scalableiframe("//
+www.youtube.com/embed/Gm8AaLLMepU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/g6jeSuHYhyY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Trigonometry.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Trigonometry.pg
new file mode 100644
index 0000000000..b67d33f0bc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Trigonometry.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U11L1_RightTriangleTrigonometry.pdf
+!,"lecture notes on trigonometry", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Jsiy4TxgIME
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Volume.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Volume.pg
new file mode 100644
index 0000000000..79ded627b1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH060/Volume.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U9L3_VolumeOfCommonSolids.pdf
+!,"lecture notes on volume", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/b_JhWim9mR0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/AddSubtractPolynomials.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/AddSubtractPolynomials.pg
new file mode 100644
index 0000000000..57f703c79b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/AddSubtractPolynomials.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U3L1_AddAndSubtractPolynomials.pdf
+!,"lecture notes on adding/subtracting polynomials", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ZN-IzpUR8WQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/DividePolynomials.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/DividePolynomials.pg
new file mode 100644
index 0000000000..61bd007289
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/DividePolynomials.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U3L3_DivideMonomials.pdf
+!,"lecture notes on dividing polynomials", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/OZjqWAaUkFU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/uERRlY-WmmU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ExponentReview.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ExponentReview.pg
new file mode 100644
index 0000000000..713be39cb8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ExponentReview.pg
@@ -0,0 +1,115 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U2L1_MoreExponentRules.pdf
+!,"lecture notes on exponent rules", "TARGET='_blank'") \}
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U2L1_UseMultipleExponentRules.pdf
+!,"lecture notes on using exponent rules", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/5oJobyGnhDk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/oHNe8AK0E9M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/heUUBzvYA1o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CrJEOQh5UXg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorByGrouping.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorByGrouping.pg
new file mode 100644
index 0000000000..2f09ad6aec
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorByGrouping.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"lecture notes on factoring by grouping", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/N9Yg6pVGP7A
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/2MtsZRjxjMo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorOutCommonFactors.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorOutCommonFactors.pg
new file mode 100644
index 0000000000..333e9bea77
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorOutCommonFactors.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U4L1_CommonFactors.pdf
+!,"lecture notes on factoring out common factors", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/WOCCSoaZRv8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/bLI6NOZ8kdY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorSpecialPolynomials.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorSpecialPolynomials.pg
new file mode 100644
index 0000000000..f6c2514361
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorSpecialPolynomials.pg
@@ -0,0 +1,107 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U4L5_FactorSpecialPolynomials.pdf
+!,"lecture notes on factoring special polynomials", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LdOgluTLBxQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Fwqh9vq0sq8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/icm6zjdOYek
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialWhenAIs1.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialWhenAIs1.pg
new file mode 100644
index 0000000000..63ee61eba7
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialWhenAIs1.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U4L3_FactorTrinomialsPart1.pdf
+!,"lecture notes on factoring trinomials with leading coefficient 1", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/06RdArZXthg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/BQaOVcJ7KmE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/BG53n9Ef4fM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialsWhenAIsNot1.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialsWhenAIsNot1.pg
new file mode 100644
index 0000000000..21422a6b32
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialsWhenAIsNot1.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U4L4_FactorTrinomialsPart2.pdf
+!,"lecture notes on factoring ax^2+bx+c", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/thMv6JovewA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/85a9bkP85ag
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ld4VT_ml3Nk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/a1VOMsR8iZo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FallingObjectApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FallingObjectApplications.pg
new file mode 100644
index 0000000000..c3d99a4be6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/FallingObjectApplications.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L9_FallingObjectApplication.pdf
+!,"lecture notes on falling object applications", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/3PfiCtfmJA8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/F--p_CeKJNQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/cNU8mnAlGus
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/Functions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/Functions.pg
new file mode 100644
index 0000000000..179335b812
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/Functions.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U11L1_IntroductionToFunctions.pdf
+!,"lecture notes on functions", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/JZmIsxayvxY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/IntroductionToSquareRoot.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/IntroductionToSquareRoot.pg
new file mode 100644
index 0000000000..b5e78e31a5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/IntroductionToSquareRoot.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U5L1_IntroductionToSquareRoot.pdf
+!,"lecture notes on square roots", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/yVUtSYPYM5M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CCd1HrPizmw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MaximumMinimumApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MaximumMinimumApplications.pg
new file mode 100644
index 0000000000..0c8ea2f3ae
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MaximumMinimumApplications.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L8_ParabolaMinMaxApplications.pdf
+!,"lecture notes on maximum/minimum value applications", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Qs_WqhoVBDI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ipBoVSMVzp0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MovingParabolaUpDown.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MovingParabolaUpDown.pg
new file mode 100644
index 0000000000..4f2b4af756
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MovingParabolaUpDown.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L1_ParabolaUpDown.pdf
+!,"lecture notes on moving parabola up/down", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/33CYnBnYsyk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MultiplyingPolynomials.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MultiplyingPolynomials.pg
new file mode 100644
index 0000000000..4c3c02effd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/MultiplyingPolynomials.pg
@@ -0,0 +1,117 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U3L2_MultiplyPolynomials.pdf
+!,"lecture notes on multiplying polynomials", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/7eifTvsbU38
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/iQ6NaQOECTA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U3L2_SpecialProductOfPolynomials.pdf
+!,"lecture notes on special product of polynomials", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/AecdR8wpIWM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/bRonwACbTnc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/NegativeExponents.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/NegativeExponents.pg
new file mode 100644
index 0000000000..713be39cb8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/NegativeExponents.pg
@@ -0,0 +1,115 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U2L1_MoreExponentRules.pdf
+!,"lecture notes on exponent rules", "TARGET='_blank'") \}
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U2L1_UseMultipleExponentRules.pdf
+!,"lecture notes on using exponent rules", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/5oJobyGnhDk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/oHNe8AK0E9M
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/heUUBzvYA1o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CrJEOQh5UXg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaAxisAndVertex.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaAxisAndVertex.pg
new file mode 100644
index 0000000000..f161047df4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaAxisAndVertex.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L5_ParabolaAxisAndVertex.pdf
+!,"lecture notes on parabola axis and vertex", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/RkLSWfoYg98
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaIntercepts.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaIntercepts.pg
new file mode 100644
index 0000000000..3224f0bf38
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaIntercepts.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L6_ParabolaIntercepts.pdf
+!,"lecture notes on parabola intercepts", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Ep2Tdu6Xn5E
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaMovementSummary.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaMovementSummary.pg
new file mode 100644
index 0000000000..be3fe3362c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaMovementSummary.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L4_ParabolaMovementPatterns.pdf
+!,"lecture notes on parabola movement summary", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/HC5DDlEwTJw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Fw8vuktklwE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaShiftingLeftRight.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaShiftingLeftRight.pg
new file mode 100644
index 0000000000..6d743f4564
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaShiftingLeftRight.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L3_ParabolaLeftRight.pdf
+!,"lecture notes on parabolas shifting left or right", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/g_FXRRKg3UM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaThinnerWider.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaThinnerWider.pg
new file mode 100644
index 0000000000..20795afec2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaThinnerWider.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L2_ParabolaThinnerWider.pdf
+!,"lecture notes on parabolas becoming thinner or wider", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/WtHgKSv02lM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/TGLjBgxvaFY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/QuadraticEquationApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/QuadraticEquationApplications.pg
new file mode 100644
index 0000000000..32dd9f482b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/QuadraticEquationApplications.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L4_QuadraticEquationApplications.pdf
+!,"lecture notes on quadratic equation applications", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/uoT5gmF1HoQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/haJJLYT6lro
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/RationalizeDenominator.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/RationalizeDenominator.pg
new file mode 100644
index 0000000000..65eda8710e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/RationalizeDenominator.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U5L4_RationalizeDenominator.pdf
+!,"lecture notes on rationalizing denominator", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/mYiN8KzQ5n8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ReviewGraphingLines.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ReviewGraphingLines.pg
new file mode 100644
index 0000000000..8ce52e0d44
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ReviewGraphingLines.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH60Docs/U10L6_SummaryOfGraphingLines.pdf
+!,"lecture notes on summary of graphing lines", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/hs7BxU2strY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ScientificNotation.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ScientificNotation.pg
new file mode 100644
index 0000000000..d24f0d48d8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/ScientificNotation.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U2L2_ScientificNotation.pdf
+!,"lecture notes on scientific notations", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/b1HmilCg5Uw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SimplifySquareRoots.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SimplifySquareRoots.pg
new file mode 100644
index 0000000000..723184dddb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SimplifySquareRoots.pg
@@ -0,0 +1,117 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U5L2_SimplifySquareRoot.pdf
+!,"lecture notes on simplifying square roots", "TARGET='_blank'") \}
+$PAR
+First video lecture on simplifying square roots
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ZDyScPdbTNs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Second video lecture on simplifying square roots (watch from 2:08 to 4:48)
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/uL4uJ3BrTJw?start=128
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+$PAR
+Video lecture on Quotient Rule of Radicals (watch till 3:20)
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/OhzCKJt4uQI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SketchingParabolas.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SketchingParabolas.pg
new file mode 100644
index 0000000000..a4f6fc5503
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SketchingParabolas.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U7L7_SketchingParabolas.pdf
+!,"lecture notes on sketching parabolas", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/BXkLUY5JxAE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/9HE1kWHMTEI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByFactoring.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByFactoring.pg
new file mode 100644
index 0000000000..ba827c0bbf
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByFactoring.pg
@@ -0,0 +1,107 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L2_SolveQuadraticEquationsByFactoring.pdf
+!,"lecture notes on solving quadratic equation by factoring", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/2ZzuZvz33X0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/04RpkdaNzr8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vl9o9XEfXtw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByQuadraticFormula.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByQuadraticFormula.pg
new file mode 100644
index 0000000000..1cb89802cb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByQuadraticFormula.pg
@@ -0,0 +1,116 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L3_SolveQuadraticEquationsByQuadraticFormula.pdf
+!,"lecture notes on solving quadratic equation by Quadratic Formula", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LkmjnxZ-FuU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/uhHWlBLpvWA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CLrImGKeuEI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L3_NumberOfSolutionsOfQuadraticEquation.pdf
+!,"lecture notes on the number of solutions of a quadratic equation", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/QOqA8KQMJhE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationBySquareRootProperty.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationBySquareRootProperty.pg
new file mode 100644
index 0000000000..68d81513d3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationBySquareRootProperty.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L1_SolveQuadraticEquationsBySquareRootProperty.pdf
+!,"lecture notes on solving quadratic equation by square root property", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/6QTNwvnIoDk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/lpscRx-Mfdk?start=217
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByElimination.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByElimination.pg
new file mode 100644
index 0000000000..324464e8a3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByElimination.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U1L4_SolveSystemsByElimination.pdf
+!,"lecture notes on solving system equations by elimination", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/sZJIzbxBQSg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByGraphing.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByGraphing.pg
new file mode 100644
index 0000000000..783557f5ca
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByGraphing.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U1L2_SolveSystemByGraphing.pdf
+!,"lecture notes on solving system equations by graphing", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/3VbpmoGCWPA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U1L2_CheckSolutionOfSystemEquation.pdf
+!,"lecture notes on checking solution of a system equation", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Pe-7dgD6bRE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemBySubstitution.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemBySubstitution.pg
new file mode 100644
index 0000000000..bfdd2c5279
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemBySubstitution.pg
@@ -0,0 +1,103 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U1L3_SolveSystemBySubstitution.pdf
+!,"lecture notes on solving system equations by substitution", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Y3lx2S8uCX4
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ZqEDFqX4OwE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SquareRootOperations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SquareRootOperations.pg
new file mode 100644
index 0000000000..b5ab830247
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SquareRootOperations.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U5L3_SquareRootOperations.pdf
+!,"lecture notes on square root operations", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/-4Z3cfQbSCk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/hmr73HQqEa0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SystemEquationApplications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SystemEquationApplications.pg
new file mode 100644
index 0000000000..00f0ef1dad
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/SystemEquationApplications.pg
@@ -0,0 +1,99 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U1L5_SystemEquationApplications.pdf
+!,"lecture notes on system equation applications", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CF_BCdOoxhk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/TrigonometryRatios.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/TrigonometryRatios.pg
new file mode 100644
index 0000000000..0a21697878
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH065/TrigonometryRatios.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U5L5_TrigonometryValues.pdf
+!,"lecture notes on trigonometry ratios", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Jsiy4TxgIME
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/G-T_6hCdMQc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Add_Subtract_Rational_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Add_Subtract_Rational_Expressions.pg
new file mode 100644
index 0000000000..2077576e2d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Add_Subtract_Rational_Expressions.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/w7NhLkQynS8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/IKsi-DQU2zo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Calculator_Basics.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Calculator_Basics.pg
new file mode 100644
index 0000000000..ad1541cd45
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Calculator_Basics.pg
@@ -0,0 +1,96 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"There are unfortunately no videos available. Please use the Show Me Another button (which has solutions) and tutors for help.", "TARGET='_blank'") \}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Complex_Number_Operations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Complex_Number_Operations.pg
new file mode 100644
index 0000000000..ca5ee30013
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Complex_Number_Operations.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/zK25rGJBfB0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/b9jIuySxN8c
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/My9MfX2dv54
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LuyODzozd44
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Divide_Rational_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Divide_Rational_Expressions.pg
new file mode 100644
index 0000000000..2acb5776c6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Divide_Rational_Expressions.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/gcnk8TnzsLc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Domain_Range.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Domain_Range.pg
new file mode 100644
index 0000000000..f0a8bb08b9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Domain_Range.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/CTQK6Sthn7k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/QAxZEelInJc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Notation.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Notation.pg
new file mode 100644
index 0000000000..ea53566efb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Notation.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/j4t73jk2VzE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/EmTvdKkAUtE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/kzYtx_AqzjM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
new file mode 100644
index 0000000000..be4f013e69
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
@@ -0,0 +1,184 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
\ No newline at end of file
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Multiply_Rational_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Multiply_Rational_Expressions.pg
new file mode 100644
index 0000000000..3f4afd04f6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Multiply_Rational_Expressions.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/f-wz_ZzSDdg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/3GL69IA2q4s
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Operations_with_Radicals.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Operations_with_Radicals.pg
new file mode 100644
index 0000000000..8564b14e7c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Operations_with_Radicals.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/egNq4tSfi1I
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/qH4IQfDD1Nw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GEeKOeGHddY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/sBvRJUwXJPo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Equations_with_Complex_Solutions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Equations_with_Complex_Solutions.pg
new file mode 100644
index 0000000000..6cdb26e1e0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Equations_with_Complex_Solutions.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/dnjK4DPqh0k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Formula.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Formula.pg
new file mode 100644
index 0000000000..1cb89802cb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Formula.pg
@@ -0,0 +1,116 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L3_SolveQuadraticEquationsByQuadraticFormula.pdf
+!,"lecture notes on solving quadratic equation by Quadratic Formula", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LkmjnxZ-FuU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/uhHWlBLpvWA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/CLrImGKeuEI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+\{ htmlLink(qq!
+http://spot.pcc.edu/~cyao/MTH65Docs/U6L3_NumberOfSolutionsOfQuadraticEquation.pdf
+!,"lecture notes on the number of solutions of a quadratic equation", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/QOqA8KQMJhE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions.pg
new file mode 100644
index 0000000000..28514b713f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/02h9yhc7ruc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/w3OSfRSaVeQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions_Vertex_Form.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions_Vertex_Form.pg
new file mode 100644
index 0000000000..7e087c5508
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions_Vertex_Form.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/aOS6OfB5-9o
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/jP43EY-S_tg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/Ur3mFyTKqQg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/lgWa6CvJjYw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/02h9yhc7ruc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/w3OSfRSaVeQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Radical_Functions_Domain_Range.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Radical_Functions_Domain_Range.pg
new file mode 100644
index 0000000000..60cba97d92
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Radical_Functions_Domain_Range.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/4h54s7BBPpA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/hZEGZMb4uzQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Exponents.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Exponents.pg
new file mode 100644
index 0000000000..7a4b22e603
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Exponents.pg
@@ -0,0 +1,116 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/3YbwhlqlvPs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/LoZn5mfbHr8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ry-oYLDi4L8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GJWekWPKopo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/AyS4qUtTYcA
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Functions_Domain.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Functions_Domain.pg
new file mode 100644
index 0000000000..5fb2c67649
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Functions_Domain.pg
@@ -0,0 +1,108 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/Gvhplmx9QPM
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/v0IhvIzCc_I
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/GeOZHxQRMvc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Complex_Number_Denominators.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Complex_Number_Denominators.pg
new file mode 100644
index 0000000000..9e743b7199
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Complex_Number_Denominators.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/EyzepHsj7OI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/PCHqM_2rtbw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Radical_Denominators.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Radical_Denominators.pg
new file mode 100644
index 0000000000..9509f5866b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Radical_Denominators.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/6864x4JSmxY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/zLS469sfcJI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Complex_Rational_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Complex_Rational_Expressions.pg
new file mode 100644
index 0000000000..2b1bf155f5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Complex_Rational_Expressions.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/S0LekyH8yVU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/q4aMMtSvsvI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/jSnHRp8TjXY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/aMswqN951OY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Radical_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Radical_Expressions.pg
new file mode 100644
index 0000000000..7828e4f525
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Radical_Expressions.pg
@@ -0,0 +1,104 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/uggD8mwglyc
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/c-wtvEdEoVs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Rational_Expressions.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Rational_Expressions.pg
new file mode 100644
index 0000000000..d7ab4985db
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Rational_Expressions.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/7Uos1ED3KHI
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/XChok8XlF90
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ey_b3aPsRl8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/dstNU7It-Ro
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Equations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Equations.pg
new file mode 100644
index 0000000000..cf445b3a6b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Equations.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/iTV9CRmfA-w
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/1tbve9nAq-Y
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/sJWCz2UGuZg
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/YW1vdoKDzjE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Inequalities.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Inequalities.pg
new file mode 100644
index 0000000000..5772b07d8f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Inequalities.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/dArQeGaXOh0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/pqcCcj1UMPw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/s5Jr6RJBl28
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/wfFdzihH87s
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/SSWUbC9fQoQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/4u-s5mB6MDU
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Inequalities.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Inequalities.pg
new file mode 100644
index 0000000000..74af98e1e1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Inequalities.pg
@@ -0,0 +1,116 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/JBjMwlyaqnw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ewsTyLdgryw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/5P3kfiHpErs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/HX4YVZt9mgo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/S8Ul3rqVpVQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Literal_Rational_Equations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Literal_Rational_Equations.pg
new file mode 100644
index 0000000000..ae48e9d5c0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Literal_Rational_Equations.pg
@@ -0,0 +1,100 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/iqneTqLbMfY
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Quadratic_Equations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Quadratic_Equations.pg
new file mode 100644
index 0000000000..a2bc6824b9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Quadratic_Equations.pg
@@ -0,0 +1,117 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/6QTNwvnIoDk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/lpscRx-Mfdk?start=217
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/2ZzuZvz33X0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/04RpkdaNzr8
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/vl9o9XEfXtw
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"There are unfortunately no videos available. Please use the Show Me Another button (which has solutions) and tutors for help.", "TARGET='_blank'") \}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Radical_Equations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Radical_Equations.pg
new file mode 100644
index 0000000000..da8544cec5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Radical_Equations.pg
@@ -0,0 +1,116 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/n6NBXVUS29U
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/ILBqcnXTDBE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/52xMzV5EqNE
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/DNp5slhIh6k
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/luQqQbBK2uo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations.pg
new file mode 100644
index 0000000000..69ae3b3508
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations.pg
@@ -0,0 +1,120 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/5vrUyeKemLs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/vvWAIdPHG68
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/MxnlmG61lXo
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/R96n_Jze8E0
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/Z50kmCwgivs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/dGM7obRrJqs
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations_Applications.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations_Applications.pg
new file mode 100644
index 0000000000..e5539b2c87
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations_Applications.pg
@@ -0,0 +1,112 @@
+# ASimpleCombinedHeaderFile.pg
+# This header file can be used for both the screen and hardcopy output
+
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+#
+####################################################
+
+
+
+TEXT(MODES(TeX =>EV3(<<'EOT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+{\large \bf {\{protect_underbar($courseName)\}}}
+% Uncomment the line below if this course has sections. Note that this is a comment in TeX mode since this is only processed by LaTeX
+% {\large \bf { Section: \{protect_underbar($sectionName)\} } }
+\par
+\noindent{\large \bf {Assignment \{protect_underbar($setNumber)\} due $formatedDueDate}}
+\par\noindent \bigskip
+% Uncomment and edit the line below if this course has a web page. Note that this is a comment in TeX mode.
+%See the course web page for information http://yoururl/yourcourse
+
+%$BBOLD WeBWorK Assignment \{ protect_underbar($setNumber) \} is due : %$formattedDueDate. $EBOLD
+%$PAR
+%Here's the list of
+%\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and %symbols", "TARGET='_blank'") \}
+% which WeBWorK understands.
+%$BR
+
+EOT
+
+####################################################
+#
+# End of hardcopy only output.
+#
+####################################################
+
+
+####################################################
+#
+# The items below are printed out only when set is displayed on screen
+#
+####################################################
+TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+
+$PAR
+\{ htmlLink(qq!
+%http://spot.pcc.edu/~cyao/MTH65Docs/U4L2_FactorByGrouping.pdf
+!,"", "TARGET='_blank'") \}
+$PAR
+\{ scalableiframe("https://
+www.youtube.com/embed/B83AVXXJrdQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/E1j8W64NQ0Y
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/B0Z4s38YIgQ
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+\{ scalableiframe("//
+www.youtube.com/embed/G-JFTXtXSqk
+", style=>'position: relative; width: 100%; height: 0px; padding-bottom: 62%;' )\}
+$PAR
+
+
+EOT
+
+####################################################
+# Uncomment and edit the lines below if this course has a web page. Note that this is comment in Perl mode.
+# IMPORTANT: Make sure the EOT at the bottom is at the beginning of a line with no spaces preceeding it.
+#TEXT(MODES(TeX =>"",HTML=>EV3(<<'EOT')));
+#See the course web page for information \{ htmlLink(qq!http://yoururl/yourcourse!,"your course name") \}
+#EOT
+####################################################
+
+####################################################
+#
+# End of screen only output.
+#
+####################################################
+
+####################################################
+#
+# Anything between the BEGIN_TEXT AND END_TEXT lines
+# will be printed in both screen and hardcopy output
+#
+####################################################
+
+BEGIN_TEXT
+
+END_TEXT
+
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
new file mode 100644
index 0000000000..be4f013e69
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
@@ -0,0 +1,184 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
\ No newline at end of file
diff --git a/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
new file mode 100644
index 0000000000..be4f013e69
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
@@ -0,0 +1,184 @@
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+
+);
+
+
+
+####################################################
+#
+# The item below printed out only when a hardcopy is made.
+# It puts the student's name at top left, course name
+# and section number at top right
+#
+####################################################
+
+TEXT($BEGIN_ONE_COLUMN);
+
+TEXT(MODES(TeX =>EV3(<<'END_TEXT'),HTML=>""));
+
+\noindent {\large \bf $studentName}
+\hfill
+\noindent {\large \bf \{protect_underbar($courseName)\}
+$sectionNumber }
+\par
+
+END_TEXT
+
+##########################################################
+#
+# Items printed both to the screen and when a hardcopy is made.
+#
+# A statement with the due date.
+#
+# A link to MyPCC. You could change this to your course's
+# website, if there is one.
+#
+##########################################################
+
+BEGIN_TEXT
+
+$BBOLD This assignment (\{ protect_underbar($setNumber) \} )
+is due : $formattedDueDate. $EBOLD
+
+$PAR
+
+More information about your course can be found in MyPCC or DesireToLearn:
+\{
+htmlLink(qq!http://my.pcc.edu/!,"MyPCC")
+\}.
+$PAR
+
+END_TEXT
+###########################################################
+#
+# This is a good place to issue instructions or give comments
+# that are specific for this problem set. You might need some
+# WeBWorK formatting commands though. Here is a fairly complete
+# list:
+#
+# $BR line break
+# $PAR paragraph break
+# $BBOLD and $EBOLD begin and end boldface
+# $BITALIC and $EITALIC begin and end italics
+# $BUL and $EUL begin and end underline
+# $BCENTER and $ECENTER begin and end centering
+# $HR make a horizontal rule (line)
+#
+# $SPACE force a space where one isn't
+# automatically created
+#
+# Some characters should not be literally typed, since they have
+# control functions in Perl or produce different characters in LaTeX.
+# Also, the character might not even be a keyboard character. Using
+# them will either cause erroneous text in WeBWorK or in the printed
+# hardcopy version of an assignment. If you need to use these
+# characters, here are their commands:
+#
+# $CARET ^ a caret
+# $PERCENT % percent sign
+# $DOLLAR $ dollar sign
+# $US _ underscore
+# $LQ left double quote
+# $RQ right double quote
+#
+# These two require special attention. For the set header, use:
+# $GTS > greater than sign
+# $LTS < less than sign
+# But for the hardcopy header, use:
+# \textgreater > greater than sign
+# \textless < less than sign
+#
+# And these two require special attention. For the set header,
+# type them as is
+# { { left brace
+# } } right brace
+# But for the hardcopy header, use:
+# $LBRACE { left brace
+# $RBRACE } right brace
+#
+#
+# Also, here are some basic LaTeX commands that will probably
+# come in handy. All LaTeX needs to be encased in \( and \).
+# (Or you can encase them in \[ and \] for display math mode.)
+#
+# \frac{a}{b} to make a fraction
+# \pi pi
+# \geq greater than or equal to
+# \leq less than or equal to
+# \sin, \cos, \ln nicely typeset function names
+# \{, \} braces in math mode
+# \left( if you write a grouping symbol
+# \left[ this way, it will be large enough
+# \left\{ to encase whatever comes between
+# it and the corresponding \right)
+# \right]
+# \right\}
+#
+###########################################################
+BEGIN_TEXT
+$HR
+$PAR
+
+
+
+This assignment covers material from \{ protect_underbar($setNumber) \}.
+
+
+$PAR
+$HR
+END_TEXT
+###########################################################
+# EDIT ABOVE 'END_TEXT'
+###########################################################
+
+###########################################################
+#
+# The item below will be printed for both the screen version and the
+# hardcopy version. This is a section for general information about
+# using WeBWorK.
+#
+###########################################################
+$two = 2;
+BEGIN_TEXT
+
+The primary purpose of WeBWorK is to let you know that you are getting the
+correct answer or to alert you if you are making some kind of mistake. Usually
+you can attempt a problem multiple times before the due date and try to learn from your mistakes. If you are having trouble with a problem, you should consult the book or your notes, or ask a fellow student, a tutor, or your professor for help. Don't spend a lot of time guessing - it's not very efficient or effective.
+
+$PAR
+
+Give 4 or 5 significant digits for decimal answers. However, sometimes a
+problem will require you to give an exact answer, and a decimal approximation
+will be counted as wrong.
+
+$PAR
+
+If you get a problem wrong, always read the feedback message if there is one. WeBWorK tries to let you know what format it is expecting. It also tries to let you know how your math might be wrong.
+
+$PAR
+
+Here's the list of
+\{ htmlLink(qq!http://webwork.maa.org/wiki/Available_Functions!,"functions and symbols") \}
+ that WeBWorK understands.
+
+$PAR
+Most of the time if WeBWorK is telling you that your answer is incorrect, your
+answer is actually incorrect. This is a good thing - it gives
+you a chance to learn. Read the error message if WeBWorK makes one for you.
+This may help you find your mistake. Otherwise, you have the opportunity to
+ask your instructor for help.
+$PAR
+You can use the Email instructor button on each problem
+page to send e-mail to the instructor.
+
+
+
+END_TEXT
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT(); # This should be the last executable line.
\ No newline at end of file
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Fractions.def
new file mode 100644
index 0000000000..e755d94658
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Fractions.def
@@ -0,0 +1,48 @@
+openDate = 01/01/2014 at 12:48am PST
+dueDate = 06/30/2015 at 01:48am PDT
+answerDate = 06/30/2015 at 01:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractFractions.pg
+description = add and subtract fractions, not involving mixed numbers
+problemList =
+BasicAlgebra/FractionArithmetic/AddFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions08.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions12.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions24.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions01.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions05.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions90.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions90.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems60.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionAdditionWordProblems70.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems60.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems70.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems75.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionSubtractionWordProblems80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Integers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Integers.def
new file mode 100644
index 0000000000..0fb426d0af
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Integers.def
@@ -0,0 +1,27 @@
+openDate = 01/01/2014 at 12:33am PST
+dueDate = 06/30/2015 at 01:33am PDT
+answerDate = 06/30/2015 at 01:33am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractIntegers.pg
+description = add and subtract positive and negative numbers
+problemList =
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Mixed_Numbers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Mixed_Numbers.def
new file mode 100644
index 0000000000..1d1c363f1f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setAdd_Subtract_Mixed_Numbers.def
@@ -0,0 +1,49 @@
+openDate = 01/01/2014 at 01:03am PST
+dueDate = 06/30/2015 at 02:03am PDT
+answerDate = 06/30/2015 at 02:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/AddSubtractMixedNumbers.pg
+description = add and subtract mixed numbers
+problemList =
+BasicMath/FractionsCalculation/MixedNumberAddition10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition40.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition46.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition48.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition49.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition60.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition70.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition80.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition90.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition110.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition120.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition160.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition190.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition220.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition230.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberAddition240.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction60.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction70.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction80.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction140.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction160.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction190.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction210.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction220.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction230.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberSubtraction240.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberAdditionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberAdditionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberAdditionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberAdditionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberAdditionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberSubtractionWordProblems60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Addition_Subtraction.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Addition_Subtraction.def
new file mode 100644
index 0000000000..7e25833db6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Addition_Subtraction.def
@@ -0,0 +1,17 @@
+openDate = 01/01/2014 at 01:18am PST
+dueDate = 06/30/2015 at 02:18am PDT
+answerDate = 06/30/2015 at 02:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAdditionSubtraction.pg
+description = add and subtract decimals
+problemList =
+BasicMath/Decimal/AddSubtractDecimals10.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals12.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals15.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals20.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals25.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals26.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals30.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals40.pg, 1, -1, 0
+BasicMath/Decimal/AddSubtractDecimals50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Definition.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Definition.def
new file mode 100644
index 0000000000..7e5bb43477
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Definition.def
@@ -0,0 +1,38 @@
+openDate = 01/01/2014 at 01:15am PST
+dueDate = 06/30/2015 at 02:15am PDT
+answerDate = 06/30/2015 at 02:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalDefinition.pg
+description = definition of decimals
+problemList =
+BasicMath/Decimal/WriteDecimalByGraph10.pg, 1, -1, 0
+BasicMath/Decimal/WriteDecimalByGraph20.pg, 1, -1, 0
+BasicMath/Decimal/DecimalAndMoney10.pg, 1, -1, 0
+BasicMath/Decimal/DecimalAndMoney20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine50.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine10.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine20.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine30.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine40.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine50.pg, 1, -1, 0
+BasicMath/Decimal/DecimalOnNumberLine60.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals10.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals15.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals20.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals25.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals30.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals35.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals40.pg, 1, -1, 0
+BasicMath/Decimal/OrderDecimals50.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals10.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals20.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals30.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals40.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals50.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals60.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals70.pg, 1, -1, 0
+BasicMath/Decimal/ReadDecimals80.pg, 1, -1, 0
+BasicMath/Decimal/RoundingDecimals10.pg, 1, -1, 0
+BasicMath/Decimal/RoundingDecimals20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Multiplication_Division.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Multiplication_Division.def
new file mode 100644
index 0000000000..fed2ad1720
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_Multiplication_Division.def
@@ -0,0 +1,28 @@
+openDate = 01/01/2014 at 01:21am PST
+dueDate = 06/30/2015 at 02:21am PDT
+answerDate = 06/30/2015 at 02:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalMultiplicationDivision.pg
+description = multiply and divide decimals
+problemList =
+BasicMath/Decimal/MultiplyDivideDecimals10.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals20.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals30.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals40.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals50.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals60.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals70.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals80.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals140.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals150.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals160.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals170.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals180.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals190.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals200.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals210.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals220.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals230.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals240.pg, 1, -1, 0
+BasicMath/Decimal/MultiplyDivideDecimals250.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_and_Fraction.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_and_Fraction.def
new file mode 100644
index 0000000000..0a5bcba842
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDecimal_and_Fraction.def
@@ -0,0 +1,20 @@
+openDate = 01/01/2014 at 01:24am PST
+dueDate = 06/30/2015 at 02:24am PDT
+answerDate = 06/30/2015 at 02:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DecimalAndFraction.pg
+description = convert between decimal and fraction
+problemList =
+BasicMath/FractionPercentDecimal/FractionToDecimal50.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToDecimal60.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToDecimal70.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToDecimal80.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToDecimal90.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction10.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction20.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction30.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction35.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction40.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction50.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/DecimalToFraction60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivide_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivide_Fractions.def
new file mode 100644
index 0000000000..b7a26f65bd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivide_Fractions.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:57am PST
+dueDate = 06/30/2015 at 01:57am PDT
+answerDate = 06/30/2015 at 01:57am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivideFractions.pg
+description = divide fractions, not including mixed numbers
+problemList =
+BasicAlgebra/FractionArithmetic/DivideFractions10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/DivideFractions11.pg, 1, -1, 0
+BasicMath/FractionsCalculation/DivideFractions12.pg, 1, -1, 0
+BasicMath/FractionsCalculation/DivideFractions32.pg, 1, -1, 0
+BasicMath/FractionsCalculation/DivideFractions42.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionDivisionWordProblems60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivisibility_Test.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivisibility_Test.def
new file mode 100644
index 0000000000..f0f19b2a55
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivisibility_Test.def
@@ -0,0 +1,16 @@
+openDate = 01/01/2014 at 12:15am PST
+dueDate = 06/30/2015 at 01:15am PDT
+answerDate = 06/30/2015 at 01:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/DivisibilityTest.pg
+description = decide whether 2, 3, 5 and 9 can go into a given integer
+problemList =
+BasicMath/PrimeLCMGCF/divisibility10.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility20.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility40.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility60.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility70.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility80.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility80.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/divisibility80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivision.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivision.def
new file mode 100644
index 0000000000..3916b9bee3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setDivision.def
@@ -0,0 +1,29 @@
+openDate = 01/01/2014 at 12:09am PST
+dueDate = 06/30/2015 at 01:09am PDT
+answerDate = 06/30/2015 at 01:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/Division.pg
+description = introduction to division and application problems
+problemList =
+BasicMath/MultiplicationDivision/multiplicationTable20.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/multiplicationTable25.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivideByZero10.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem10.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem20.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem30.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem40.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem50.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem52.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem60.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem62.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem70.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem80.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem90.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem100.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivisionWordProblem110.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/RemainderWordProblem10.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/RemainderWordProblem20.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/RemainderWordProblem30.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/RemainderWordProblem40.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/RemainderWordProblem50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setExponents_and_Rounding_Whole_Numbers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setExponents_and_Rounding_Whole_Numbers.def
new file mode 100644
index 0000000000..a22c135317
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setExponents_and_Rounding_Whole_Numbers.def
@@ -0,0 +1,15 @@
+openDate = 01/01/2014 at 12:03am PST
+dueDate = 06/30/2015 at 01:03am PDT
+answerDate = 06/30/2015 at 01:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/ExponentsAndRoundingWholeNumbers.pg
+description = definition of exponent, and how to round whole numbers
+problemList =
+BasicMath/Miscellaneous/ExponentDefinition05.pg, 1, -1, 0
+BasicMath/Miscellaneous/ExponentDefinition05.pg, 1, -1, 0
+BasicMath/Miscellaneous/ExponentDefinition15.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/RoundWholeNumbers10.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/RoundWholeNumbers20.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/RoundWholeNumbers10.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/RoundWholeNumbers20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setFraction_Definition.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setFraction_Definition.def
new file mode 100644
index 0000000000..e7bc6aa069
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setFraction_Definition.def
@@ -0,0 +1,30 @@
+openDate = 01/01/2014 at 12:45am PST
+dueDate = 06/30/2015 at 01:45am PDT
+answerDate = 06/30/2015 at 01:45am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/FractionDefinition.pg
+description = definition of fractions
+problemList =
+BasicMath/FractionsCalculation/WriteFractionByGraph10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/WriteFractionByGraph20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/WriteFractionByGraph30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/WriteFractionByGraph40.pg, 1, -1, 0
+BasicMath/FractionsCalculation/EquivalentFraction10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/EquivalentFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction05.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/ReduceFraction25.pg, 1, -1, 0
+BasicMath/FractionsCalculation/ReduceFraction50.pg, 1, -1, 0
+BasicMath/FractionsCalculation/FractionOnNumberLine10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/FractionOnNumberLine20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions40.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions50.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions60.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions70.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions80.pg, 1, -1, 0
+BasicMath/FractionsCalculation/CompareFractions90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGCF_and_LCM.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGCF_and_LCM.def
new file mode 100644
index 0000000000..adbd8cc1c8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGCF_and_LCM.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:21am PST
+dueDate = 06/30/2015 at 01:21am PDT
+answerDate = 06/30/2015 at 01:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/GCFAndLCM.pg
+description = find Great Common Factor and Least Common Multiple of a group of numbers
+problemList =
+BasicMath/PrimeLCMGCF/GCF10.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/GCF20.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/GCF30.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM10.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM10.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM20.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM20.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM25.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM30.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM30.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/LCM40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGeometry_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGeometry_Basics.def
new file mode 100644
index 0000000000..7db1d8f28a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setGeometry_Basics.def
@@ -0,0 +1,13 @@
+openDate = 01/01/2014 at 12:12am PST
+dueDate = 06/30/2015 at 01:12am PDT
+answerDate = 06/30/2015 at 01:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/GeometryBasics.pg
+description = find perimeter and area of rectangles, squares and triangles
+problemList =
+BasicAlgebra/Geometry/RectanglePerimeterArea10.pg, 1, -1, 0
+BasicMath/Miscellaneous/SquarePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setIntegers_and_Absolute_Value.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setIntegers_and_Absolute_Value.def
new file mode 100644
index 0000000000..aff2ba6dd4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setIntegers_and_Absolute_Value.def
@@ -0,0 +1,15 @@
+openDate = 01/01/2014 at 12:30am PST
+dueDate = 06/30/2015 at 01:30am PDT
+answerDate = 06/30/2015 at 01:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/IntegersAndAbsoluteValue.pg
+description = introduction to negative numbers and absolute value
+problemList =
+BasicAlgebra/NumberBasics/NumberLine10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine10.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/CompareNumbers50.pg, 1, -1, 0
+BasicAlgebra/ComparisonsAndBasicInequalities/CompareNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue10.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/AbsoluteValue11.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/SignedNumberInterpretations10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMean_Median_Mode.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMean_Median_Mode.def
new file mode 100644
index 0000000000..2cb661278d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMean_Median_Mode.def
@@ -0,0 +1,31 @@
+openDate = 01/01/2014 at 01:30am PST
+dueDate = 06/30/2015 at 02:30am PDT
+answerDate = 06/30/2015 at 02:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/MeanMedianMode.pg
+description = find mean, median and mode of data, when to use which
+problemList =
+BasicMath/MeanMedianMode/MeanMedianMode10.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode20.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode30.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode40.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode50.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode60.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode70.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode80.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode90.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode100.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode110.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode120.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode130.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode140.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode150.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode160.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode170.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode180.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode190.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode200.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode210.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode220.pg, 1, -1, 0
+BasicMath/MeanMedianMode/MeanMedianMode230.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMixed_Number_Definition.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMixed_Number_Definition.def
new file mode 100644
index 0000000000..bab4b8b305
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMixed_Number_Definition.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 01:00am PST
+dueDate = 06/30/2015 at 02:00am PDT
+answerDate = 06/30/2015 at 02:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/MixedNumberDefinition.pg
+description = introduction to mixed numbers, convert between mixed number and improper fraction
+problemList =
+BasicMath/FractionsCalculation/WriteFractionByGraph50.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction30.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction40.pg, 1, -1, 0
+BasicMath/FractionsCalculation/FractionOnNumberLine30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/FractionOnNumberLine40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiplication.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiplication.def
new file mode 100644
index 0000000000..32a2e8016c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiplication.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:06am PST
+dueDate = 06/30/2015 at 01:06am PDT
+answerDate = 06/30/2015 at 01:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/Multiplication.pg
+description = introduction to multiplication and application problems
+problemList =
+BasicMath/MultiplicationDivision/multiplicationTable10.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/multiplicationTable15.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem10.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem20.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem30.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem40.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem50.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem60.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem70.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem80.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/MultiplicationWordProblem90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Integers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Integers.def
new file mode 100644
index 0000000000..fb8b92c52c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Integers.def
@@ -0,0 +1,18 @@
+openDate = 01/01/2014 at 12:36am PST
+dueDate = 06/30/2015 at 01:36am PDT
+answerDate = 06/30/2015 at 01:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideIntegers.pg
+description = multiply and divide positive and negative numbers
+problemList =
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers20.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/MultiplyWithNegativeIntegers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers20.pg, 1, -1, 0
+BasicMath/MultiplicationDivision/DivideByZero10.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition10.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition20.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Mixed_Numbers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Mixed_Numbers.def
new file mode 100644
index 0000000000..5066f5c853
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Divide_Mixed_Numbers.def
@@ -0,0 +1,33 @@
+openDate = 01/01/2014 at 01:06am PST
+dueDate = 06/30/2015 at 02:06am PDT
+answerDate = 06/30/2015 at 02:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyDivideMixedNumbers.pg
+description = multiply and divide mixed numbers
+problemList =
+BasicAlgebra/FractionArithmetic/MixedNumberMultiplication10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberMultiplication15.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberMultiplication20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberMultiplication25.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberMultiplication30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberMultiplication35.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MixedNumberDivision10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions30.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberDivision15.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberDivision20.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberDivision25.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MixedNumberDivision35.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberMultiplicationWordProblems60.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/MixedNumberDivisionWordProblems60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Fractions.def
new file mode 100644
index 0000000000..254afdc1e4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setMultiply_Fractions.def
@@ -0,0 +1,23 @@
+openDate = 01/01/2014 at 12:51am PST
+dueDate = 06/30/2015 at 01:51am PDT
+answerDate = 06/30/2015 at 01:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/MultiplyFractions.pg
+description = multiply fractions, not including mixed numbers
+problemList =
+BasicAlgebra/FractionArithmetic/MultiplyFractions10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MultiplyFractions15.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MultiplyFractions16.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MultiplyThreeFractions10.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MultiplyThreeFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions50.pg, 1, -1, 0
+BasicMath/FractionsCalculation/MultiplyFractions69.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems10.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems20.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems30.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems40.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems50.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems60.pg, 1, -1, 0
+BasicMath/FractionApplication/FractionMultiplicationWordProblems70.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_1.def
new file mode 100644
index 0000000000..ec98129e59
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_1.def
@@ -0,0 +1,29 @@
+openDate = 01/01/2014 at 12:24am PST
+dueDate = 06/30/2015 at 01:24am PDT
+answerDate = 06/30/2015 at 01:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_1.pg
+description = order of operations problems involving positive integers only
+problemList =
+BasicMath/OrderOfOperations_More/orderOfOperations09.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations20.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations30.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations70.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations120.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations170.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations21.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations23.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations24.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations25.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations26.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations27.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations28.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations29.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations46.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations53.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations108.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations109.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations163.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations164.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations165.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_2.def
new file mode 100644
index 0000000000..03acf96950
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_2.def
@@ -0,0 +1,35 @@
+openDate = 01/01/2014 at 12:39am PST
+dueDate = 06/30/2015 at 01:39am PDT
+answerDate = 06/30/2015 at 01:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_2.pg
+description = order of operations problems involving positive and negative integers
+problemList =
+BasicAlgebra/OrderOfOperations/orderOfOperations40.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations50.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations60.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations22.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations47.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations48.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations49.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations80.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations90.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations100.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations110.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations140.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations150.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations160.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations180.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations190.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations51.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations52.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations54.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations82.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations199.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations241.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations240.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations200.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations210.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations220.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations230.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_3.def
new file mode 100644
index 0000000000..78abbce50a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setOrder_of_Operations_3.def
@@ -0,0 +1,18 @@
+openDate = 01/01/2014 at 01:09am PST
+dueDate = 06/30/2015 at 02:09am PDT
+answerDate = 06/30/2015 at 02:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/OrderOfOperations_3.pg
+description = order of operations problems involving fractions
+problemList =
+BasicMath/Miscellaneous/ExponentDefinition40.pg, 1, -1, 0
+BasicMath/Miscellaneous/ExponentDefinition50.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations285.pg, 1, -1, 0
+BasicMath/OrderOfOperations_More/orderOfOperations286.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations250.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/OOOFractions10.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations280.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations290.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations260.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations270.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Definition.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Definition.def
new file mode 100644
index 0000000000..098366d793
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Definition.def
@@ -0,0 +1,27 @@
+openDate = 01/01/2014 at 01:48am PST
+dueDate = 06/30/2015 at 02:48am PDT
+answerDate = 06/30/2015 at 02:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentDefinition.pg
+description = introduction to percent
+problemList =
+BasicAlgebra/NumberBasics/PercentDecimalConversion10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToPercent10.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToPercent20.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToPercent30.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionToPercent40.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/PercentToFraction10.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/PercentToFraction20.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/PercentToFraction30.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/PercentToFraction40.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionPercentDecimal10.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionPercentDecimal10.pg, 1, -1, 0
+BasicMath/FractionPercentDecimal/FractionPercentDecimal10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Formula.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Formula.def
new file mode 100644
index 0000000000..4200535a3b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Formula.def
@@ -0,0 +1,31 @@
+openDate = 01/01/2014 at 01:51am PST
+dueDate = 06/30/2015 at 02:51am PDT
+answerDate = 06/30/2015 at 02:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentFormula.pg
+description = use Percent Formula to solve basic percent problems
+problemList =
+BasicMath/Percent/MTH20PercentOfNumberType1_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType1_90.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType2_80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentOfNumberType3_60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Word_Problem.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Word_Problem.def
new file mode 100644
index 0000000000..f6cc1b83c8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_Word_Problem.def
@@ -0,0 +1,43 @@
+openDate = 01/01/2014 at 01:54am PST
+dueDate = 06/30/2015 at 02:54am PDT
+answerDate = 06/30/2015 at 02:54am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentWordProblems.pg
+description = application problems involving percent
+problemList =
+BasicMath/Percent/MTH20PercentApplicationType1_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_90.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_100.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_110.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType1_120.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_90.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_100.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_110.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType2_120.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_90.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_100.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentApplicationType3_110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_of_Increase_Decrease.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_of_Increase_Decrease.def
new file mode 100644
index 0000000000..1d2598bfdb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPercent_of_Increase_Decrease.def
@@ -0,0 +1,26 @@
+openDate = 01/01/2014 at 01:57am PST
+dueDate = 06/30/2015 at 02:57am PDT
+answerDate = 06/30/2015 at 02:57am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/PercentOfIncreaseDecrease.pg
+description = percent of increase and decrease application problems
+problemList =
+BasicMath/Percent/MTH20PercentIncreaseDecrease10.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease20.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease30.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease40.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease50.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease60.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease70.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease80.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease90.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease95.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease100.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease110.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease120.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease130.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease140.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease150.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease160.pg, 1, -1, 0
+BasicMath/Percent/MTH20PercentIncreaseDecrease170.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPrime_Numbers.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPrime_Numbers.def
new file mode 100644
index 0000000000..b9c2811cdf
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setPrime_Numbers.def
@@ -0,0 +1,15 @@
+openDate = 01/01/2014 at 12:18am PST
+dueDate = 06/30/2015 at 01:18am PDT
+answerDate = 06/30/2015 at 01:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/PrimeNumbers.pg
+description = introduction to prime and composite numbers, prime factor an integer
+problemList =
+BasicMath/PrimeLCMGCF/primeOrComposite10.pg, 1, -1, 0
+BasicMath/PrimeLCMGCF/primeOrComposite10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/FactorInteger10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/FactorInteger20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/FactorInteger30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/FactorInteger40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/FactorInteger60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setProportion.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setProportion.def
new file mode 100644
index 0000000000..ace52481ef
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setProportion.def
@@ -0,0 +1,29 @@
+openDate = 01/01/2014 at 01:39am PST
+dueDate = 06/30/2015 at 02:39am PDT
+answerDate = 06/30/2015 at 02:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/Proportion.pg
+description = introduction to proportion and proportion application problems
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveProportion10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion40.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion10.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion11.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion13.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion14.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion20.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion21.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion30.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion31.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion40.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion41.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion50.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion51.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion60.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion61.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion70.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion71.pg, 1, -1, 0
+BasicMath/Proportion/MTH20Proportion80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setRate_and_Ratio.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setRate_and_Ratio.def
new file mode 100644
index 0000000000..38f785e2aa
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setRate_and_Ratio.def
@@ -0,0 +1,31 @@
+openDate = 01/01/2014 at 01:36am PST
+dueDate = 06/30/2015 at 02:36am PDT
+answerDate = 06/30/2015 at 02:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/RateAndRatio.pg
+description = definition of rate and ratio, find rate and ratio
+problemList =
+BasicMath/Rate/FindRateOfChange10.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange20.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange30.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange40.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange50.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange60.pg, 1, -1, 0
+BasicMath/Rate/FindRateOfChange70.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange10.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange11.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange20.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange21.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange30.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange31.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange40.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange50.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange60.pg, 1, -1, 0
+BasicMath/Rate/UseRateOfChange70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/Ratio10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/Ratio20.pg, 1, -1, 0
+BasicMath/Rate/UseRatio10.pg, 1, -1, 0
+BasicMath/Rate/UseRatio11.pg, 1, -1, 0
+BasicMath/Rate/UseRatio20.pg, 1, -1, 0
+BasicMath/Rate/UseRatio21.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setSquare_Root.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setSquare_Root.def
new file mode 100644
index 0000000000..5a51a418e0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setSquare_Root.def
@@ -0,0 +1,17 @@
+openDate = 01/01/2014 at 01:27am PST
+dueDate = 06/30/2015 at 02:27am PDT
+answerDate = 06/30/2015 at 02:27am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/SquareRoot.pg
+description = introduction to square root
+problemList =
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers10.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot30.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers30.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers30.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers50.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers60.pg, 1, -1, 0
+BasicMath/IntegerAndSquareRoot/identifySquareNumbers40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setUnit_Conversion.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setUnit_Conversion.def
new file mode 100644
index 0000000000..e3eb7babab
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH020/setUnit_Conversion.def
@@ -0,0 +1,45 @@
+openDate = 01/01/2014 at 01:42am PST
+dueDate = 06/30/2015 at 02:42am PDT
+answerDate = 06/30/2015 at 02:42am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH020/MTH20HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH020/UnitConversion.pg
+description = convert within English unit system and international unit system
+problemList =
+BasicMath/UnitConversion/UnitConversionAmerican10.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican30.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican40.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican60.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican70.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican100.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican120.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmerican130.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication10.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication20.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication30.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication40.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication50.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionAmericanApplication60.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric30.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric90.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric100.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric150.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric210.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric250.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric320.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetric350.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication10.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication20.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication30.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication40.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication50.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication60.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionMetricApplication70.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTime20.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTime40.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTime70.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTime100.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTimeApplication10.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTimeApplication20.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTimeApplication30.pg, 1, -1, 0
+BasicMath/UnitConversion/UnitConversionTimeApplication40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAbsolute_Value.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAbsolute_Value.def
new file mode 100644
index 0000000000..d24431c409
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAbsolute_Value.def
@@ -0,0 +1,12 @@
+
+openDate = 12/11/2013 at 12:12am PST
+dueDate = 06/30/2014 at 01:06am PDT
+answerDate = 06/30/2014 at 01:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AbsoluteValue.pg
+description = basic absolute value calculations
+problemList =
+BasicAlgebra/NumberBasics/AbsoluteValue10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/AbsoluteValue30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAccount_Interest_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAccount_Interest_Word_Problems.def
new file mode 100644
index 0000000000..567cc4e823
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAccount_Interest_Word_Problems.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 01:28am PST
+dueDate = 06/30/2014 at 02:38am PDT
+answerDate = 06/30/2014 at 02:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AccountInterestWordProblems.pg
+description = word problems involving accounts earning a net interest rate
+problemList =
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblemWithTable50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/InterestWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAdd_Subtract_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAdd_Subtract_Fractions.def
new file mode 100644
index 0000000000..f21431ff96
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setAdd_Subtract_Fractions.def
@@ -0,0 +1,42 @@
+
+openDate = 12/11/2013 at 12:06am PST
+dueDate = 06/30/2014 at 01:03am PDT
+answerDate = 06/30/2014 at 01:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/AddSubtractFractions.pg
+description = adding and subtracting fractions
+problemList =
+BasicAlgebra/FractionArithmetic/AddFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions04.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions08.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions09.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions12.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions22.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions24.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions26.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions01.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions02.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions06.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions05.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions90.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/AddFractions90.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions100.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/SubtractFractions110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def
new file mode 100644
index 0000000000..479a1ee2ac
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Percentage_Word_Problems.def
@@ -0,0 +1,38 @@
+
+openDate = 12/11/2013 at 12:42am PST
+dueDate = 06/30/2014 at 01:44am PDT
+answerDate = 06/30/2014 at 01:44am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicPercentageWordProblems.pg
+description = percent and decimal conversion; percent calculations
+problemList =
+BasicAlgebra/NumberBasics/PercentDecimalConversion10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentDecimalConversion80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber110.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber120.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber90.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/PercentOfNumber100.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentWordProblem90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Word_Problems.def
new file mode 100644
index 0000000000..2b1d8035de
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setBasic_Word_Problems.def
@@ -0,0 +1,35 @@
+
+openDate = 12/11/2013 at 12:36am PST
+dueDate = 06/30/2014 at 01:40am PDT
+answerDate = 06/30/2014 at 01:40am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/BasicWordProblems.pg
+description = translating English to math equations; solving some basic word problems
+problemList =
+BasicAlgebra/EnglishToMath/EnglishToMathEquation10.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation20.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation30.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation40.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation50.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation60.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation70.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation80.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation90.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation100.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation110.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation120.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation130.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation140.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation150.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation160.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation170.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/EnglishToMathEquation180.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ConsecutiveIntegerWordProblem20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation30.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation40.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterEquation50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setCoordinate_System.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setCoordinate_System.def
new file mode 100644
index 0000000000..72a8c5a5dd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setCoordinate_System.def
@@ -0,0 +1,14 @@
+
+openDate = 12/11/2013 at 01:00am PST
+dueDate = 06/30/2014 at 02:10am PDT
+answerDate = 06/30/2014 at 02:10am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/CoordinateSystem.pg
+description = the basics of the Cartesian coordinate system
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphOrderedPairs40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/Quadrant10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setDistance_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setDistance_Word_Problems.def
new file mode 100644
index 0000000000..28b4367034
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setDistance_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 01:26am PST
+dueDate = 06/30/2014 at 02:37am PDT
+answerDate = 06/30/2014 at 02:37am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/DistanceWordProblems.pg
+description = word problems involving distance traveled
+problemList =
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/DistanceWordProblem30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setEvaluating_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setEvaluating_Expressions.def
new file mode 100644
index 0000000000..4dcf1a4cda
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setEvaluating_Expressions.def
@@ -0,0 +1,27 @@
+
+openDate = 12/11/2013 at 12:02am PST
+dueDate = 06/30/2014 at 01:01am PDT
+answerDate = 06/30/2014 at 01:01am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/EvaluatingExpressions.pg
+description = evaluating symbols in mathematical expressions
+problemList =
+BasicAlgebra/EvaluateExpressions/evaluate10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate12.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate15.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate18.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate20.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate50.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate60.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate80.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluate90.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar0.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar5.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluateInContext10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/evaluateInContext20.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/FahrenheitCelsius10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormulaAndReadGraph10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula10.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula40.pg, 1, -1, 0
+BasicAlgebra/EvaluateExpressions/EvaluateFormula30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_1.1-2.3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_1.1-2.3.def
new file mode 100644
index 0000000000..c2785b5976
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_1.1-2.3.def
@@ -0,0 +1,124 @@
+assignmentType = gateway
+openDate = 09/21/2020 at 12:00am PDT
+reducedScoringDate =12/31/2025 at 11:59pm PDT
+dueDate = 12/31/2025 at 11:59pm PDT
+answerDate = 12/31/2025 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_1.1-2.3_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_1.1-2.3_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = This Exam includes questions covered in sections 1.1 through 2.3 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EvaluateExpressions/evaluate130.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EvaluateExpressions/FahrenheitCelsius10.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/1-Variables_Expressions_and_Equations/1_3-Comparison_Symbols_and_Notation_for_Intervals/1_3_4_19.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/VerifySolutionsOneVariable/VerifySolutionApplication40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithInequality130.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction200.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv160.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps110.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps50.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses150.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality250.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction300.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/TwoSideVariableWordProblem30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Geometry/RectanglePerimeterArea20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/LinearInequalities/LinearInequalities8.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicMath/Proportion/MTH20Proportion40.pg
+value = 4
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_2.4-3.7.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_2.4-3.7.def
new file mode 100644
index 0000000000..3a3207f7bb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExam_ORCCA_ed2_2.4-3.7.def
@@ -0,0 +1,124 @@
+assignmentType = gateway
+openDate = 09/21/2020 at 12:00am PDT
+reducedScoringDate =12/31/2025 at 11:59pm PDT
+dueDate = 12/31/2025 at 11:59pm PDT
+answerDate = 12/31/2025 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_2.4-3.7_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Exam_ORCCA_ed2_2.4-3.7_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = This Exam includes questions covered in sections 2.4 through 3.7 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation80.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/SolveSpecialInequality10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation170.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation200.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_1-Cartesian_Coordinates/3_1_2.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot140.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine60.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_3-Exploring_TwoVariable_Data_and_Rate_of_Change/3_3_5_1.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_3-Exploring_TwoVariable_Data_and_Rate_of_Change/3_3_5_15.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/PointSlopeForm/FindLineEquationORCCA50.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/PointSlopeForm/PointSlopeToSlopeInterceptORCCA20.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_6-PointSlope_Form/3_6_5_44.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_7-Standard_Form/3_7_5_4.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept140.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts80.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/InterceptsApplication20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/InterceptsApplication50.pg
+value = 4
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Basics.def
new file mode 100644
index 0000000000..1451106031
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Basics.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 12:18am PST
+dueDate = 06/30/2014 at 01:14am PDT
+answerDate = 06/30/2014 at 01:14am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentBasics.pg
+description = the basics of exponents
+problemList =
+BasicAlgebra/Exponents/ExponentDefinition10.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition20.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Rules.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Rules.def
new file mode 100644
index 0000000000..10b72c3844
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setExponent_Rules.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:20am PST
+dueDate = 06/30/2014 at 01:16am PDT
+answerDate = 06/30/2014 at 01:16am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ExponentRules.pg
+description = the rules of working with exponents
+problemList =
+BasicAlgebra/Exponents/exponentsMultiplication10.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication09.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication0.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication15.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication20.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication23.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication24.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFinal_Exam_202003_30022.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFinal_Exam_202003_30022.def
new file mode 100644
index 0000000000..446436bac6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFinal_Exam_202003_30022.def
@@ -0,0 +1,144 @@
+assignmentType = gateway
+openDate = 09/21/2020 at 12:00am PDT
+reducedScoringDate =12/31/2025 at 11:59pm PDT
+dueDate = 12/31/2025 at 11:59pm PDT
+answerDate = 12/31/2025 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Final_Exam_202003_30022_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH060/Final_Exam_202003_30022_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = A Final Exam with questions from chapters 1 through 4 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EvaluateExpressions/evaluate130.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EvaluateExpressions/evaluateInContext20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/InequalitySolutionOrNot20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveProportion10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/AlgebraicProperties/DistributiveProperty70.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/ModelingWithEquation70.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps130.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses90.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation50.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality170.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearInequalities/SolveInequality270.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem50.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction290.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation120.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SolveLinearEquations/LiteralEquation210.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_1-Cartesian_Coordinates/3_1_1.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_3-Exploring_TwoVariable_Data_and_Rate_of_Change/3_3_5_1.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine60.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/I-Linear_Equations_and_Lines/3-Graphing_Lines/3_6-PointSlope_Form/3_6_5_40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts90.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/InterceptsApplication30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/PointSlopeForm/ParallelPerpendicularORCCA150.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquation10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemEquation20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations16.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearEquationApplications/InterestWordProblem10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication90.pg
+value = 4
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Graph.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Graph.def
new file mode 100644
index 0000000000..8e8987a989
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Graph.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 01:12am PST
+dueDate = 06/30/2014 at 02:22am PDT
+answerDate = 06/30/2014 at 02:22am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByGraph.pg
+description = using a grpah to identify the equation of a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/WriteEquationByGraph60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def
new file mode 100644
index 0000000000..a17e032d8a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Point_Slope.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 01:14am PST
+dueDate = 06/30/2014 at 02:24am PDT
+answerDate = 06/30/2014 at 02:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByPointSlope.pg
+description = use information about a point and slope to find an equation of a line
+problemList =
+BasicAlgebra/PointSlopeForm/PointSlopeBasics10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeBasics20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeBasics30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/PointSlopeToSlopeIntercept40.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation40.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation50.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/FindLineEquation60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Two_Points.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Two_Points.def
new file mode 100644
index 0000000000..d706a91dc2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFind_Equation_by_Two_Points.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 01:16am PST
+dueDate = 06/30/2014 at 02:26am PDT
+answerDate = 06/30/2014 at 02:26am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FindEquationByTwoPoints.pg
+description = use information about two points to find an equation for a line
+problemList =
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation30.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation10.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation20.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/TwoPointsFindPointSlopeEquation30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation35.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindSlopeInterceptEquation50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindEquationSpecial10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/TwoPointsFindEquationSpecial20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFunctions_Intro.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFunctions_Intro.def
new file mode 100644
index 0000000000..15afffba4f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setFunctions_Intro.def
@@ -0,0 +1,28 @@
+openDate = 12/11/2013 at 01:24am PST
+dueDate = 06/30/2014 at 02:36am PDT
+answerDate = 06/30/2014 at 02:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/FunctionsIntro.pg
+description = an introduction to functions
+problemList =
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Lines_by_Table.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Lines_by_Table.def
new file mode 100644
index 0000000000..cec8e9661b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Lines_by_Table.def
@@ -0,0 +1,29 @@
+
+openDate = 12/11/2013 at 01:02am PST
+dueDate = 06/30/2014 at 02:12am PDT
+answerDate = 06/30/2014 at 02:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphLineByTable.pg
+description = graphing lines by making a table of values; checking if a point is on a line
+problemList =
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/XYTable20.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine110.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/TableForLine80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot30.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot150.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/PointOnLineOrNot90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def
new file mode 100644
index 0000000000..45c26f1206
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraph_Two-Variable_Inequalities.def
@@ -0,0 +1,26 @@
+
+openDate = 12/11/2013 at 01:22am PST
+dueDate = 06/30/2014 at 02:34am PDT
+answerDate = 06/30/2014 at 02:34am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphTwoVariableInequalities.pg
+description = inequalities in two variables
+problemList =
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot70.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/InequalitySolutionOrNot90.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality10.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality20.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality30.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality40.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality50.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality60.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality70.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality80.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality90.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality100.pg, 1, -1, 0
+BasicAlgebra/EquationsAndInequalitiesInTwoVariables/GraphTwoVariableInequality110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraphing_Line_Summary.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraphing_Line_Summary.def
new file mode 100644
index 0000000000..540c4ec403
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setGraphing_Line_Summary.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 01:10am PST
+dueDate = 06/30/2014 at 02:20am PDT
+answerDate = 06/30/2014 at 02:20am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/GraphingLineSummary.pg
+description = a summary of techniques that can be used to graph a line from its equation
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInequality_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInequality_Applications.def
new file mode 100644
index 0000000000..eee2160463
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInequality_Applications.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 12:58am PST
+dueDate = 06/30/2014 at 01:52am PDT
+answerDate = 06/30/2014 at 01:52am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/InequalityApplications.pg
+description = applications of inequalities
+problemList =
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInteger_Operations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInteger_Operations.def
new file mode 100644
index 0000000000..2ec3e34279
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setInteger_Operations.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 12:16am PST
+dueDate = 06/30/2014 at 01:08am PDT
+answerDate = 06/30/2014 at 01:08am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/IntegerOperations.pg
+description = multiplying, dividing, adding, and subtracting with both positive and negative integers
+problemList =
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/MultiplyWithNegativeIntegers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/DivideWithNegativeIntegers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AdditionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/SubtractionWithNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers10.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers20.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers30.pg, 1, -1, 0
+BasicAlgebra/SignedNumbersArithemtic/AddSubtractNegativeNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/SignedNumberInterpretations10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setLinear_Equation_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setLinear_Equation_Applications.def
new file mode 100644
index 0000000000..b378ac9e07
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setLinear_Equation_Applications.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 01:18am PST
+dueDate = 06/30/2014 at 02:30am PDT
+answerDate = 06/30/2014 at 02:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/LinearEquationApplications.pg
+description = applications of finding equations of lines
+problemList =
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/FindLineEquationApplication80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def
new file mode 100644
index 0000000000..e928bef3ed
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixed_Numbers_Equivalent_Fractions.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 12:04am PST
+dueDate = 06/30/2014 at 01:02am PDT
+answerDate = 06/30/2014 at 01:02am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixedNumbersEquivalentFractions.pg
+description = translating between mixed numbers and improper fractions; reducing fractions
+problemList =
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ImproperFractionToMixedNumber20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/MixedNumberToImproperFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction05.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction10.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction20.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction30.pg, 1, -1, 0
+BasicAlgebra/FractionMixedNumbersBasics/ReduceFraction40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixture_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixture_Word_Problems.def
new file mode 100644
index 0000000000..dbda55cc4f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMixture_Word_Problems.def
@@ -0,0 +1,19 @@
+
+openDate = 12/11/2013 at 01:30am PST
+dueDate = 06/30/2014 at 02:39am PDT
+answerDate = 06/30/2014 at 02:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MixtureWordProblems.pg
+description = word problems involving mixtures of solutions or populations
+problemList =
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblemWithTable50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedSolutionWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedPopulationWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MixedPopulationWordProblem20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMultiply_Divide_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMultiply_Divide_Fractions.def
new file mode 100644
index 0000000000..984edc6dbb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setMultiply_Divide_Fractions.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:08am PST
+dueDate = 06/30/2014 at 01:04am PDT
+answerDate = 06/30/2014 at 01:04am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/MultiplyDivideFractions.pg
+description = multiplying and dividing with fractions
+problemList =
+BasicAlgebra/FractionArithmetic/MultiplyFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions60.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions70.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions50.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/MultiplyFractions80.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions10.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions20.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions30.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions40.pg, 1, -1, 0
+BasicAlgebra/FractionArithmetic/DivideFractions50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setNumber_Sets.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setNumber_Sets.def
new file mode 100644
index 0000000000..076f2c2bec
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setNumber_Sets.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 12:10am PST
+dueDate = 06/30/2014 at 01:05am PDT
+answerDate = 06/30/2014 at 01:05am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/NumberSets.pg
+description = identifying types of numbers; using number lines
+problemList =
+BasicAlgebra/NumberBasics/TypesOfNumbers10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/TypesOfNumbers60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/NumberLine60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setOrder_of_Operations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setOrder_of_Operations.def
new file mode 100644
index 0000000000..e4ac385610
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setOrder_of_Operations.def
@@ -0,0 +1,39 @@
+
+openDate = 12/11/2013 at 12:22am PST
+dueDate = 06/30/2014 at 01:18am PDT
+answerDate = 06/30/2014 at 01:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/OrderOfOperations.pg
+description = using the order of operations
+problemList =
+BasicAlgebra/OrderOfOperations/orderOfOperations10.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations20.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations30.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations40.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations50.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations60.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations70.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations80.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations90.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations100.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations110.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations120.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations140.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations130.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations150.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations160.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations170.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations180.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations190.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations230.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations200.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations210.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations220.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations240.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations250.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/OOOFractions10.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations260.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations270.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations280.pg, 1, -1, 0
+BasicAlgebra/OrderOfOperations/orderOfOperations290.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setParallel_Perpendicular_Lines.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setParallel_Perpendicular_Lines.def
new file mode 100644
index 0000000000..6716f9f757
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setParallel_Perpendicular_Lines.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 01:20am PST
+dueDate = 06/30/2014 at 02:32am PDT
+answerDate = 06/30/2014 at 02:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ParallelPerpendicularLines.pg
+description = questions regarding parallel or perpendicular pairs of lines and their slopes
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular90.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular100.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular110.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular120.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular130.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/ParallelPerpendicular140.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular150.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular160.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular170.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular180.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular190.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular200.pg, 1, -1, 0
+BasicAlgebra/PointSlopeForm/ParallelPerpendicular210.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPercent_of_Increase_Decrease.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPercent_of_Increase_Decrease.def
new file mode 100644
index 0000000000..1ea63d363f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPercent_of_Increase_Decrease.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 12:44am PST
+dueDate = 06/30/2014 at 01:45am PDT
+answerDate = 06/30/2014 at 01:45am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/PercentOfIncreaseDecrease.pg
+description = calculating the percent increase or decrease of a change
+problemList =
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/PercentIncreaseDecrease90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPerimeter_and_Area.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPerimeter_and_Area.def
new file mode 100644
index 0000000000..e2233ccacf
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setPerimeter_and_Area.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 12:46am PST
+dueDate = 06/30/2014 at 01:46am PDT
+answerDate = 06/30/2014 at 01:46am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/PerimeterArea.pg
+description = questions about the areas and perimeters of basic two-dimensional shapes
+problemList =
+BasicAlgebra/Geometry/RectanglePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectanglePerimeterArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/TrianglePerimeterArea40.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea10.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea20.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea40.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea50.pg, 1, -1, 0
+BasicAlgebra/Geometry/CircleCircumferenceArea60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setProportion_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setProportion_Word_Problems.def
new file mode 100644
index 0000000000..7082c491b0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setProportion_Word_Problems.def
@@ -0,0 +1,21 @@
+
+openDate = 12/11/2013 at 12:52am PST
+dueDate = 06/30/2014 at 01:49am PDT
+answerDate = 06/30/2014 at 01:49am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/ProportionWordProblems.pg
+description = word problems that involve a proportional equation
+problemList =
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem60.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem70.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem80.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem90.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem100.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem110.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/ProportionWordProblem120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def
new file mode 100644
index 0000000000..6e10a82e6e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setRate_and_Start_Value_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 12:40am PST
+dueDate = 06/30/2014 at 01:43am PDT
+answerDate = 06/30/2014 at 01:43am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/RateAndStartValueWordProblem.pg
+description = word problems involving an initial value that cahnges with a fixed rate
+problemList =
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/MXPlusBWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSimplify_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSimplify_Expressions.def
new file mode 100644
index 0000000000..8cee679e94
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSimplify_Expressions.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 12:14am PST
+dueDate = 06/30/2014 at 01:07am PDT
+answerDate = 06/30/2014 at 01:07am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SimplifyExpressions.pg
+description = simplifying expressions
+problemList =
+BasicAlgebra/PolynomialBasics/SimplifyExpression10.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression30.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression40.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty10.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty20.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty30.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty40.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty50.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty60.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty70.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty80.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/DistributiveProperty90.pg, 1, -1, 0
+BasicAlgebra/AlgebraicProperties/SimplifyInContext10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope.def
new file mode 100644
index 0000000000..5af94ddb27
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 01:04am PST
+dueDate = 06/30/2014 at 02:14am PDT
+answerDate = 06/30/2014 at 02:14am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Slope.pg
+description = using a graph to compute slope; using the slope formula to compute slope
+problemList =
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindSlopeByGraph60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/SlopeFormula90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope_Intercept_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope_Intercept_Equations.def
new file mode 100644
index 0000000000..03f0a00beb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSlope_Intercept_Equations.def
@@ -0,0 +1,27 @@
+
+openDate = 12/11/2013 at 01:06am PST
+dueDate = 06/30/2014 at 02:16am PDT
+answerDate = 06/30/2014 at 02:16am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SlopeInterceptEquation.pg
+description = find the slope and y-intercept of a line; use the point-slope form to garph a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept10.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept20.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept30.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept40.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept50.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept60.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept70.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept80.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept90.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Equations_with_Fractions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Equations_with_Fractions.def
new file mode 100644
index 0000000000..dc490db970
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Equations_with_Fractions.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 12:32am PST
+dueDate = 06/30/2014 at 01:36am PDT
+answerDate = 06/30/2014 at 01:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveEquationsWithFractions.pg
+description = solving linear equations that involve fractions
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction05.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction290.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction300.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction310.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction210.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction220.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction240.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction260.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationFraction270.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Inequalities.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Inequalities.def
new file mode 100644
index 0000000000..296618b649
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Inequalities.def
@@ -0,0 +1,45 @@
+
+openDate = 12/11/2013 at 12:54am PST
+dueDate = 06/30/2014 at 01:50am PDT
+answerDate = 06/30/2014 at 01:50am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveInequalities.pg
+description = set-builder and interval notation; solving linear inequalities
+problemList =
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation110.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality150.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality180.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality200.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality220.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality260.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality280.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality320.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction70.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Multi_Step_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Multi_Step_Equations.def
new file mode 100644
index 0000000000..c8d08d623e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Multi_Step_Equations.def
@@ -0,0 +1,35 @@
+
+openDate = 12/11/2013 at 12:28am PST
+dueDate = 06/30/2014 at 01:32am PDT
+answerDate = 06/30/2014 at 01:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveMultiStepEquations.pg
+description = solving linear equations that may require multiple steps
+problemList =
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveLinearEquationParentheses200.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_One_Step_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_One_Step_Equations.def
new file mode 100644
index 0000000000..054ba50db2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_One_Step_Equations.def
@@ -0,0 +1,52 @@
+
+openDate = 12/11/2013 at 12:24am PST
+dueDate = 06/30/2014 at 01:26am PDT
+answerDate = 06/30/2014 at 01:26am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveOneStepEquation.pg
+description = solving equations that only require one step to solve
+problemList =
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ10.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ20.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ30.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ40.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ50.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ60.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ70.pg, 1, -1, 0
+BasicAlgebra/VerifySolutionsOneVariable/solutionQ80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepAddSubtract160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepCompare10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepCompare20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv190.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Proportions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Proportions.def
new file mode 100644
index 0000000000..e10430de0d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Proportions.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:50am PST
+dueDate = 06/30/2014 at 01:48am PDT
+answerDate = 06/30/2014 at 01:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveProportions.pg
+description = solving proporiton equations
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveProportion10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveProportion40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Two-Step_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Two-Step_Equations.def
new file mode 100644
index 0000000000..d261d00360
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_Two-Step_Equations.def
@@ -0,0 +1,19 @@
+
+openDate = 12/11/2013 at 12:26am PST
+dueDate = 06/30/2014 at 01:30am PDT
+answerDate = 06/30/2014 at 01:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveTwoStepEquations.pg
+description = solving equations that require two steps to solve
+problemList =
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnOneStepMultiDiv170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/solveLinearEqnMultiSteps130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_for_Variable.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_for_Variable.def
new file mode 100644
index 0000000000..eccdea6c6b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSolve_for_Variable.def
@@ -0,0 +1,30 @@
+
+openDate = 12/11/2013 at 12:34am PST
+dueDate = 06/30/2014 at 01:38am PDT
+answerDate = 06/30/2014 at 01:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SolveForVariable.pg
+description = symbolically solving a linear equation to isolate a variable
+problemList =
+BasicAlgebra/SolveLinearEquations/LiteralEquation10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation70.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation90.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation100.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation110.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation120.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation130.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation140.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation150.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation160.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation170.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation180.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation190.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation200.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/LiteralEquation210.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Case_Inequalities.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Case_Inequalities.def
new file mode 100644
index 0000000000..75f08f8146
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Case_Inequalities.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:56am PST
+dueDate = 06/30/2014 at 01:51am PDT
+answerDate = 06/30/2014 at 01:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialCaseInequalities.pg
+description = linear inequalities that may have something special about them
+problemList =
+BasicAlgebra/LinearInequalities/SolveSpecialInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Solutions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Solutions.def
new file mode 100644
index 0000000000..0ed77f524d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSpecial_Solutions.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 12:30am PST
+dueDate = 06/30/2014 at 01:34am PDT
+answerDate = 06/30/2014 at 01:34am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SpecialSolutions.pg
+description = linear equations that may have something special about them
+problemList =
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation50.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation10.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation20.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation30.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation40.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation80.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation60.pg, 1, -1, 0
+BasicAlgebra/SolveLinearEquations/SolveSpecialLinearEquation70.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setStandard_Form_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setStandard_Form_Equations.def
new file mode 100644
index 0000000000..de8c027e91
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setStandard_Form_Equations.def
@@ -0,0 +1,47 @@
+
+openDate = 12/11/2013 at 01:08am PST
+dueDate = 06/30/2014 at 02:18am PDT
+answerDate = 06/30/2014 at 02:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/StandardFormEquations.pg
+description = find the slope and y-intercept of a line; find a line's x- and y-intercepts; use intercepts to graph a line
+problemList =
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept110.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept120.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept130.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept140.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept150.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept160.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept170.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept180.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept190.pg, 1, -1, 0
+BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept200.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts150.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts130.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/FindXYIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph10.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph20.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph40.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSum_and_Part_Word_Problems.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSum_and_Part_Word_Problems.def
new file mode 100644
index 0000000000..b8d9aae6bc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setSum_and_Part_Word_Problems.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 12:38am PST
+dueDate = 06/30/2014 at 01:42am PDT
+answerDate = 06/30/2014 at 01:42am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/SumAndPartWordProblems.pg
+description = solving word problems involving two numbers that combine in some way
+problemList =
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem20.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem30.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem40.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem50.pg, 1, -1, 0
+BasicAlgebra/LinearEquationApplications/TwoPartsWordProblem60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTranslating_Words_into_Algebra.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTranslating_Words_into_Algebra.def
new file mode 100644
index 0000000000..1dc609ee0c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTranslating_Words_into_Algebra.def
@@ -0,0 +1,31 @@
+openDate = 12/11/2013 at 12:00am PST
+dueDate = 06/30/2014 at 01:00am PDT
+answerDate = 06/30/2014 at 01:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/TranslatingWordsIntoAlgebra.pg
+description = translating English into algebra
+problemList =
+BasicAlgebra/EnglishToMath/englishToMath10.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath20.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath25.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath30.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath40.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath45.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath50.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath55.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath60.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath70.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath140.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath150.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath160.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath170.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath80.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath82.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath84.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath90.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath100.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath110.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath120.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath130.pg, 1, -1, 0
+BasicAlgebra/EnglishToMath/englishToMath180.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTrigonometry.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTrigonometry.def
new file mode 100644
index 0000000000..ded9435294
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setTrigonometry.def
@@ -0,0 +1,13 @@
+openDate = 12/11/2013 at 12:48am PST
+dueDate = 06/30/2014 at 02:38am PDT
+answerDate = 06/30/2014 at 02:38am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Trigonometry.pg
+description = questions about the definition of trigonometry ratios (sine, cosine and tangent)
+problemList =
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg, 1, -1, 0
+BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setVolume.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setVolume.def
new file mode 100644
index 0000000000..a35af66f6f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH060/setVolume.def
@@ -0,0 +1,16 @@
+
+openDate = 12/11/2013 at 12:48am PST
+dueDate = 06/30/2014 at 01:47am PDT
+answerDate = 06/30/2014 at 01:47am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH060/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH060/Volume.pg
+description = questions about the volumes of prisms and cylinders
+problemList =
+BasicAlgebra/Geometry/RectangularPrismVolume10.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectangularPrismVolume20.pg, 1, -1, 0
+BasicAlgebra/Geometry/RectangularPrismVolume30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume10.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume20.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume30.pg, 1, -1, 0
+BasicAlgebra/Geometry/CylinderVolume40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setAdd_Subtract_Polynomials.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setAdd_Subtract_Polynomials.def
new file mode 100644
index 0000000000..445d55a7e0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setAdd_Subtract_Polynomials.def
@@ -0,0 +1,26 @@
+
+openDate = 12/11/2013 at 02:44am PST
+dueDate = 06/30/2014 at 03:21am PDT
+answerDate = 06/30/2014 at 03:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/AddSubtractPolynomials.pg
+description = adding and subtracting polynomial expressions
+problemList =
+BasicAlgebra/PolynomialBasics/PolyAddSubtract0.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract5.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract10.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract15.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression30.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/SimplifyExpression40.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract20.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract25.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract35.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract80.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract85.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract90.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract95.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/PolyAddSubtract100.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar25.pg, 1, -1, 0
+BasicAlgebra/PolynomialBasics/polyMultVar30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setDivide_Polynomials.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setDivide_Polynomials.def
new file mode 100644
index 0000000000..11c2f3a665
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setDivide_Polynomials.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 02:48am PST
+dueDate = 06/30/2014 at 03:30am PDT
+answerDate = 06/30/2014 at 03:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/DividePolynomials.pg
+description = division of polynomials by a monomial
+problemList =
+BasicAlgebra/Exponents/exponentDivision105.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision100.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision115.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision125.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision120.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision130.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision135.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision140.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setExponent_Review.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setExponent_Review.def
new file mode 100644
index 0000000000..93c938dfcd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setExponent_Review.def
@@ -0,0 +1,31 @@
+openDate = 12/11/2013 at 02:42am PST
+dueDate = 06/30/2014 at 03:15am PDT
+answerDate = 06/30/2014 at 03:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ExponentReview.pg
+description = rules of working with exponents
+problemList =
+BasicAlgebra/Exponents/ExponentDefinition30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication20.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication50.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision75.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision70.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision60.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision105.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision100.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision45.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision50.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision80.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision10.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision5.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision0.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision15.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision30.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision25.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentDivision40.pg, 1, -1, 0
+BasicAlgebra/Exponents/exponentsMultiplication35.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Special_Polynomials.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Special_Polynomials.def
new file mode 100644
index 0000000000..18ace46835
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Special_Polynomials.def
@@ -0,0 +1,33 @@
+
+openDate = 12/11/2013 at 03:02am PST
+dueDate = 06/30/2014 at 03:45am PDT
+answerDate = 06/30/2014 at 03:45am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorSpecialPolynomials.pg
+description = factoring special polynomials where a special form can be applied
+problemList =
+BasicAlgebra/Factoring/factoring445.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring450.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring455.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring460.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring465.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring470.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring475.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring480.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring485.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring490.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring495.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring500.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring505.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring520.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring525.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring530.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring535.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring540.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring555.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring560.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring590.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring595.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring600.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring615.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def
new file mode 100644
index 0000000000..a00b17d07f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomial_when_a_is_1.def
@@ -0,0 +1,29 @@
+openDate = 12/11/2013 at 02:58am PST
+dueDate = 06/30/2014 at 03:39am PDT
+answerDate = 06/30/2014 at 03:39am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialWhenAIs1.pg
+description = factoring trinomials with a leading coefficient of 1
+problemList =
+BasicAlgebra/Factoring/factoring170.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring175.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring180.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring170.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring175.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring180.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring355.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring360.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring365.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring370.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring360.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring365.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring370.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring375.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring385.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring390.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring400.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring405.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring410.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring415.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring420.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def
new file mode 100644
index 0000000000..6a96d03b04
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_Trinomials_when_a_is_Not_1.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:00am PST
+dueDate = 06/30/2014 at 03:42am PDT
+answerDate = 06/30/2014 at 03:42am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorTrinomialsWhenAIsNot1.pg
+description = factoring trinomials whose leading coefficient is not 1
+problemList =
+BasicAlgebra/Factoring/factoring185.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring190.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring195.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring200.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring205.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring210.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring235.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring240.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring245.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring280.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring285.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring295.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring325.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_by_Grouping.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_by_Grouping.def
new file mode 100644
index 0000000000..a5d05392d2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_by_Grouping.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 02:56am PST
+dueDate = 06/30/2014 at 03:36am PDT
+answerDate = 06/30/2014 at 03:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorByGrouping.pg
+description = factoring polynomials using the grouping technique
+problemList =
+BasicAlgebra/Factoring/factoring105.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring110.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring115.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring120.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring125.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring130.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring135.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring140.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring150.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring120.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring125.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring135.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring140.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_out_Common_Factors.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_out_Common_Factors.def
new file mode 100644
index 0000000000..adcd221338
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFactor_out_Common_Factors.def
@@ -0,0 +1,28 @@
+
+openDate = 12/11/2013 at 02:54am PST
+dueDate = 06/30/2014 at 03:33am PDT
+answerDate = 06/30/2014 at 03:33am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FactorOutCommonFactors.pg
+description = factoring out the greatest common factor
+problemList =
+BasicAlgebra/Factoring/factoring5.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring10.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring15.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring20.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring25.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring30.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring36.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring37.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring38.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring41.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring56.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring71.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring76.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring77.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring80.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring85.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring90.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring95.pg, 1, -1, 0
+BasicAlgebra/Factoring/factoring100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFalling_Object_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFalling_Object_Applications.def
new file mode 100644
index 0000000000..5136393b3d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFalling_Object_Applications.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:36am PST
+dueDate = 06/30/2014 at 04:36am PDT
+answerDate = 06/30/2014 at 04:36am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/FallingObjectApplications.pg
+description = applications of quadratic expressions to falling objects
+problemList =
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFunctions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFunctions.def
new file mode 100644
index 0000000000..4c3b2a8714
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setFunctions.def
@@ -0,0 +1,29 @@
+
+openDate = 12/11/2013 at 03:38am PST
+dueDate = 06/30/2014 at 04:37am PDT
+answerDate = 06/30/2014 at 04:37am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH60HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/Functions.pg
+description = introduction to functions
+problemList =
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setIntroduction_to_Square_Root.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setIntroduction_to_Square_Root.def
new file mode 100644
index 0000000000..7f12438bf9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setIntroduction_to_Square_Root.def
@@ -0,0 +1,16 @@
+
+openDate = 12/11/2013 at 03:04am PST
+dueDate = 06/30/2014 at 03:48am PDT
+answerDate = 06/30/2014 at 03:48am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/IntroductionToSquareRoot.pg
+description = evaluating square roots
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/EstimateRadical10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMaximum_Minimum_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMaximum_Minimum_Applications.def
new file mode 100644
index 0000000000..cb7a7aa3c0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMaximum_Minimum_Applications.def
@@ -0,0 +1,14 @@
+
+openDate = 12/11/2013 at 03:34am PST
+dueDate = 06/30/2014 at 04:33am PDT
+answerDate = 06/30/2014 at 04:33am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MaximumMinimumApplications.pg
+description = applications of quadratic expressions to finding a maximal or minimal value
+problemList =
+BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMoving_Parabola_Up_Down.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMoving_Parabola_Up_Down.def
new file mode 100644
index 0000000000..bf99a3b23e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMoving_Parabola_Up_Down.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 03:20am PST
+dueDate = 06/30/2014 at 04:12am PDT
+answerDate = 06/30/2014 at 04:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MovingParabolaUpDown.pg
+description = shifting a parabola up and down
+problemList =
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMultiplying_Polynomials.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMultiplying_Polynomials.def
new file mode 100644
index 0000000000..2bbc293875
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setMultiplying_Polynomials.def
@@ -0,0 +1,41 @@
+
+openDate = 12/11/2013 at 02:46am PST
+dueDate = 06/30/2014 at 03:24am PDT
+answerDate = 06/30/2014 at 03:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/MultiplyingPolynomials.pg
+description = multiplication of polynomial expressions
+problemList =
+BasicAlgebra/PolynomialMultiplication/polyMultVar60.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication0.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication5.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication10.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication15.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication20.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication25.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication30.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication35.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication40.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication45.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication50.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication55.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication60.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication65.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication70.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication75.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication80.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication160.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication165.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication170.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication175.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication185.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication190.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication195.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication200.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication205.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication210.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/PolynomialMultiplication225.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar100.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar135.pg, 1, -1, 0
+BasicAlgebra/PolynomialMultiplication/polyMultVar160.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setNegative_Exponents.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setNegative_Exponents.def
new file mode 100644
index 0000000000..637b215a32
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setNegative_Exponents.def
@@ -0,0 +1,32 @@
+
+openDate = 12/11/2013 at 02:50am PST
+dueDate = 06/30/2014 at 03:31am PDT
+answerDate = 06/30/2014 at 03:31am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/NegativeExponents.pg
+description = practice working with negative exponents
+problemList =
+BasicAlgebra/Exponents/negExp75.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp90.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp60.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp85.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp65.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp70.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp10.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp45.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp50.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp20.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp25.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp5.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp0.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp55.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp41.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp100.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp105.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp110.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp115.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp120.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp135.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp150.pg, 1, -1, 0
+BasicAlgebra/Exponents/negExp155.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Axis_and_Vertex.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Axis_and_Vertex.def
new file mode 100644
index 0000000000..53c889ea00
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Axis_and_Vertex.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 03:28am PST
+dueDate = 06/30/2014 at 04:24am PDT
+answerDate = 06/30/2014 at 04:24am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaAxisAndVertex.pg
+description = identifying the vertex and axis of symmetry of a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Intercepts.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Intercepts.def
new file mode 100644
index 0000000000..0a96aa5d43
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Intercepts.def
@@ -0,0 +1,33 @@
+
+openDate = 12/11/2013 at 03:30am PST
+dueDate = 06/30/2014 at 04:27am PDT
+answerDate = 06/30/2014 at 04:27am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaIntercepts.pg
+description = identifying the intercepts of a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts115.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts150.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts160.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts170.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts180.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts190.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts200.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts210.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts220.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts230.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Movement_Summary.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Movement_Summary.def
new file mode 100644
index 0000000000..ce70d11632
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Movement_Summary.def
@@ -0,0 +1,17 @@
+
+openDate = 12/11/2013 at 03:26am PST
+dueDate = 06/30/2014 at 04:21am PDT
+answerDate = 06/30/2014 at 04:21am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaMovementSummary.pg
+description = summary of graph transformations to a parabola
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Shifting_Left_Right.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Shifting_Left_Right.def
new file mode 100644
index 0000000000..682473e4e0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Shifting_Left_Right.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:24am PST
+dueDate = 06/30/2014 at 04:18am PDT
+answerDate = 06/30/2014 at 04:18am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaShiftingLeftRight.pg
+description = shifting a parabola left or right
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Thinner_Wider.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Thinner_Wider.def
new file mode 100644
index 0000000000..d3d29c9400
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setParabola_Thinner_Wider.def
@@ -0,0 +1,13 @@
+
+openDate = 12/11/2013 at 03:22am PST
+dueDate = 06/30/2014 at 04:15am PDT
+answerDate = 06/30/2014 at 04:15am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ParabolaThinnerWider.pg
+description = stretching a parabola vertically to make it appear thinner
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setQuadratic_Equation_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setQuadratic_Equation_Applications.def
new file mode 100644
index 0000000000..0f58ce13dc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setQuadratic_Equation_Applications.def
@@ -0,0 +1,15 @@
+
+openDate = 12/11/2013 at 03:18am PST
+dueDate = 06/30/2014 at 04:09am PDT
+answerDate = 06/30/2014 at 04:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/QuadraticEquationApplications.pg
+description = applications of quadratic equations
+problemList =
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setRationalize_Denominator.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setRationalize_Denominator.def
new file mode 100644
index 0000000000..c005bd45ce
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setRationalize_Denominator.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:10am PST
+dueDate = 06/30/2014 at 03:57am PDT
+answerDate = 06/30/2014 at 03:57am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/RationalizeDenominator.pg
+description = rationalizing the denominator of a radical expression
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator110.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator130.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setReview_Graphing_Lines.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setReview_Graphing_Lines.def
new file mode 100644
index 0000000000..aee0c2126d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setReview_Graphing_Lines.def
@@ -0,0 +1,22 @@
+openDate = 12/11/2013 at 02:32am PST
+dueDate = 06/30/2014 at 03:00am PDT
+answerDate = 06/30/2014 at 03:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ReviewGraphingLines.pg
+description = review of graphing lines
+problemList =
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints60.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByPointSlope80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph30.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph50.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph70.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph80.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph110.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/StandardToSlopeInterceptAndGraph120.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints90.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints95.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints100.pg, 1, -1, 0
+BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setScientific_Notation.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setScientific_Notation.def
new file mode 100644
index 0000000000..bfbf62dabc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setScientific_Notation.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 02:52am PST
+dueDate = 06/30/2014 at 03:32am PDT
+answerDate = 06/30/2014 at 03:32am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/ScientificNotation.pg
+description = practice using scientific notation
+problemList =
+BasicAlgebra/NumberBasics/ScientificNotation10.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation20.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation30.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation40.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation50.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation60.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation70.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation80.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation90.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation100.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation110.pg, 1, -1, 0
+BasicAlgebra/NumberBasics/ScientificNotation120.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSimplify_Square_Roots.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSimplify_Square_Roots.def
new file mode 100644
index 0000000000..74d5cfc36c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSimplify_Square_Roots.def
@@ -0,0 +1,23 @@
+
+openDate = 12/11/2013 at 03:06am PST
+dueDate = 06/30/2014 at 03:51am PDT
+answerDate = 06/30/2014 at 03:51am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SimplifySquareRoots.pg
+description = simplifying expressions with square roots
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSketching_Parabolas.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSketching_Parabolas.def
new file mode 100644
index 0000000000..27bd59b81c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSketching_Parabolas.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 03:32am PST
+dueDate = 06/30/2014 at 04:30am PDT
+answerDate = 06/30/2014 at 04:30am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SketchingParabolas.pg
+description = sketching the graph of a quadratic expression
+problemList =
+BasicAlgebra/GraphingQuadratics/SketchParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def
new file mode 100644
index 0000000000..c1019c39e7
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Factoring.def
@@ -0,0 +1,34 @@
+
+openDate = 12/11/2013 at 03:14am PST
+dueDate = 06/30/2014 at 04:03am PDT
+answerDate = 06/30/2014 at 04:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByFactoring.pg
+description = solve a quadratic equation by factoring
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad95.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad230.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad220.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad235.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad240.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad250.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad255.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad265.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad210.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad215.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad270.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad280.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad285.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad290.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad295.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad105.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad200.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad300.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad305.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad325.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad330.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad335.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad340.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def
new file mode 100644
index 0000000000..bfe9283033
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Quadratic_Formula.def
@@ -0,0 +1,18 @@
+
+openDate = 12/11/2013 at 03:16am PST
+dueDate = 06/30/2014 at 04:06am PDT
+answerDate = 06/30/2014 at 04:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationByQuadraticFormula.pg
+description = solve a quadratic equation using the quadratic formula
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad145.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad150.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad155.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad185.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad375.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad380.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad385.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def
new file mode 100644
index 0000000000..4e04c67950
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_Quadratic_Equation_by_Square_Root_Property.def
@@ -0,0 +1,22 @@
+
+openDate = 12/11/2013 at 03:12am PST
+dueDate = 06/30/2014 at 04:00am PDT
+answerDate = 06/30/2014 at 04:00am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveQuadraticEquationBySquareRootProperty.pg
+description = solve a quadratic equation by using the square root
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad35.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad40.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad45.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad50.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad55.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad65.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad70.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad75.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad80.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad85.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Elimination.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Elimination.def
new file mode 100644
index 0000000000..d204b7d870
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Elimination.def
@@ -0,0 +1,20 @@
+openDate = 12/11/2013 at 02:38am PST
+dueDate = 06/30/2014 at 03:09am PDT
+answerDate = 06/30/2014 at 03:09am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByElimination.pg
+description = solve a systme of linear equations using the elimination (aka addition) method
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemEquation20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations55.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Graphing.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Graphing.def
new file mode 100644
index 0000000000..af48e49847
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Graphing.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 02:34am PST
+dueDate = 06/30/2014 at 03:03am PDT
+answerDate = 06/30/2014 at 03:03am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemByGraphing.pg
+description = solve a system of linear equations by graphing the lines
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing40.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing50.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing60.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing70.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolveSystemByGraphing80.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem30.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/NumberOfSolutionsOfSystem40.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem10.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem20.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SolutionOfSystem30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Substitution.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Substitution.def
new file mode 100644
index 0000000000..94f347423e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSolve_System_by_Substitution.def
@@ -0,0 +1,14 @@
+openDate = 12/11/2013 at 02:36am PST
+dueDate = 06/30/2014 at 03:06am PDT
+answerDate = 06/30/2014 at 03:06am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SolveSystemBySubstitution.pg
+description = solve a system of linear equations by isolating one variable and using substitution
+problemList =
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations11.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations12.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations13.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations14.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations16.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations25.pg, 1, -1, 0
+BasicAlgebra/SystemsOfLinearEquations/SystemOfEquations30.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSquare_Root_Operations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSquare_Root_Operations.def
new file mode 100644
index 0000000000..4b4ff93965
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSquare_Root_Operations.def
@@ -0,0 +1,24 @@
+
+openDate = 12/11/2013 at 03:08am PST
+dueDate = 06/30/2014 at 03:54am PDT
+answerDate = 06/30/2014 at 03:54am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SquareRootOperations.pg
+description = simplifying radical expressions
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals140.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical1.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical2.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSystem_Equation_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSystem_Equation_Applications.def
new file mode 100644
index 0000000000..8e99e61a60
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setSystem_Equation_Applications.def
@@ -0,0 +1,20 @@
+
+openDate = 12/11/2013 at 02:40am PST
+dueDate = 06/30/2014 at 03:12am PDT
+answerDate = 06/30/2014 at 03:12am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeader_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/SystemEquationApplications.pg
+description = applications of solving systems of linear equations
+problemList =
+BasicAlgebra/SystemOfLinearEquationsApplications/systemsWord5.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication70.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication80.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication90.pg, 1, -1, 0
+BasicAlgebra/SystemOfLinearEquationsApplications/SystemEquationApplication100.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setTrigonometryRatios.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setTrigonometryRatios.def
new file mode 100644
index 0000000000..27f4a3ce63
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH065/setTrigonometryRatios.def
@@ -0,0 +1,92 @@
+assignmentType = default
+openDate = 12/11/2013 at 03:10am PST
+dueDate = 06/30/2014 at 03:58am PDT
+answerDate = 06/30/2014 at 03:58am PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH065/MTH65HardCopyHeaders_Yao.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH065/TrigonometryRatios.pg
+description =
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition10.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition20.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 2
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition30.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 3
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition40.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 4
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition50.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 5
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition60.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 6
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition70.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 7
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition80.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 8
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+source_file = BasicAlgebra/Trigonometry/RightTriangleTrigDefinition90.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+problem_id = 9
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/Exam_ORCCA_ed2_10.1-11.2.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/Exam_ORCCA_ed2_10.1-11.2.pg
new file mode 100644
index 0000000000..ff3e897005
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/Exam_ORCCA_ed2_10.1-11.2.pg
@@ -0,0 +1,161 @@
+##DESCRIPTION
+## Algebra problem: true or false for inequality
+##ENDDESCRIPTION
+
+##KEYWORDS('algebra', 'inequality', 'fraction')
+
+## DBsubject('Algebra')
+## DBchapter('Fundamentals')
+## DBsection('Real Numbers')
+## Date('6/3/2002')
+## Author('')
+## Institution('')
+## TitleText1('Precalculus')
+## EditionText1('3')
+## AuthorText1('Stewart, Redlin, Watson')
+## Section1('1.1')
+## Problem1('22')
+
+########################################################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl", # Standard macros for PG language
+ "MathObjects.pl",
+ #"source.pl", # allows code to be displayed on certain sites.
+ #"PGcourse.pl", # Customization file for the course
+ "PGML.pl",
+ "PCCmacros.pl",
+"contextLimitedFactor.pl",
+);
+
+# Print problem number and point value (weight) for the problem
+TEXT(beginproblem());
+
+# Show which answers are correct and which ones are incorrect
+$showPartialCorrectAnswers = 1;
+
+##############################################################
+#
+# Setup
+#
+#
+Context("Numeric");
+Context("LimitedFactor");
+Context()->noreduce('(-x)-y','(-x)+y');
+$var = RandomVariableName(type=>'variable');
+Context()->variables->are($var=>'Real');
+
+Context()->strings->add("cannot be factored"=>{},
+ "cannot be factored."=>{alias=>"cannot be factored"});
+Context()->strings->add('prime'=>{}, 'it is prime'=>{alias=>'prime'});
+Context()->noreduce('(-x)-y', '(-x)+y');
+
+
+$pi = Real("pi");
+# the common term
+$a = 1;
+$b = 100;
+$c = 1;
+$d = 1;
+# this next condition ensures the numbers don't get too big
+while(abs($d*$b+$d*$a*$c)+abs($d*$b*$c)>50)
+{
+ $a = 1;
+ $b = random(1,10,1)*random(-1,1,2);
+ $c = random(1,10,1)*abs($b)/$b*-1;
+ $d = random(2,10,1);
+}
+
+$n = random(2,8,1);
+$leading = $a;
+$middle = $b+$a*$c;
+$end = $b*$c;
+$question = Formula("$d*$leading*$var^(2+$n)+$d*$middle*$var^($n+1)+$d*$end$var^$n")->reduce;
+$RonStep1=
+Formula("$d($leading*$var^(2+$n)+$middle*$var^($n+1)+$end$var^$n)")->reduce;
+$RonStep2=
+Formula("$d($leading*$var^($n+1)+$b$var^$n)($var+$c)")->reduce;
+$DracoStep1=
+Formula("$var^($n)($d*$leading*$var^(2)+$d*$middle*$var+$d*$end)")->reduce;
+$DracoStep2=
+Formula("$var^($n)($d*$leading*$var+$d*$b)($var+$c)")->reduce;
+$ans = Formula("$d*$var^$n($a*$var+$b)*($var+$c)")->reduce;
+$FillInBlankFirst=
+Formula("$var^(2)")->reduce;
+$FillInBlankLast=
+Formula("abs($d*$end*2)")->reduce;
+##############################################
+##############################################################
+#
+# Text
+#
+#
+
+Context()->texStrings;
+BEGIN_TEXT
+Unless you have been instructed otherwise, complete the following problems outside of WeBWorK (on paper, using MS Word, using a Google Doc, etc.) and upload your answers as a PDF file in D2L under the Assignments tab.
+
+If you understand these directions, enter the value of \(\pi\) accurate to two decimal places.
+
+
+
+\{$pi->ans_rule\}
+
+END_TEXT
+BEGIN_PGML
+1. On a quiz is the following Question:
+
+ Factor the given polynomial.
+
+ [`[$question]`]
+
+ Ron answered it like this:
+
+ [`=[$RonStep1]`]
+
+ [`=[$RonStep2]`]
+
+ Draco answered it like this:
+
+ [`=[$DracoStep1]`]
+
+ [`=[$DracoStep2]`]
+
+
+ Who is correct? Ron? Draco? Both? Neither?
+ Are there any errors in the student work?
+ Give a full explanation of your judgement of the students' work.
+
+1. Fill in the blank with whole numbers so that the trinomial factors. Please create two different trinomials that factor. After creating each trinomial, show how it factors.
+
+ [`[$FillInBlankFirst]+\underline{\phantom{12345}}{}-[$FillInBlankLast]`]
+
+1. Here is a graph describing a function of gas prices.
+
+ [@ image( "chgaschart.png", width=>600,
+tex_size=>1000, extra_html_tags=>'alt="Plot showing average retail price for one gallon of gasoline from October 2018 through April 2020"' ) @]*
+
+ a. State the units of the input and the units of the output.
+
+ a. Using a complete sentence in context, describe the domain.
+
+ a. Using interval notation, state the range.
+
+END_PGML
+
+Context()->normalStrings;
+
+##############################################################
+#
+# Answers
+#
+#
+
+ANS($pi->with(tolerance=>.01)->cmp);
+# relative tolerance --3.1412 is incorrect but 3.1413 is correct
+# default tolerance is .01 or one percent.
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/chgaschart.png b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/chgaschart.png
new file mode 100644
index 0000000000..58d9cfa7ac
Binary files /dev/null and b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/chgaschart.png differ
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def
new file mode 100644
index 0000000000..38c093ce74
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setAdd_Subtract_Rational_Expressions.def
@@ -0,0 +1,24 @@
+openDate = 12/01/2015 at 12:26am PST
+dueDate = 03/01/2016 at 12:26am PST
+answerDate = 03/01/2016 at 12:26am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Add_Subtract_Rational_Expressions.pg
+description = subtract rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions100.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions110.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions120.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions130.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions140.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions150.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setCalculator_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setCalculator_Basics.def
new file mode 100644
index 0000000000..9fdb03ef6f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setCalculator_Basics.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:00am PST
+dueDate = 03/01/2016 at 12:00am PST
+answerDate = 03/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Calculator_Basics.pg
+description = learning the basics about using graphing calculators
+problemList =
+BasicAlgebra/Calculator/CalculatorBasics10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics20.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics30.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics40.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics50.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics60.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics70.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics80.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorBasics90.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorIntersection10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorIntersection20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setComplex_Number_Operations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setComplex_Number_Operations.def
new file mode 100644
index 0000000000..340fac9eed
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setComplex_Number_Operations.def
@@ -0,0 +1,23 @@
+openDate = 12/01/2015 at 12:44am PST
+dueDate = 03/01/2016 at 12:44am PST
+answerDate = 03/01/2016 at 12:44am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Complex_Number_Operations.pg
+description = add, subtract, multiply complex numbers
+problemList =
+BasicAlgebra/ComplexNumber/complexNumberBasics10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberBasics20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberBasics30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations40.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations50.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations60.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations70.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations80.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setDivide_Rational_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setDivide_Rational_Expressions.def
new file mode 100644
index 0000000000..598d861b47
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setDivide_Rational_Expressions.def
@@ -0,0 +1,17 @@
+openDate = 12/01/2015 at 12:22am PST
+dueDate = 03/01/2016 at 12:22am PST
+answerDate = 03/01/2016 at 12:22am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Divide_Rational_Expressions.pg
+description = divide rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions25.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions45.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/divideRationalExpressions60.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setExam_ORCCA_ed2_10.1-11.2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setExam_ORCCA_ed2_10.1-11.2.def
new file mode 100644
index 0000000000..c0a3192045
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setExam_ORCCA_ed2_10.1-11.2.def
@@ -0,0 +1,96 @@
+assignmentType = gateway
+openDate = 04/22/2020 at 07:00am PDT
+reducedScoringDate =04/28/2020 at 11:59pm PDT
+dueDate = 04/28/2020 at 11:59pm PDT
+answerDate = 05/01/2020 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Exam_ORCCA_ed2_10.1-11.2_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Exam_ORCCA_ed2_10.1-11.2_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = This Exam includes questions covered in sections 10.1 through 11.2 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring71.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring100.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring125.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring135.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring175.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring390.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring470.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring560.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad95.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad235.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad340.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication40.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/Functions211.pg
+value = 5
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext20.pg
+value = 5
+problem_end
+problem_start
+source_file = PCCSetDefinitions/MTH095/Exam_ORCCA_ed2_10.1-11.2.pg
+value = 1
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFinal_Exam_202004_40038.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFinal_Exam_202004_40038.def
new file mode 100644
index 0000000000..29501fcb8a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFinal_Exam_202004_40038.def
@@ -0,0 +1,144 @@
+assignmentType = gateway
+openDate = 04/22/2020 at 07:00am PDT
+reducedScoringDate =04/28/2020 at 11:59pm PDT
+dueDate = 04/28/2020 at 11:59pm PDT
+answerDate = 05/01/2020 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Final_Exam_202004_40038_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Final_Exam_202004_40038_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = A Final Exam with questions from chapters 10 through 13 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/Functions213.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/Functions225.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/11-Functions/11_4-Simplifying_Expressions_with_Function_Notation/11_4_4_21.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/11-Functions/11_4-Simplifying_Expressions_with_Function_Notation/11_4_4_9.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/MultiplyingRationals/MultiplyingRationals2.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/addSubtractRationalExpressions100.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions70.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalLiteralEquations/LiteralEquation290.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalEquations/solveRationalEquations60.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad260.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_3-Completing_the_Square/13_3_6_23.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/AbsValueEquations/lh1-6_66.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/AbsValueEquations/s5p6.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/CompoundLinearInequalities/CompoundLinearInequalities3.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/Math95/CompoundLinearInequalities/CompoundLinearInequalities12.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/SlopeAndY-InterceptCalculations/FindSlopeYIntercept55.pg
+value = 4
+problem_end
+problem_start
+source_file = Library/PCC/BasicAlgebra/GraphingPointsAndLines/GraphLinearEquationByTwoPoints80.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_3-Completing_the_Square/13_3_6_29.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticDomainRange10.pg
+value = 8
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_2-Quadratic_Graphs_and_Vertex_Form/13_2_6_85.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_7-Solving_Inequalities_Graphically/13_7_5_17.pg
+value = 8
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_2-Quadratic_Graphs_and_Vertex_Form/13_2_6_29.pg
+value = 16
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/12-Rational_Functions_and_Equations/12_1-Introduction_to_Rational_Functions/12_1_3_29.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/RationalEquations/rationalEquationApplication44.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_2-Quadratic_Graphs_and_Vertex_Form/13_2_6_35.pg
+value = 4
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/13-Graphs_and_Equations/13_2-Quadratic_Graphs_and_Vertex_Form/13_2_6_39.pg
+value = 4
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Domain_Range.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Domain_Range.def
new file mode 100644
index 0000000000..aa4e0dd9e3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Domain_Range.def
@@ -0,0 +1,31 @@
+openDate = 12/01/2015 at 12:04am PST
+dueDate = 03/01/2016 at 12:04am PST
+answerDate = 03/01/2016 at 12:04am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Domain_Range.pg
+description = finding the domain and range functions
+problemList =
+FunctionBasics/Functions90.pg, 1, -1, 0
+FunctionBasics/Functions100.pg, 1, -1, 0
+FunctionBasics/Functions110.pg, 1, -1, 0
+FunctionBasics/Functions120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg, 1, -1, 0
+FunctionBasics/Functions170.pg, 1, -1, 0
+FunctionBasics/Functions180.pg, 1, -1, 0
+FunctionBasics/Functions200.pg, 1, -1, 0
+FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain30.pg, 1, -1, 0
+FunctionBasics/Functions225.pg, 1, -1, 0
+FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext60.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Notation.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Notation.def
new file mode 100644
index 0000000000..b00d94b3b3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setFunction_Notation.def
@@ -0,0 +1,32 @@
+openDate = 12/01/2015 at 12:02am PST
+dueDate = 03/01/2016 at 12:02am PST
+answerDate = 03/01/2016 at 12:02am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Function_Notation.pg
+description = learning and applying function notation
+problemList =
+BasicAlgebra/FunctionBasics/FunctionInContext10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionInContext40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction85.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition65.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition65.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition66.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionComposition66.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools20.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorTable10.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setLinear_Functions_From_Data.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setLinear_Functions_From_Data.def
new file mode 100644
index 0000000000..4eefb462e5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setLinear_Functions_From_Data.def
@@ -0,0 +1,52 @@
+openDate = 09/23/2019 at 12:00am
+reducedScoringDate = 06/15/2029 at 10:00pm
+dueDate = 08/17/2029 at 10:00pm
+answerDate = 08/17/2029 at 10:00pm
+enableReducedScoring = Y
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = find the formula for a linear function given two data points
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints10.pg
+problem_id = 1
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints20.pg
+problem_id = 2
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints30.pg
+problem_id = 3
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints40.pg
+problem_id = 4
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints50.pg
+problem_id = 5
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/LinearFunctionsFromPoints/LinearFunctionsFromPoints60.pg
+problem_id = 6
+value = 1
+max_attempts = -1
+showMeAnother = -2
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMidterm_Exam_202004_40038.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMidterm_Exam_202004_40038.def
new file mode 100644
index 0000000000..48b82bee7b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMidterm_Exam_202004_40038.def
@@ -0,0 +1,156 @@
+assignmentType = gateway
+openDate = 04/22/2020 at 07:00am PDT
+reducedScoringDate =04/28/2020 at 11:59pm PDT
+dueDate = 04/28/2020 at 11:59pm PDT
+answerDate = 05/01/2020 at 11:59pm PDT
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Midterm_Exam_202004_40038_header.pg
+screenHeaderFile = PCCDefaultProblemSets/CombinedHeaders/MTH095/Midterm_Exam_202004_30038_header.pg
+attemptsPerVersion = 0
+timeInterval = 0
+versionsPerInterval = 1
+versionTimeLimit = 7200
+problemRandOrder = 0
+problemsPerPage = 0
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = A Midterm Exam with questions from chapters 10 and 11 of ORCCA, 2nd edition.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring100.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring130.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring345.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring525.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring85.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring380.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring395.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring210.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring200.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring550.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring505.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/Factoring/factoring280.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad265.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad295.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad305.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticEquations/solveQuad275.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/QuadraticApplications/QuadraticEquationApplication30.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionInContext10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/CollegeAlgebra/FunctionBasics/FunctionRelations10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction100.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction80.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/EvaluateFunction120.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg
+value = 8
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
+value = 8
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionValuesByGraph45.pg
+value = 16
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/Functions200.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/Functions225.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionDomainRangeInContext10.pg
+value = 4
+problem_end
+problem_start
+source_file = Contrib/PCC/BasicAlgebra/FunctionBasics/FunctionComposition66.pg
+value = 16
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/11-Functions/11_3-Using_Technology_to_Explore_Functions/11_3_5_31.pg
+value = 8
+problem_end
+problem_start
+source_file = ORCCA/ed2/III-Preparation_for_College_Algebra/11-Functions/11_3-Using_Technology_to_Explore_Functions/11_3_5_25.pg
+value = 8
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMultiply_Rational_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMultiply_Rational_Expressions.def
new file mode 100644
index 0000000000..7236470059
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setMultiply_Rational_Expressions.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:20am PST
+dueDate = 03/01/2016 at 12:20am PST
+answerDate = 03/01/2016 at 12:20am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Multiply_Rational_Expressions.pg
+description = multiply rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/multiplyRationalExpressions100.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setOperations_with_Radicals.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setOperations_with_Radicals.def
new file mode 100644
index 0000000000..2d26974f77
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setOperations_with_Radicals.def
@@ -0,0 +1,43 @@
+openDate = 12/01/2015 at 12:37am PST
+dueDate = 03/01/2016 at 12:37am PST
+answerDate = 03/01/2016 at 12:37am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Operations_with_Radicals.pg
+description = operations that include radicals
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals13.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals14.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals15.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals51.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals52.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals55.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals56.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals57.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals58.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals91.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals92.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals93.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals94.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals95.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals44.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals55.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals65.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty11.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty12.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty41.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty43.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty60.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def
new file mode 100644
index 0000000000..83ee97340c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Equations_with_Complex_Solutions.def
@@ -0,0 +1,14 @@
+openDate = 12/01/2015 at 12:58am PST
+dueDate = 03/01/2016 at 12:58am PST
+answerDate = 03/01/2016 at 12:58am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Equations_with_Complex_Solutions.pg
+description = find, understand, and interpret complex solutions of quadratic equations
+problemList =
+BasicAlgebra/ComplexNumber/complexSolutions10.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions20.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions30.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions40.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexSolutions50.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Formula.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Formula.def
new file mode 100644
index 0000000000..0f5d59d87d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Formula.def
@@ -0,0 +1,19 @@
+openDate = 12/01/2015 at 12:56am PST
+dueDate = 03/01/2016 at 12:56am PST
+answerDate = 03/01/2016 at 12:56am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Formula.pg
+description = solve a quadratic equation using the quadratic formula
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad375.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad380.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad385.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad185.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools30.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools40.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorGraphingTools50.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorQuadraticFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions.def
new file mode 100644
index 0000000000..2e43c931df
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:50am PST
+dueDate = 03/01/2016 at 12:50am PST
+answerDate = 03/01/2016 at 12:50am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions.pg
+description = quadratic functions their graphs
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def
new file mode 100644
index 0000000000..a88a2e2d3f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setQuadratic_Functions_Vertex_Form.def
@@ -0,0 +1,24 @@
+openDate = 12/01/2015 at 12:52am PST
+dueDate = 03/01/2016 at 12:52am PST
+answerDate = 03/01/2016 at 12:52am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Quadratic_Functions_Vertex_Form.pg
+description = quadratic functions in vertex form and their graphs
+problemList =
+BasicAlgebra/QuadraticFunctions/CompleteSquare10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare40.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare50.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare60.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare70.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm15.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticVertexForm40.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRadical_Functions_Domain_Range.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRadical_Functions_Domain_Range.def
new file mode 100644
index 0000000000..abf0dc5bae
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRadical_Functions_Domain_Range.def
@@ -0,0 +1,23 @@
+openDate = 12/01/2015 at 12:34am PST
+dueDate = 03/01/2016 at 12:34am PST
+answerDate = 03/01/2016 at 12:34am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Radical_Functions_Domain_Range.pg
+description = determine the domain and range of radical functions
+problemList =
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions2.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions3.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions4.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions5.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions6.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions7.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions8.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically90.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically100.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically110.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically120.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically130.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically140.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctionsGraphically150.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Exponents.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Exponents.def
new file mode 100644
index 0000000000..eb4b66091b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Exponents.def
@@ -0,0 +1,50 @@
+openDate = 12/01/2015 at 12:35am PST
+dueDate = 03/01/2016 at 12:35am PST
+answerDate = 03/01/2016 at 12:35am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Exponents.pg
+description = using rational exponents to simplify radical expressions
+problemList =
+Math95/RadicalsRationalExponents/RadicalsRationalExponents7.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents8.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FractionalExponentToRadical30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent26.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateFractionalExponent40.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots35.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateOtherRoots40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalToRationalExponent30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents9.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents14.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents15.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents16.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents17.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents18.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents19.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents21.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents24.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents27.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents28.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents29.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents31.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Functions_Domain.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Functions_Domain.def
new file mode 100644
index 0000000000..bb6730e752
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRational_Functions_Domain.def
@@ -0,0 +1,29 @@
+openDate = 12/01/2015 at 12:16am PST
+dueDate = 03/01/2016 at 12:16am PST
+answerDate = 03/01/2016 at 12:16am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rational_Functions_Domain.pg
+description = determine the domain and range of rational functions
+problemList =
+BasicAlgebra/RationalFunctions/rationalFunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions211.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions212.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions213.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions214.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions215.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions216.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions217.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain40.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionDomain50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote20.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote30.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionAsymptote40.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/RationalFunctions/rationalFunctionApplication20.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def
new file mode 100644
index 0000000000..7947d00d13
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Complex_Number_Denominators.def
@@ -0,0 +1,15 @@
+openDate = 12/01/2015 at 12:46am PST
+dueDate = 03/01/2016 at 12:46am PST
+answerDate = 03/01/2016 at 12:46am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Complex_Number_Denominators.pg
+description = rationalize denominators that include complex numbers
+problemList =
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations90.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations100.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+BasicAlgebra/ComplexNumber/complexNumberOperations110.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Radical_Denominators.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Radical_Denominators.def
new file mode 100644
index 0000000000..7ea176a347
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setRationalize_Radical_Denominators.def
@@ -0,0 +1,35 @@
+openDate = 12/01/2015 at 12:38am PST
+dueDate = 03/01/2016 at 12:38am PST
+answerDate = 03/01/2016 at 12:38am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Rationalize_Radical_Denominators.pg
+description = rationalize denominators that include radicals
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator35.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator36.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator37.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator81.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator82.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator83.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator84.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator85.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator86.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator87.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator110.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator140.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator150.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication10.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication20.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicalsApplication30.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals24.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals25.pg, 1, -1, 0
+Math95/SimplifyRadicals/SimplifyRadicals26.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator160.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator165.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator170.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator180.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator190.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator200.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator210.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_1-1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_1-1.def
new file mode 100644
index 0000000000..3cf3e98ca6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_1-1.def
@@ -0,0 +1,54 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:00am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = evaluating formulaic functions; domain and range; graphs of functions
+problemList =
+BasicAlgebra/FunctionBasics/EvaluateFunction10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction50.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction70.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction110.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction140.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions110.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions150.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions160.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions170.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions200.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions225.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/Functions/Functions10.pg, 1, -1, 0
+Math95/Functions/Functions11.pg, 1, -1, 0
+Math95/Functions/Functions12.pg, 1, -1, 0
+Math95/Functions/Functions13.pg, 1, -1, 0
+Math95/Functions/Functions14.pg, 1, -1, 0
+Math95/Functions/Functions15.pg, 1, -1, 0
+Math95/Functions/Functions16.pg, 1, -1, 0
+Math95/Functions/Functions17.pg, 1, -1, 0
+Math95/Functions/Functions18.pg, 1, -1, 0
+Math95/Functions/Functions19.pg, 1, -1, 0
+Math95/Functions/Functions20.pg, 1, -1, 0
+Math95/Functions/Functions22.pg, 1, -1, 0
+Math95/Functions/Functions21.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-3.def
new file mode 100644
index 0000000000..8f7407ea3e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-3.def
@@ -0,0 +1,60 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:01am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = inequalities with number lines, interval notation, and set-builder notation; solving linear inequalities; applications
+problemList =
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/GraphToSetAndIntervalNotation40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/IntervalNotation120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SetNotationToGraph40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality120.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality130.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality170.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality190.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality210.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality230.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality240.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality260.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality280.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality290.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality310.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality70.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveSpecialInequality80.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalityWordProblem20.pg, 1, -1, 0
+Math95/LinearInequalities/LinearInequalities8.pg, 1, -1, 0
+Math95/LinearInequalities/LinearInequalities9.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-4.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-4.def
new file mode 100644
index 0000000000..b3ced9082e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-4.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:02am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = compound inequalities
+problemList =
+Math95/CompoundLinearInequalities/CompoundLinearInequalities1.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities2.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities3.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities4.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities5.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities6.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities11.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities10.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities7.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities8.pg, 1, -1, 0
+Math95/CompoundLinearInequalities/CompoundLinearInequalities9.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-5.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-5.def
new file mode 100644
index 0000000000..fc9073ba2c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_2-5.def
@@ -0,0 +1,17 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:03am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = absolute value inequalities
+problemList =
+Math95/AbsValueInequalities/AbsValueInequalities1.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities4.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities6.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities7.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities2.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities3.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities5.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities9.pg, 1, -1, 0
+Math95/AbsValueInequalities/AbsValueInequalities8.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-1.def
new file mode 100644
index 0000000000..3856fa3c8f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-1.def
@@ -0,0 +1,19 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:04am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = rational functions; easier rational equations
+problemList =
+Math95/Functions/Functions19.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions200.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations1.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations2.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations4.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations5.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations6.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations7.pg, 1, -1, 0
+Math95/RationalEquations/RationalEquations3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-2.def
new file mode 100644
index 0000000000..e09e4fd088
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-2.def
@@ -0,0 +1,21 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:05am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = multiplication and division of rational expressions
+problemList =
+Math95/MultiplyingRationals/MultiplyingRationals1.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_15_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_18_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_22_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_20_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_19_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_16_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_23_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_24_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_25_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_27_MultDivRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_01_MultDivRationalExpressions/61IntAlg_26_MultDivRatExp.pg, 1, -1, 0
+Math95/MultiplyingRationals/MultiplyingRationals2.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-3.def
new file mode 100644
index 0000000000..95dc9b7346
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-3.def
@@ -0,0 +1,24 @@
+
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:06am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = addition and subtraction of rational expressions
+problemList =
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_01_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_06_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_07_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_05_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_02_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_03_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_04_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_20_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_17_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_24_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_25_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_21_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_27_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_19_AddSubRatExp.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_06_02_AddSubRationalExpressions/62IntAlg_18_AddSubRatExp.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-4.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-4.def
new file mode 100644
index 0000000000..92902cdd2a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-4.def
@@ -0,0 +1,32 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:07am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = more rational equations; applications
+problemList =
+Math95/MoreRationalEquations/MoreRationalEquations1.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations2.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations3.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations4.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations5.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations6.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations7.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations8.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations9.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations10.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations11.pg, 1, -1, 0
+Math95/MoreRationalEquations/MoreRationalEquations12.pg, 1, -1, 0
+Math95/Proportions/Proportions1.pg, 1, -1, 0
+Math95/Proportions/Proportions2.pg, 1, -1, 0
+Math95/Proportions/Proportions3.pg, 1, -1, 0
+Math95/Proportions/Proportions4.pg, 1, -1, 0
+Math95/Proportions/Proportions5.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications1.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications2.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications3.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications4.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications5.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications6.pg, 1, -1, 0
+Math95/RatEqApplications/RatEqApplications7.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-5.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-5.def
new file mode 100644
index 0000000000..364f7293ed
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_4-5.def
@@ -0,0 +1,18 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:08am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = "complex" fractions (rational expressions with more than two "levels")
+problemList =
+Math95/ComplexFractions/ComplexFractions1.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions2.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions3.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions4.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions5.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions6.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions7.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions8.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions9.pg, 1, -1, 0
+Math95/ComplexFractions/ComplexFractions10.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-1_5-2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-1_5-2.def
new file mode 100644
index 0000000000..7ecbfb27e8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-1_5-2.def
@@ -0,0 +1,40 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:09am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = square roots and radicals; rational exponents
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot25.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EvaluateSquareRoot60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents6.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents5.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/EstimateRadical10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents3.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents4.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents9.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents27.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents28.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents29.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents31.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents30.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents11.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents12.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents7.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents8.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents10.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents18.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p13.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p16.pg, 1, -1, 0
+Library/Utah/Intermediate_Algebra/set7_Exponential_and_Logarithmic_Functions/s7p12.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-3.def
new file mode 100644
index 0000000000..111ce86936
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-3.def
@@ -0,0 +1,31 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:10am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = multiplying radical and rational exponent expressions
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/MultiplyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalDivisionProperty40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals04.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals06.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents13.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents14.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents15.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents16.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents17.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents20.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents21.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents22.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents23.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents24.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-4.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-4.def
new file mode 100644
index 0000000000..bdde53a100
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-4.def
@@ -0,0 +1,34 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:11am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = adding like radicals; reducing radicals; rationalizing denominators; binomial multiplication with radicals and rational exponents
+problemList =
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals20.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals40.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals02.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals60.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator30.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator45.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator70.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator50.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator90.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RationalizeDenominator80.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical1.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical2.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/FOILradical3.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals100.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals120.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals130.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals140.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents25.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents26.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-5.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-5.def
new file mode 100644
index 0000000000..f581cb19fe
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-5.def
@@ -0,0 +1,20 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:12am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = radical functions
+problemList =
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions225.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions235.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions1.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions2.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions3.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions4.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions5.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions6.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions7.pg, 1, -1, 0
+Math95/RadicalFunctions/RadicalFunctions8.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-6.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-6.def
new file mode 100644
index 0000000000..f9bd162940
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-6.def
@@ -0,0 +1,33 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:13am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = equations that radicals help solve; Pythagorean Theorem; equations with radicals in them
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad35.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad40.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad50.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad70.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad75.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad85.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad115.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad110.pg, 1, -1, 0
+Math95/EquationsNeedingRadicals/EquationsNeedingRadicals3.pg, 1, -1, 0
+Math95/EquationsNeedingRadicals/EquationsNeedingRadicals4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations1.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations5.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations8.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations9.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations10.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad135.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad140.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-7.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-7.def
new file mode 100644
index 0000000000..c183d725ec
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_5-7.def
@@ -0,0 +1,20 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:14am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = arithmetic with complex numbers; counting real and nonreal roots of quadratic polynomials
+problemList =
+Math95/ComplexNumbers/ComplexNumbers1.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers2.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers3.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers4.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers5.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers6.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers7.pg, 1, -1, 0
+Math95/ComplexNumbers/ComplexNumbers8.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+Math95/ComplexRoots/ComplexRoots1.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-1.def
new file mode 100644
index 0000000000..6d8014412d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-1.def
@@ -0,0 +1,24 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:15am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = graph quadratic functions; parabola axis of symmetry and vertex
+problemList =
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/GraphParabolaByTable50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/IdentifyAxisVertex110.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-2.def
new file mode 100644
index 0000000000..256be791df
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-2.def
@@ -0,0 +1,25 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:16am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = transformations of y=x^2; quadratic data
+problemList =
+BasicAlgebra/GraphingQuadratics/ShiftParabola10.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola60.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola80.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola100.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola110.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ShiftParabola130.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/QuadraticFunctionForms10.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData1.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData2.pg, 1, -1, 0
+Math95/QuadraticData/QuadraticData3.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-3.def
new file mode 100644
index 0000000000..11f4905628
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-3.def
@@ -0,0 +1,46 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:17am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = solve quadratic equations using factoring, square root, and completing the square; find x-intercepts of parabolas; applications
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad95.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad230.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad220.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad235.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad240.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad120.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad180.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad265.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad270.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad280.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad285.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad295.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad335.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad330.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad325.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts50.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts120.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts140.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts160.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts200.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts220.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts230.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola20.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola30.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola70.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola100.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication30.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/MaxMinApplication50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication30.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-4.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-4.def
new file mode 100644
index 0000000000..8b77a87ae4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSection_6-4.def
@@ -0,0 +1,21 @@
+openDate = 01/01/2014 at 12:00am PST
+dueDate = 01/01/2015 at 12:18am PST
+answerDate = 01/01/2016 at 12:00am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/GenericMTH95Header.pg
+description = the quadratic formula; applications
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad145.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad150.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad160.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad170.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad176.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/ParabolaIntercepts90.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola40.pg, 1, -1, 0
+BasicAlgebra/GraphingQuadratics/SketchParabola50.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp10.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/FlyingObjectApp20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/QuadraticApplications/QuadraticEquationApplication50.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def
new file mode 100644
index 0000000000..7c8e046444
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Complex_Rational_Expressions.def
@@ -0,0 +1,18 @@
+openDate = 12/01/2015 at 12:28am PST
+dueDate = 03/01/2016 at 12:28am PST
+answerDate = 03/01/2016 at 12:28am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Complex_Rational_Expressions.pg
+description = simplify complex rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions11.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions12.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/complexFractions70.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Radical_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Radical_Expressions.def
new file mode 100644
index 0000000000..207d476ffa
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Radical_Expressions.def
@@ -0,0 +1,28 @@
+openDate = 12/01/2015 at 12:36am PST
+dueDate = 03/01/2016 at 12:36am PST
+answerDate = 03/01/2016 at 12:36am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Radical_Expressions.pg
+description = simplify radical expressions
+problemList =
+Math95/RadicalsRationalExponents/RadicalsRationalExponents1.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents2.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents3.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents4.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents5.pg, 1, -1, 0
+Math95/RadicalsRationalExponents/RadicalsRationalExponents6.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals07.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals09.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals150.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals160.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals170.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals180.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals185.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals190.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals200.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals210.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/SimplifyRadicals220.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEstimateRadical10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorEstimateRadical20.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Rational_Expressions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Rational_Expressions.def
new file mode 100644
index 0000000000..722ea2a715
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSimplify_Rational_Expressions.def
@@ -0,0 +1,27 @@
+openDate = 12/01/2015 at 12:18am PST
+dueDate = 03/01/2016 at 12:18am PST
+answerDate = 03/01/2016 at 12:18am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Simplify_Rational_Expressions.pg
+description = simplify rational expressions
+problemList =
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions10.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions20.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions30.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions40.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions50.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions60.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions70.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions80.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions90.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions100.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions110.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions120.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions130.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions140.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions150.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions160.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions170.pg, 1, -1, 0
+BasicAlgebra/RationalExpressionAlgebraSkills/simplifyRationalExpressions180.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def
new file mode 100644
index 0000000000..20167defb9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Equations.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:12am PST
+dueDate = 03/01/2016 at 12:12am PST
+answerDate = 03/01/2016 at 12:12am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Equations.pg
+description = solve absolute value equations
+problemList =
+BasicAlgebra/AbsoluteValue/absoluteValueEquation10.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation20.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation30.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation40.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation50.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation60.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation65.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation70.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation80.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation90.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation95.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation100.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation110.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation120.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation130.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation140.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueEquation150.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def
new file mode 100644
index 0000000000..2c025f8c71
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Absolute_Value_Inequalities.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:14am PST
+dueDate = 03/01/2016 at 12:14am PST
+answerDate = 03/01/2016 at 12:14am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Absolute_Value_Inequalities.pg
+description = solve absolute value inequalities
+problemList =
+BasicAlgebra/AbsoluteValue/absoluteValueInequality10.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality20.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality30.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality40.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality50.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality60.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality70.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality80.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality90.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality100.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality110.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality120.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality130.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality140.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequality150.pg, 1, -1, 0
+BasicAlgebra/AbsoluteValue/absoluteValueInequalityApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveInequality10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveInequality20.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Inequalities.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Inequalities.def
new file mode 100644
index 0000000000..14a7378064
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Inequalities.def
@@ -0,0 +1,34 @@
+openDate = 12/01/2015 at 12:08am PST
+dueDate = 03/01/2016 at 12:08am PST
+answerDate = 03/01/2016 at 12:08am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Inequalities.pg
+description = solve inequalities and compound inequalities
+problemList =
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/InequalitySolutionOrNot30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality320.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequality300.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/SolveInequalityWithFraction20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics30.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics40.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics50.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityBasics60.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd90.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd100.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityAnd110.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr10.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr20.pg, 1, -1, 0
+BasicAlgebra/LinearInequalities/CompoundInequalityOr30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph55.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph56.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph57.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph58.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph59.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph61.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph62.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def
new file mode 100644
index 0000000000..6baeeeeadd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Literal_Rational_Equations.def
@@ -0,0 +1,17 @@
+openDate = 12/01/2015 at 12:32am PST
+dueDate = 03/01/2016 at 12:32am PST
+answerDate = 03/01/2016 at 12:32am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Literal_Rational_Equations.pg
+description = solve literal rational equations
+problemList =
+BasicAlgebra/RationalLiteralEquations/LiteralEquation220.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation230.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation240.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation250.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation260.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation270.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation280.pg, 1, -1, 0
+BasicAlgebra/RationalLiteralEquations/LiteralEquation290.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Quadratic_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Quadratic_Equations.def
new file mode 100644
index 0000000000..7093359a79
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Quadratic_Equations.def
@@ -0,0 +1,21 @@
+openDate = 12/01/2015 at 12:54am PST
+dueDate = 03/01/2016 at 12:54am PST
+answerDate = 03/01/2016 at 12:54am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Quadratic_Equations.pg
+description = learning more advanced skills for graphing calculators
+problemList =
+BasicAlgebra/QuadraticEquations/solveQuad30.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad60.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad90.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad245.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticEquations/solveQuad100.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare10.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare20.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare30.pg, 1, -1, 0
+BasicAlgebra/QuadraticFunctions/CompleteSquare40.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Radical_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Radical_Equations.def
new file mode 100644
index 0000000000..878f61f5f0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Radical_Equations.def
@@ -0,0 +1,26 @@
+openDate = 12/01/2015 at 12:40am PST
+dueDate = 03/01/2016 at 12:40am PST
+answerDate = 03/01/2016 at 12:40am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Radical_Equations.pg
+description = solve radical equations
+problemList =
+Math95/SolvingRadicalEquations/SolvingRadicalEquations1.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations2.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations3.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations4.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations5.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations6.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations7.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquations8.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral90.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral100.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral110.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsLiteral120.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRadicalEquation10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRadicalEquation20.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication92.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication102.pg, 1, -1, 0
+Math95/SolvingRadicalEquations/SolvingRadicalEquationsApplication122.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/RadicalsAndRationalExponents/RadicalFunctionApplication20.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations.def
new file mode 100644
index 0000000000..922baf84da
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations.def
@@ -0,0 +1,25 @@
+openDate = 12/01/2015 at 12:30am PST
+dueDate = 03/01/2016 at 12:30am PST
+answerDate = 03/01/2016 at 12:30am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations.pg
+description = solve rational equations
+problemList =
+BasicAlgebra/RationalEquations/solveRationalEquations10.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations20.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations25.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations27.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations28.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations30.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations40.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations50.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations55.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations60.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations61.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations65.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations66.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/solveRationalEquations70.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRationalEquation10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorSolveRationalEquation20.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def
new file mode 100644
index 0000000000..a93cb61e19
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH095/setSolve_Rational_Equations_Applications.def
@@ -0,0 +1,22 @@
+openDate = 12/01/2015 at 12:31am PST
+dueDate = 03/01/2016 at 12:31am PST
+answerDate = 03/01/2016 at 12:31am PST
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH095/GenericMTH95HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH095/Solve_Rational_Equations_Applications.pg
+description = solve rational equations
+problemList =
+BasicAlgebra/RationalEquations/rationalEquationApplication10.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication15.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication20.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication25.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication30.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication35.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication40.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication44.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication45.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication50.pg, 1, -1, 0
+BasicAlgebra/RationalEquations/rationalEquationApplication60.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/Calculator/CalculatorRationalFunctionApplication10.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setComposing_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setComposing_Functions.def
new file mode 100644
index 0000000000..fc17b4b96a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setComposing_Functions.def
@@ -0,0 +1,24 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/09/2014 at 10:03pm PDT
+answerDate = 07/09/2014 at 10:03pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = composition of functions using formulas, tables, graphs, and verbal description
+problemList =
+CollegeAlgebra/FunctionComposition/FunctionComposition30.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition40.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition50.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition60.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition70.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition80.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition90.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition100.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition110.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition115.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition120.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition130.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition140.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition150.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition160.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition170.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setConcavity.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setConcavity.def
new file mode 100644
index 0000000000..f0402d865c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setConcavity.def
@@ -0,0 +1,12 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/30/2014 at 10:00pm PDT
+answerDate = 07/30/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = concavity
+problemList =
+CollegeAlgebra/Concavity/ConcavityInContext10.pg, 1, -1, 0
+CollegeAlgebra/Concavity/ConcavityInContext20.pg, 1, -1, 0
+CollegeAlgebra/Concavity/ConcavityFromTable10.pg, 1, -1, 0
+CollegeAlgebra/Concavity/ConcavityFromGraph10.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setContinuous_Relative_Growth_Rate.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setContinuous_Relative_Growth_Rate.def
new file mode 100644
index 0000000000..0494d15d98
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setContinuous_Relative_Growth_Rate.def
@@ -0,0 +1,16 @@
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 08/13/2014 at 10:01pm PDT
+answerDate = 08/13/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = continuous relative growth rate
+problemList =
+CollegeAlgebra/EulersConstantAndNaturalLog/GrowthRates1.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/GrowthRates2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/GrowthRates3.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/eForm1.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/ContPopulation.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/RadioDecay.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/HalvingTime.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/ContinuousDoublingTime.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDifference_Quotients.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDifference_Quotients.def
new file mode 100644
index 0000000000..dd28727c21
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDifference_Quotients.def
@@ -0,0 +1,15 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/09/2014 at 10:02pm PDT
+answerDate = 07/09/2014 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = simplifying the difference quotient; some warm-up questions first
+problemList =
+CollegeAlgebra/FunctionComposition/FunctionComposition10.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/FunctionComposition20.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient10.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient20.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient40.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient50.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient60.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDomain_and_Range.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDomain_and_Range.def
new file mode 100644
index 0000000000..13413b00fd
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setDomain_and_Range.def
@@ -0,0 +1,31 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/02/2014 at 10:02pm PDT
+answerDate = 07/02/2014 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = domain and range of a function
+problemList =
+BasicAlgebra/FunctionBasics/FunctionDefinition10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions90.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions170.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions200.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions210.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions225.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions235.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Domain10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Domain20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Domain30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionGraphs30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/graphs_of_functions_12.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Range20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Range30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Range40.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Range50.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/new_problem_337.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/new_problem_142.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setEulers_Constant_and_Natural_Log.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setEulers_Constant_and_Natural_Log.def
new file mode 100644
index 0000000000..f2648884e9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setEulers_Constant_and_Natural_Log.def
@@ -0,0 +1,29 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 08/13/2014 at 10:00pm PDT
+answerDate = 08/13/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = Euler's constant e; natural logarithm ln
+problemList =
+CollegeAlgebra/EulersConstantAndNaturalLog/MatchGraphs2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/MatchGraphs3.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/MatchGraphs.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/CalculatorFreeLogs.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/ExponentsToLns.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/ExponentsToLogs2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/LnsToExponents2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/LnsToExponents.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Simplify2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Simplify3.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Simplify.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/SolveUsingLogs7.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/SolveUsingLogs8.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/MatchLogGraphs.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Solve.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/bForm1.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/bForm2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/bForm3.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Domain2.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Domain3.pg, 1, -1, 0
+CollegeAlgebra/EulersConstantAndNaturalLog/Domain.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setExponential_Function_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setExponential_Function_Basics.def
new file mode 100644
index 0000000000..a243d199fe
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setExponential_Function_Basics.def
@@ -0,0 +1,32 @@
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/30/2014 at 10:02pm PDT
+answerDate = 07/30/2014 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = exponential functions basics; relative growth rate; growth factor; find a formula given two points
+problemList =
+CollegeAlgebra/ExponentialFunctions/ExponentialBasics10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/ExponentialBasics20.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/CalculatorExponential10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/Modeling10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/Modeling20.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/Modeling30.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/AverageRateOfChange10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/GrowthFactor2.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/GrowthFactor.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/FitCurveToTwoPoints100.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/CompareGraphs2.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/CompareGraphs3.pg, 1, -1, 0
+Library/NAU/setExpLog/ExpEq2.pg, 1, -1, 0
+Library/WHFreeman/Rogawski_Calculus_Early_Transcendentals_Second_Edition/1_Precalculus_Review/1.6_Exponential_and_Logarithmic_Functions/1.6.7.pg, 1, -1, 0
+Library/WHFreeman/Rogawski_Calculus_Early_Transcendentals_Second_Edition/1_Precalculus_Review/1.6_Exponential_and_Logarithmic_Functions/1.6.31.pg, 1, -1, 0
+Library/NAU/setExpLog/ExpEq4.pg, 1, -1, 0
+Library/NAU/setExpLog/ExpEq1.pg, 1, -1, 0
+Library/ASU-topics/setLogarithmicFunctions/jj7.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/ExponentialTable.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/FitCurveToTwoPoints10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/FitCurveToTwoPoints20.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/FindExponentialFromGraph.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/LinearTable.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/LinearVsExponential.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/FindRate2.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Arithmetic.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Arithmetic.def
new file mode 100644
index 0000000000..00d2495df6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Arithmetic.def
@@ -0,0 +1,13 @@
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/09/2014 at 10:00pm PDT
+answerDate = 07/09/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = adding, subtracting, multiplying, and dividing functions; the domain of the result
+problemList =
+CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains10.pg, 1, -1, 0
+CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains20.pg, 1, -1, 0
+CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains30.pg, 1, -1, 0
+CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains40.pg, 1, -1, 0
+Library/CollegeOfIdaho/setAlgebra_03_02_ProblemSolvingBusinessApp/32IntAlg_15_Functions_Review.pg, 1, -1, 0
+Library/UVA-Stew5e/setUVA-Stew5e-C01S03-NewFunctOld/1-3-31.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Basics.def
new file mode 100644
index 0000000000..a9a8c1e12d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Basics.def
@@ -0,0 +1,33 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/02/2014 at 10:00pm PDT
+answerDate = 07/02/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = function basics; evaluation
+problemList =
+CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionRelations10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionRelations20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions160.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionApplication10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions150.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction60.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction80.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction120.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction130.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/EvaluateFunction140.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateFunction23.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve40.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve50.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/EvaluateAndSolve60.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Solve20.pg, 1, -1, 0
+CollegeAlgebra/FunctionComposition/DifferenceQuotient30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/SolveInequality20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/SolveInequality30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Solve60.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/PositionVelocity10.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Transformations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Transformations.def
new file mode 100644
index 0000000000..540ffd8961
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setFunction_Transformations.def
@@ -0,0 +1,30 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/16/2014 at 10:00pm PDT
+answerDate = 07/16/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = function transformations, including shifts, reflections, and scaling; graphical, tabular, formulaic, and verbal examples
+problemList =
+CollegeAlgebra/Transformations/Shifting10.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Shifting20.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Shifting30.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Shifting40.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Shifting50.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Shifting60.pg, 1, -1, 0
+CollegeAlgebra/Transformations/ScalingAndReflecting10.pg, 1, -1, 0
+CollegeAlgebra/Transformations/GeneralTransformations10.pg, 1, -1, 0
+CollegeAlgebra/Transformations/ScalingAndReflecting20.pg, 1, -1, 0
+CollegeAlgebra/Transformations/ScalingAndReflecting30.pg, 1, -1, 0
+CollegeAlgebra/Transformations/MatchGraphsReflected.pg, 1, -1, 0
+CollegeAlgebra/Transformations/GeneralTransformations20.pg, 1, -1, 0
+CollegeAlgebra/Transformations/GeneralTransformations30.pg, 1, -1, 0
+CollegeAlgebra/Transformations/GeneralTransformations40.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Symmetry10.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Symmetry1.pg, 1, -1, 0
+CollegeAlgebra/Transformations/MatchGraphs2.pg, 1, -1, 0
+CollegeAlgebra/Transformations/General1.pg, 1, -1, 0
+CollegeAlgebra/Transformations/General3.pg, 1, -1, 0
+CollegeAlgebra/Transformations/ChooseGraph2.pg, 1, -1, 0
+CollegeAlgebra/Transformations/MatchGraphs1.pg, 1, -1, 0
+CollegeAlgebra/Transformations/Painting.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInterest.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInterest.def
new file mode 100644
index 0000000000..d81bb57576
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInterest.def
@@ -0,0 +1,18 @@
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 08/13/2014 at 10:02pm PDT
+answerDate = 08/13/2014 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = interest compounded periodically and continuously
+problemList =
+CollegeAlgebra/Interest/NominalForm.pg, 1, -1, 0
+CollegeAlgebra/Interest/InterestChoice.pg, 1, -1, 0
+CollegeAlgebra/Interest/FindRate.pg, 1, -1, 0
+CollegeAlgebra/Interest/EffectiveRate.pg, 1, -1, 0
+CollegeAlgebra/Interest/ContVersusAnnual.pg, 1, -1, 0
+CollegeAlgebra/Interest/ContInterest.pg, 1, -1, 0
+CollegeAlgebra/Interest/Compounding.pg, 1, -1, 0
+CollegeAlgebra/Interest/Compounding2.pg, 1, -1, 0
+CollegeAlgebra/Interest/NominalForm.pg, 1, -1, 0
+CollegeAlgebra/Interest/Nominal.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInverses_of_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInverses_of_Functions.def
new file mode 100644
index 0000000000..2513cde748
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setInverses_of_Functions.def
@@ -0,0 +1,31 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/23/2014 at 10:01pm PDT
+answerDate = 07/23/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = inverses of functions
+problemList =
+CollegeAlgebra/FunctionComposition/FunctionComposition180.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions10.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions20.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/OneToOne10.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions30.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions40.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions50.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions60.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions70.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions80.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions90.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions100.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions110.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions120.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions130.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions140.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions150.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions160.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions170.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions180.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/OneToOne20.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions190.pg, 1, -1, 0
+CollegeAlgebra/InversesOfFunctions/InversesOfFunctions200.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setLogarithms.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setLogarithms.def
new file mode 100644
index 0000000000..e13ea2d642
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setLogarithms.def
@@ -0,0 +1,22 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 08/06/2014 at 10:00pm PDT
+answerDate = 08/06/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = logarithms;
+problemList =
+CollegeAlgebra/Logarithms/TrueFalse.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/ExponentsToLogs.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/LogsToExponents.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs2.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs3.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs4.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs5.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs6.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/SolveUsingLogs.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/Solve2.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/DrugInBody.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/Iodine.pg, 1, -1, 0
+CollegeAlgebra/Logarithms/DoublingTime.pg, 1, -1, 0
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPercentage_Review.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPercentage_Review.def
new file mode 100644
index 0000000000..fcfcc01c4a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPercentage_Review.def
@@ -0,0 +1,11 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/30/2014 at 10:01pm PDT
+answerDate = 07/30/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = review of percentages
+problemList =
+CollegeAlgebra/ExponentialFunctions/Percentage10.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/Percentage20.pg, 1, -1, 0
+CollegeAlgebra/ExponentialFunctions/RelativeGrowthRate10.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPiecewise_Defined_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPiecewise_Defined_Functions.def
new file mode 100644
index 0000000000..148c945f23
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPiecewise_Defined_Functions.def
@@ -0,0 +1,17 @@
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/09/2014 at 10:01pm PDT
+answerDate = 07/09/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = piecewise-defined functions
+problemList =
+CollegeAlgebra/FunctionBasics/Piecewise10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Piecewise20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Piecewise30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/Piecewise40.pg, 1, -1, 0
+Library/LoyolaChicago/Precalc/Chap2Sec3/Q04.pg, 1, -1, 0
+Library/Rochester/setAlgebra15Functions/ur_fn_1_6.pg, 1, -1, 0
+Library/Rochester/setAlgebra16FunctionGraphs/ns1_1_45.pg, 1, -1, 0
+Library/UVA-Stew5e/setUVA-Stew5e-C01S03-NewFunctOld/1-3-31.pg, 1, -1, 0
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPolynomial_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPolynomial_Functions.def
new file mode 100644
index 0000000000..20c0cce9e1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setPolynomial_Functions.def
@@ -0,0 +1,30 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/16/2014 at 10:01pm PDT
+answerDate = 07/16/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = graphs ond other features of polynomial functions
+problemList =
+CollegeAlgebra/PolynomialFunctions/Polynomials1.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials6.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials9.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials12.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials13.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials14.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials15.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials16.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials19.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials20.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials21.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials22.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials23.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials24.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials25.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials26.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials27.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials28.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_49.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Sullivan2ed3_1_97.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials29.pg, 1, -1, 0
+CollegeAlgebra/PolynomialFunctions/Polynomials30.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setRational_Functions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setRational_Functions.def
new file mode 100644
index 0000000000..aa99e18ce6
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setRational_Functions.def
@@ -0,0 +1,23 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/23/2014 at 10:00pm PDT
+answerDate = 07/23/2014 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = graphs and other features of rational functions
+problemList =
+CollegeAlgebra/RationalFunctions/Asymptotes10.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Asymptotes20.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Asymptotes30.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Asymptotes40.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Asymptotes50.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Asymptotes60.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Limits10.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Limits20.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Limits30.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas10.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas20.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas30.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas40.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas50.pg, 1, -1, 0
+CollegeAlgebra/RationalFunctions/Formulas60.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.1.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.1.def
new file mode 100644
index 0000000000..d7d646d3fc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.1.def
@@ -0,0 +1,373 @@
+assignmentType = default
+openDate = 01/04/2016 at 12:00am PST
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 01/13/2016 at 11:59pm PST
+answerDate = 01/14/2016 at 11:59pm PST
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = problems like those in Sullivan and Sullivan's 3rd edition Precalculus, section 1.1
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = CollegeAlgebra/FunctionBasics/FunctionVocabulary10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains02.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains50.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = BasicAlgebra/FunctionBasics/FunctionDefinition10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = CollegeAlgebra/FunctionBasics/FunctionRelations10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = CollegeAlgebra/FunctionBasics/FunctionRelations20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = CollegeAlgebra/FunctionBasics/EvaluateFunction23.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction60.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction80.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction120.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction130.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = BasicAlgebra/FunctionBasics/EvaluateFunction140.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = CollegeAlgebra/FunctionComposition/FunctionComposition10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient60.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient50.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = CollegeAlgebra/FunctionComposition/DifferenceQuotient30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 21
+source_file = BasicAlgebra/FunctionBasics/Functions90.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 22
+source_file = BasicAlgebra/FunctionBasics/Functions170.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 23
+source_file = BasicAlgebra/FunctionBasics/Functions200.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 24
+source_file = BasicAlgebra/FunctionBasics/Functions210.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 25
+source_file = CollegeAlgebra/FunctionBasics/Domain10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 26
+source_file = CollegeAlgebra/FunctionBasics/Domain20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 27
+source_file = BasicAlgebra/FunctionBasics/Functions225.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 28
+source_file = BasicAlgebra/FunctionBasics/Functions235.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 29
+source_file = CollegeAlgebra/FunctionBasics/Domain30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 30
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 31
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 32
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 33
+source_file = CollegeAlgebra/FunctionArithmetic/FunctionArithmeticDomains40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 34
+source_file = CollegeAlgebra/FunctionBasics/PositionVelocity10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 35
+source_file = CollegeAlgebra/FunctionBasics/Solve60.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 36
+source_file = BasicAlgebra/FunctionBasics/Functions160.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 37
+source_file = BasicAlgebra/FunctionBasics/Functions150.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 38
+source_file = Library/LoyolaChicago/Precalc/Chap1Sec1/Q19.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 39
+source_file = Library/LoyolaChicago/Precalc/Chap1Review/Q34.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 40
+source_file = Library/FortLewis/Algebra/8-1-Domain-range/MCH1-8-1-14-Domain-range.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
\ No newline at end of file
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.2.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.2.def
new file mode 100644
index 0000000000..35d1bea836
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.2.def
@@ -0,0 +1,239 @@
+assignmentType = default
+openDate = 01/04/2016 at 12:00am PST
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 01/20/2016 at 10:00pm PST
+answerDate = 01/20/2016 at 10:00pm PST
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111Header.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = problems like those in Sullivan and Sullivan's 3rd edition Precalculus, section 1.2
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = BasicAlgebra/FunctionBasics/Functions100.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = BasicAlgebra/FunctionBasics/Functions110.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = BasicAlgebra/FunctionBasics/Functions120.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = Library/CollegeOfIdaho/setAlgebra_05_03_FactoringByGrouping/53IntAlg_32_Functions_Review.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = CollegeAlgebra/FunctionBasics/FunctionGraphs10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = CollegeAlgebra/FunctionBasics/FunctionGraphs30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = CollegeAlgebra/FunctionBasics/graphs_of_functions_12.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = CollegeAlgebra/FunctionBasics/FunctionGraphs20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = CollegeAlgebra/FunctionBasics/FunctionTables30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = CollegeAlgebra/FunctionBasics/VariousQuestions10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 21
+source_file = CollegeAlgebra/FunctionBasics/FunctionTables10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 22
+source_file = CollegeAlgebra/FunctionBasics/FunctionTables20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 23
+source_file = Library/LoyolaChicago/Precalc/Chap1Review/Q37.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 1
+problem_end
+problem_start
+problem_id = 24
+source_file = Library/Rochester/setAlgebra16FunctionGraphs/c0s1p4/c0s1p4.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 1
+problem_end
+problem_start
+problem_id = 25
+source_file = Library/CollegeOfIdaho/setAlgebra_02_01_IntroFunctions/21IntAlg_14_function.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 1
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.3.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.3.def
new file mode 100644
index 0000000000..d6b69a986e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.3.def
@@ -0,0 +1,285 @@
+assignmentType = default
+openDate = 01/04/2016 at 12:00am PST
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 01/20/2016 at 10:00pm PST
+answerDate = 01/20/2016 at 10:00pm PST
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111Header.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = problems like those in Sullivan and Sullivan's 3rd edition Precalculus, section 1.3
+restrictProbProgression = 0
+emailInstructor = 0
+
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = CollegeAlgebra/FunctionBasics/FunctionVocabulary20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = CollegeAlgebra/FunctionBasics/new_problem_142.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = CollegeAlgebra/FunctionBasics/new_problem_337.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = Library/Mizzou/Algebra/functions_increasing_decreasing/find_all_info_02.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = Library/Mizzou/College_Algebra/Functions_Increasing_Decreasing/Inc_Dec_Const_Dom_Range_01.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = Library/FortLewis/Algebra/8-1-Domain-range/MCH1-8-1-17-Domain-range.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph50.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph60.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = BasicAlgebra/FunctionBasics/FunctionDomainRangeByGraph70.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = BasicAlgebra/FunctionBasics/FunctionValuesByGraph50.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = Library/ASU-topics/setGraphingCalculator/garcia1.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = Library/ASU-topics/setGraphingCalculator/garcia3.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = Library/ASU-topics/setGraphingCalculator/garcia7.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = CollegeAlgebra/FunctionBasics/DomainRange10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = CollegeAlgebra/FunctionBasics/Range30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = CollegeAlgebra/FunctionBasics/Range40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = CollegeAlgebra/FunctionBasics/VariousQuestions10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = Library/ASU-topics/setFirstDerivative/4-2-61.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = Library/ASU-topics/setFirstDerivative/4-2-65.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = Library/ASU-topics/setFirstDerivative/4-2-63.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 21
+source_file = Library/Mizzou/College_Algebra/Functions_Even_Odd_Symmetry/Graph_Even_Odd_Neither.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 22
+source_file = Library/maCalcDB/setAlgebra15Functions/srw2_2_55.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 23
+source_file = Library/maCalcDB/setAlgebra15Functions/srw2_2_53.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 24
+source_file = Library/LoyolaChicago/Precalc/Chap9Sec4/Q14a.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 25
+source_file = Library/ma117DB/set2/srw1_8_63.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 26
+source_file = Library/LoyolaChicago/Precalc/Chap5Sec2/Q03.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 27
+source_file = CollegeAlgebra/Transformations/Symmetry10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 28
+source_file = Library/LoyolaChicago/Precalc/Chap5Sec2/Q30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 29
+source_file = Library/Utah/AP_Calculus_I/set1_Reviews_of_Fundamentals/1210s2p5.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 30
+source_file = Library/LoyolaChicago/Precalc/Chap1Review/Q37.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.4.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.4.def
new file mode 100644
index 0000000000..4cbe843160
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.4.def
@@ -0,0 +1,194 @@
+assignmentType = default
+openDate = 01/04/2016 at 12:00am PST
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 02/02/2016 at 10:00pm PST
+answerDate = 02/02/2016 at 10:00pm PST
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111Header.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = problems like those in Sullivan and Sullivan's 3rd edition Precalculus, section 1.4
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = CollegeAlgebra/FunctionBasics/FunctionGraphs05.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = Library/Mizzou/Algebra/functions_piecewise/evaluate_at_a_point_01.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = Library/Rochester/setAlgebra15Functions/lh2-2_36.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = Library/Utah/Business_Algebra/set4_Quadratic_and_Other_Special_Functions/p02.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = CollegeAlgebra/FunctionBasics/Piecewise10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = Library/LoyolaChicago/Precalc/Chap2Sec3/Connally3-2-3-05-Piecewise-functions.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = Library/LoyolaChicago/Precalc/Chap2Sec3/Q06.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = CollegeAlgebra/FunctionBasics/Piecewise20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = CollegeAlgebra/FunctionBasics/Piecewise30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = Library/LoyolaChicago/Precalc/Chap2Sec3/Connally3-2-3-02-Piecewise-functions.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = Library/LoyolaChicago/Precalc/Chap2Sec3/Q01.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = Library/Mizzou/College_Algebra/Functions_Piecewise/MC_Three_Lines_Const_Left.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = Library/LoyolaChicago/Precalc/Chap2Sec3/Q04.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = Library/Mizzou/Algebra/functions_piecewise/determine_formula_from_graph_01.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = Library/Mizzou/Algebra/functions_piecewise/determine_formula_from_graph_02.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = Library/Mizzou/Algebra/functions_piecewise/app_03.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = Library/Mizzou/Algebra/functions_piecewise/app_02.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = Library/Mizzou/Algebra/functions_piecewise/app_01.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = CollegeAlgebra/Transformations/Symmetry10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = CollegeAlgebra/Transformations/Symmetry1.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.5.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.5.def
new file mode 100644
index 0000000000..aa03f6c3a2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setSullivan_3rd_Section_1.5.def
@@ -0,0 +1,194 @@
+assignmentType = default
+openDate = 01/04/2016 at 12:00am PST
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 02/09/2016 at 10:00pm PST
+answerDate = 02/09/2016 at 10:00pm PST
+enableReducedScoring = N
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = problems like those in Sullivan and Sullivan's 3rd edition Precalculus, section 1.5
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = CollegeAlgebra/Transformations/Shifting10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = CollegeAlgebra/Transformations/Shifting20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = CollegeAlgebra/Transformations/Shifting30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = CollegeAlgebra/Transformations/Shifting40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = CollegeAlgebra/Transformations/Shifting50.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = CollegeAlgebra/Transformations/Shifting60.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = CollegeAlgebra/Transformations/ScalingAndReflecting10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = CollegeAlgebra/Transformations/GeneralTransformations10.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = CollegeAlgebra/Transformations/ScalingAndReflecting20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = CollegeAlgebra/Transformations/ScalingAndReflecting30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = CollegeAlgebra/Transformations/MatchGraphsReflected.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = CollegeAlgebra/Transformations/GeneralTransformations20.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = CollegeAlgebra/Transformations/GeneralTransformations30.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = CollegeAlgebra/Transformations/GeneralTransformations40.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = CollegeAlgebra/Transformations/MatchGraphs2.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = CollegeAlgebra/Transformations/General1.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = CollegeAlgebra/Transformations/General3.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = CollegeAlgebra/Transformations/ChooseGraph2.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = CollegeAlgebra/Transformations/MatchGraphs1.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = CollegeAlgebra/Transformations/Painting.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setTables_and_Graphs.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setTables_and_Graphs.def
new file mode 100644
index 0000000000..23138c6dca
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH111/setTables_and_Graphs.def
@@ -0,0 +1,21 @@
+
+openDate = 06/23/2014 at 12:00am PDT
+dueDate = 07/02/2014 at 10:01pm PDT
+answerDate = 07/02/2014 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH111/GenericMTH111HardcopyHeader.pg
+paperHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH111/GenericMTH111Header.pg
+description = tables; graphs
+problemList =
+CollegeAlgebra/FunctionBasics/FunctionTables30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionOrNotByGraph30.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionGraphs10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph10.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph20.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/FunctionValuesByGraph30.pg, 1, -1, 0
+BasicAlgebra/FunctionBasics/Functions100.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionTables10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionTables20.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/VariousQuestions10.pg, 1, -1, 0
+CollegeAlgebra/FunctionBasics/FunctionGraphs20.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasic_Probability.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasic_Probability.def
new file mode 100644
index 0000000000..3397fa3bf8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasic_Probability.def
@@ -0,0 +1,21 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/26/2015 at 10:02pm PDT
+answerDate = 04/26/2015 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = basic probability calculations
+problemList =
+Statistics/BasicProbability/dueck5_1_2.pg, 1, -1, 0
+Statistics/BasicProbability/dueck5_1_5.pg, 1, -1, 0
+Statistics/BasicProbability/kolossa5.pg, 1, -1, 0
+Statistics/BasicProbability/10Stats_01_Probability.pg, 1, -1, 0
+Statistics/BasicProbability/10Stats_02_Probability.pg, 1, -1, 0
+Statistics/BasicProbability/10Stats_04_Probability.pg, 1, -1, 0
+Statistics/BasicProbability/10Stats_12_Probability.pg, 1, -1, 0
+Statistics/BasicProbability/ur_dis_9_17.pg, 1, -1, 0
+Statistics/BasicProbability/ur_dis_9_19.pg, 1, -1, 0
+Statistics/BasicProbability/ur_pb_5_2.pg, 1, -1, 0
+Statistics/BasicProbability/stat212-HW03-17.pg, 1, -1, 0
+Statistics/BasicProbability/stat212-HW03-20.pg, 1, -1, 0
+Statistics/BasicProbability/stat212-HW04-03.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasics_of_Data.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasics_of_Data.def
new file mode 100644
index 0000000000..fa3d7cab39
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBasics_of_Data.def
@@ -0,0 +1,16 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/08/2015 at 10:00pm PDT
+answerDate = 04/08/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = types of data
+problemList =
+Statistics/TypesOfData/DataTypes1.pg, 1, -1, 0
+Statistics/TypesOfData/DataTypes2.pg, 1, -1, 0
+Statistics/TypesOfData/DataTypes3.pg, 1, -1, 0
+Statistics/TypesOfData/DataTypes4.pg, 1, -1, 0
+Statistics/TypesOfData/DataTypes6.pg, 1, -1, 0
+Statistics/TypesOfData/01Stats_04_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/TypesOfData/stat212-HW01-02.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_02_PictDistnsWGraphs.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBinomial_Distribution.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBinomial_Distribution.def
new file mode 100644
index 0000000000..2fe6394e9e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setBinomial_Distribution.def
@@ -0,0 +1,22 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/13/2015 at 10:00pm PDT
+answerDate = 05/13/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = exponential distribution; geometric distribution; binomial distribution; Normal approximation of the binomial distribution; continuity correction
+problemList =
+Statistics/BinomialDistribution/ur_pb_8_1.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_8_5.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_8_4.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_12_4.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_8_8.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_8_3.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_8_6.pg, 1, -1, 0
+Statistics/BinomialDistribution/stat212-HW07-16.pg, 1, -1, 0
+Statistics/BinomialDistribution/stat212-HW07-15.pg, 1, -1, 0
+Statistics/BinomialDistribution/stat212-HW07-14.pg, 1, -1, 0
+Statistics/BinomialDistribution/stat212-HW07-13.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_12_3.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_12_2.pg, 1, -1, 0
+Statistics/BinomialDistribution/ur_pb_12_1.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setConditional_Probability.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setConditional_Probability.def
new file mode 100644
index 0000000000..aabdb4f3a4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setConditional_Probability.def
@@ -0,0 +1,30 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/03/2015 at 10:02pm PDT
+answerDate = 05/03/2015 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = conditional probability; problems where a tree diagram may help
+problemList =
+Statistics/ProbabilityRulesAndTools/spinner1.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_3_12.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW04-11.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW04-10.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW04-09.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW04-04.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-12.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-11.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-07.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_4_8.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_4_5.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_4_1.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/comprob10.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/Bayes7.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/Bayes3.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/Bayes2.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/Bayes1.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_4_2.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-13.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-15.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW03-14.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/stat212-HW04-20.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDisplaying_Data.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDisplaying_Data.def
new file mode 100644
index 0000000000..ff67863148
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDisplaying_Data.def
@@ -0,0 +1,31 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/08/2015 at 10:02pm PDT
+answerDate = 04/08/2015 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = graphical displays; tabular displays
+problemList =
+Statistics/DisplayingData/gust11.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_10_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_11_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/ur_stt_1_5.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_06_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_07_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_08_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_09_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/stat212-HW02-01.pg, 1, -1, 0
+Statistics/DisplayingData/02Stats_01_DescrData.pg, 1, -1, 0
+Statistics/DisplayingData/stat212-HW01-18.pg, 1, -1, 0
+Statistics/DisplayingData/stat212-HW01-17.pg, 1, -1, 0
+Statistics/DisplayingData/histogram1.pg, 1, -1, 0
+Statistics/DisplayingData/easy_histogram.pg, 1, -1, 0
+Statistics/BasicOneVarStats/CenterMeasureFromStemAndLeaf.pg, 1, -1, 0
+Statistics/DisplayingData/gust30.pg, 1, -1, 0
+Statistics/DisplayingData/BoxPlotPercentBetween.pg, 1, -1, 0
+Statistics/DisplayingData/Boxplot.pg, 1, -1, 0
+Statistics/DisplayingData/FiveNumAndPlot.pg, 1, -1, 0
+Statistics/DisplayingData/FiveNumFromPlot.pg, 1, -1, 0
+Statistics/DisplayingData/01Stats_05_PictDistnsWGraphs.pg, 1, -1, 0
+Statistics/DisplayingData/02Stats_08_DescrData.pg, 1, -1, 0
+Statistics/DisplayingData/02Stats_07_DescrData.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDistribution_of_Sample_Mean.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDistribution_of_Sample_Mean.def
new file mode 100644
index 0000000000..61403272c1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setDistribution_of_Sample_Mean.def
@@ -0,0 +1,23 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/20/2015 at 10:00pm PDT
+answerDate = 05/20/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = distribution of the sample mean
+problemList =
+Statistics/CentralLimitTheorem/ur_pb_11_1.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/di1.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/di2.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/di3.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/di4.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/dueck7_3_4.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_07_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_10_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_13_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/ur_pb_11_5.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/ur_pb_11_6.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-06.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-08.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-09.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-12.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setEmpirical_Rule.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setEmpirical_Rule.def
new file mode 100644
index 0000000000..d8467c22f9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setEmpirical_Rule.def
@@ -0,0 +1,12 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/15/2015 at 10:02pm PDT
+answerDate = 04/15/2015 at 10:02pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = using the Empirical Rule to calculate probabilities and other values
+problemList =
+Statistics/zScoreEmpiricalRule/03Stats_04_NormalDist.pg, 1, -1, 0
+Statistics/DisplayingData/stat212-HW02-03.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/empirical_rule1.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/empirical_rule2.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExpected_Value_and_Variance.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExpected_Value_and_Variance.def
new file mode 100644
index 0000000000..46cf390525
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExpected_Value_and_Variance.def
@@ -0,0 +1,18 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/06/2015 at 10:00pm PDT
+answerDate = 05/06/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = expected value and variance of discrete random variables
+problemList =
+Statistics/ExpectedValueAndVariance/stat212-HW05-05.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/stat212-HW05-06.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/stat212-HW05-08.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/ur_pb_7_9a.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/ur_pb_7_6.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/ur_pb_7_5.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/exval3.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/expectedvalue1.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/ExpectedValue.pg, 1, -1, 0
+Statistics/ExpectedValueAndVariance/stat212-HW05-12.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExperimental_Design.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExperimental_Design.def
new file mode 100644
index 0000000000..61e4f3cc04
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setExperimental_Design.def
@@ -0,0 +1,25 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/26/2015 at 10:01pm PDT
+answerDate = 04/26/2015 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = experiments and observational studies; factors, levels, and treatments
+problemList =
+Statistics/ExperimentalDesign/dueck1_5_1.pg, 1, -1, 0
+Statistics/ExperimentalDesign/dueck1_5_2.pg, 1, -1, 0
+Statistics/ExperimentalDesign/dueck1_5_3.pg, 1, -1, 0
+Statistics/ExperimentalDesign/dueck1_5_4.pg, 1, -1, 0
+Statistics/ExperimentalDesign/dueck1_5_5.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_09_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_08_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_07_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_06_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_05_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_04_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_03_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_02_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/09Stats_01_Experiments.pg, 1, -1, 0
+Statistics/ExperimentalDesign/stat_inference4.pg, 1, -1, 0
+Statistics/ExperimentalDesign/stat_inference1.pg, 1, -1, 0
+Statistics/ExperimentalDesign/kolossa59.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setGeneral_Probability.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setGeneral_Probability.def
new file mode 100644
index 0000000000..846f543806
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setGeneral_Probability.def
@@ -0,0 +1,19 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/03/2015 at 10:00pm PDT
+answerDate = 05/03/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = probability calculations; probability formulas; independent events
+problemList =
+Statistics/ProbabilityRulesAndTools/ur_pb_3_11.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/10Stats_05_Probability.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/10Stats_03_Probability.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/dueck5_2_4.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/10Stats_09_Probability.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/p1.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/dueck5_3_5.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/dueck5_3_6.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/kolossa7.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_4_9.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/kolossa27.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Area_for_Arbitrary_z.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Area_for_Arbitrary_z.def
new file mode 100644
index 0000000000..84723c4a16
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Area_for_Arbitrary_z.def
@@ -0,0 +1,25 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/15/2015 at 10:03pm PDT
+answerDate = 04/15/2015 at 10:03pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = calculating with the Normal distribution when the Empirical Rule does not necessarily apply
+problemList =
+Statistics/zScoresInGeneral/normprob1.pg, 1, -1, 0
+Statistics/zScoresInGeneral/normal_dist3.pg, 1, -1, 0
+Statistics/zScoresInGeneral/normal_dist2.pg, 1, -1, 0
+Statistics/zScoresInGeneral/empirical_rule5.pg, 1, -1, 0
+Statistics/zScoresInGeneral/gust41.pg, 1, -1, 0
+Statistics/zScoresInGeneral/gust37.pg, 1, -1, 0
+Statistics/zScoresInGeneral/dueck6_3_3.pg, 1, -1, 0
+Statistics/zScoresInGeneral/dueck6_3_1.pg, 1, -1, 0
+Statistics/zScoresInGeneral/03Stats_11_NormalDist.pg, 1, -1, 0
+Statistics/zScoresInGeneral/03Stats_10_NormalDist.pg, 1, -1, 0
+Statistics/zScoresInGeneral/03Stats_09_NormalDist.pg, 1, -1, 0
+Statistics/zScoresInGeneral/03Stats_12_NormalDist.pg, 1, -1, 0
+Statistics/zScoresInGeneral/dueck6_2_5.pg, 1, -1, 0
+Statistics/zScoresInGeneral/empirical_rule3.pg, 1, -1, 0
+Statistics/zScoresInGeneral/normal_quartile1.pg, 1, -1, 0
+Statistics/zScoresInGeneral/normprob2.pg, 1, -1, 0
+Statistics/zScoresInGeneral/normprob3.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Distributions.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Distributions.def
new file mode 100644
index 0000000000..42dc527bac
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setNormal_Distributions.def
@@ -0,0 +1,15 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/15/2015 at 10:01pm PDT
+answerDate = 04/15/2015 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = some facts about a Normal distribution
+problemList =
+Statistics/zScoreEmpiricalRule/gust36.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/gust34.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/gust33.pg, 1, -1, 0
+Statistics/zScoresInGeneral/gust40.pg, 1, -1, 0
+Statistics/zScoresInGeneral/03Stats_02_NormalDist.pg, 1, -1, 0
+Statistics/zScoresInGeneral/gust39.pg, 1, -1, 0
+Statistics/zScoresInGeneral/gust38.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setOne_Variable_Calculations.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setOne_Variable_Calculations.def
new file mode 100644
index 0000000000..7495987eee
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setOne_Variable_Calculations.def
@@ -0,0 +1,27 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/08/2015 at 10:01pm PDT
+answerDate = 04/08/2015 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = mean, median, mode; range, quartiles, inter-quartile range, standard deviation
+problemList =
+Statistics/BasicOneVarStats/stat212-HW02-17.pg, 1, -1, 0
+Statistics/BasicOneVarStats/dueck3_1_6.pg, 1, -1, 0
+Statistics/BasicOneVarStats/stat212-HW02-11.pg, 1, -1, 0
+Statistics/BasicOneVarStats/stat212-HW02-10.pg, 1, -1, 0
+Statistics/BasicOneVarStats/stat212-HW02-08.pg, 1, -1, 0
+Statistics/BasicOneVarStats/stat212-HW02-05.pg, 1, -1, 0
+Statistics/BasicOneVarStats/02Stats_02_DescrData.pg, 1, -1, 0
+Statistics/BasicOneVarStats/02Stats_05_DescrData.pg, 1, -1, 0
+Statistics/DisplayingData/02Stats_10_DescrData.pg, 1, -1, 0
+Statistics/DisplayingData/skew_dist1.pg, 1, -1, 0
+Statistics/DisplayingData/03Stats_01_NormalDist.pg, 1, -1, 0
+Statistics/BasicOneVarStats/data2.pg, 1, -1, 0
+Statistics/BasicOneVarStats/MeanStdDev.pg, 1, -1, 0
+Statistics/BasicOneVarStats/FiveNum.pg, 1, -1, 0
+Statistics/BasicOneVarStats/kolossa10.pg, 1, -1, 0
+Statistics/BasicOneVarStats/kolossa8.pg, 1, -1, 0
+Statistics/BasicOneVarStats/dueck3_4_3.pg, 1, -1, 0
+Statistics/BasicOneVarStats/dueck3_2_1.pg, 1, -1, 0
+Statistics/BasicOneVarStats/dueck3_4_4.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setProportion_and_Confidence_Intervals.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setProportion_and_Confidence_Intervals.def
new file mode 100644
index 0000000000..23f866c778
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setProportion_and_Confidence_Intervals.def
@@ -0,0 +1,27 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/27/2015 at 10:00pm PDT
+answerDate = 05/27/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = confidence intervals for population proportion
+problemList =
+Statistics/BasicOneVarStats/19Stats_01_InferencePropn.pg, 1, -1, 0
+Statistics/BasicOneVarStats/kolossa48.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/central_limit_theorem1.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/central_limit_theorem2.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/ur_stt_3_14.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/gust50.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/gust51.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/ur_stt_3_13.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/gust52.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/kolossa49.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/kolossa50.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/kolossa51.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/kolossa55.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/19Stats_04_InferencePropn.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/19Stats_07_InferencePropn.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/19Stats_08_InferencePropn.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/ur_stt_3_15.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/ur_stt_3_18.pg, 1, -1, 0
+Statistics/ConfidenceIntervalsSingleProportion/ur_stt_3_19.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_Issues.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_Issues.def
new file mode 100644
index 0000000000..7a3d29a4c3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_Issues.def
@@ -0,0 +1,25 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/26/2015 at 10:00pm PDT
+answerDate = 04/26/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = surveys; population versus sample; sampling methods; sources of bias; parameters versus statistics
+problemList =
+Statistics/SamplingIssues/08Stats_08_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_07_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_06_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_05_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_03_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_02_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/08Stats_01_Sampling.pg, 1, -1, 0
+Statistics/SamplingIssues/stat212-HW03-02.pg, 1, -1, 0
+Statistics/SamplingIssues/stat212-HW03-01.pg, 1, -1, 0
+Statistics/SamplingIssues/stat_inference2.pg, 1, -1, 0
+Statistics/BasicOneVarStats/kolossa19.pg, 1, -1, 0
+Statistics/SamplingIssues/gust25.pg, 1, -1, 0
+Statistics/SamplingIssues/gust9.pg, 1, -1, 0
+Statistics/SamplingIssues/dueck1_4_1.pg, 1, -1, 0
+Statistics/SamplingIssues/dueck1_4_2.pg, 1, -1, 0
+Statistics/SamplingIssues/dueck1_4_3.pg, 1, -1, 0
+Statistics/SamplingIssues/dueck1_4_5.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_and_Central_Limit_Theorem.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_and_Central_Limit_Theorem.def
new file mode 100644
index 0000000000..be0d86254a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSampling_and_Central_Limit_Theorem.def
@@ -0,0 +1,19 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/20/2015 at 10:01pm PDT
+answerDate = 05/20/2015 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = parameters versus statistics; the Central Limit Theorem
+problemList =
+Statistics/BasicOneVarStats/kolossa47.pg, 1, -1, 0
+Statistics/BasicOneVarStats/11Stats_01_SamplingDistns.pg, 1, -1, 0
+Statistics/BasicOneVarStats/11Stats_02_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_03_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_05_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_06_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/11Stats_08_SamplingDistns.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/ur_pb_11_4.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-03.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-04.pg, 1, -1, 0
+Statistics/CentralLimitTheorem/stat212-HW07-05.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setScatterplots_and_Linear_Regression.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setScatterplots_and_Linear_Regression.def
new file mode 100644
index 0000000000..590b6a6acc
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setScatterplots_and_Linear_Regression.def
@@ -0,0 +1,33 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 06/10/2015 at 10:00pm PDT
+answerDate = 06/10/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = scatter plots; correlation; least-squares regression lines
+problemList =
+Statistics/ScatterplotsAndCorrelation/gust24.pg, 1, -1, 0
+Statistics/ScatterplotsAndCorrelation/Scatterplot.pg, 1, -1, 0
+Statistics/ScatterplotsAndCorrelation/ur_stt_6_2.pg, 1, -1, 0
+Statistics/ScatterplotsAndCorrelation/ur_stt_6_1.pg, 1, -1, 0
+Statistics/LinearRegression/gust16.pg, 1, -1, 0
+Statistics/LinearRegression/lines5.pg, 1, -1, 0
+Statistics/LinearRegression/lines4.pg, 1, -1, 0
+Statistics/LinearRegression/lines3.pg, 1, -1, 0
+Statistics/LinearRegression/lines2.pg, 1, -1, 0
+Statistics/LinearRegression/lines1.pg, 1, -1, 0
+Statistics/LinearRegression/dueck4_2_2.pg, 1, -1, 0
+Statistics/LinearRegression/dueck4_2_4.pg, 1, -1, 0
+Statistics/LinearRegression/gust17.pg, 1, -1, 0
+Statistics/LinearRegression/gust18.pg, 1, -1, 0
+Statistics/LinearRegression/gust19.pg, 1, -1, 0
+Statistics/LinearRegression/gust22.pg, 1, -1, 0
+Statistics/LinearRegression/gust23.pg, 1, -1, 0
+Statistics/LinearRegression/gust32.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_01_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_02_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_03_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_04_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_08_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_09_Regression.pg, 1, -1, 0
+Statistics/LinearRegression/05Stats_12_Regression.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSignificance_Testing.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSignificance_Testing.def
new file mode 100644
index 0000000000..767c639002
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setSignificance_Testing.def
@@ -0,0 +1,28 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 06/03/2015 at 10:00pm PDT
+answerDate = 06/03/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = significance testing for hypotheses about a population proportion; significance levels; type I and type II error
+problemList =
+Statistics/SignificanceTesting/kolossa54.pg, 1, -1, 0
+Statistics/SignificanceTesting/kolossa56.pg, 1, -1, 0
+Statistics/SignificanceTesting/kolossa57.pg, 1, -1, 0
+Statistics/SignificanceTesting/kolossa58.pg, 1, -1, 0
+Statistics/SignificanceTesting/19Stats_03_InferencePropn.pg, 1, -1, 0
+Statistics/SignificanceTesting/19Stats_05_InferencePropn.pg, 1, -1, 0
+Statistics/SignificanceTesting/19Stats_09_InferencePropn.pg, 1, -1, 0
+Statistics/SignificanceTesting/19Stats_10_InferencePropn.pg, 1, -1, 0
+Statistics/SignificanceTesting/19Stats_12_InferencePropn.pg, 1, -1, 0
+Statistics/SignificanceTesting/ur_stt_4_4.pg, 1, -1, 0
+Statistics/SignificanceTesting/dueck9_3_1.pg, 1, -1, 0
+Statistics/SignificanceTesting/kolossa30.pg, 1, -1, 0
+Statistics/SignificanceTesting/kolossa33.pg, 1, -1, 0
+Statistics/SignificanceTesting/14Stats_07_InferenceIntro.pg, 1, -1, 0
+Statistics/SignificanceTesting/14Stats_08_InferenceIntro.pg, 1, -1, 0
+Statistics/SignificanceTesting/di12.pg, 1, -1, 0
+Statistics/SignificanceTesting/di13.pg, 1, -1, 0
+Statistics/SignificanceTesting/di14.pg, 1, -1, 0
+Statistics/SignificanceTesting/dueck9_2_1.pg, 1, -1, 0
+Statistics/SignificanceTesting/ur_stt_4_10.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setVenn_Diagrams_and_Sample_Spaces.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setVenn_Diagrams_and_Sample_Spaces.def
new file mode 100644
index 0000000000..5a131671d1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setVenn_Diagrams_and_Sample_Spaces.def
@@ -0,0 +1,16 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 05/03/2015 at 10:01pm PDT
+answerDate = 05/03/2015 at 10:01pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = probability problems where it may help to use a Venn diagram or illustrate the sample space rather than use probability formulas
+problemList =
+Statistics/ProbabilityRulesAndTools/ur_pb_3_6.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_3_4.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/ur_pb_3_2.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/sspaces1.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/10Stats_12_Probability.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/dueck5_2_2.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/dueck5_2_5.pg, 1, -1, 0
+Statistics/ProbabilityRulesAndTools/compprob4.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setz_Score_Basics.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setz_Score_Basics.def
new file mode 100644
index 0000000000..47d04a4e4f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH243/setz_Score_Basics.def
@@ -0,0 +1,13 @@
+
+openDate = 03/30/2015 at 12:00am PDT
+dueDate = 04/15/2015 at 10:00pm PDT
+answerDate = 04/15/2015 at 10:00pm PDT
+paperHeaderFile = PCCDefaultProblemSets/HardcopyHeaders/MTH243/GenericMTH243HardcopyHeader.pg
+screenHeaderFile = PCCDefaultProblemSets/OnscreenHeaders/MTH243/GenericMTH243Header.pg
+description = calculating and interpreting z-scores
+problemList =
+Statistics/zScoreEmpiricalRule/03Stats_05_NormalDist.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/normprob6.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/kolossa20.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/03Stats_07_NormalDist.pg, 1, -1, 0
+Statistics/zScoreEmpiricalRule/03Stats_06_NormalDist.pg, 1, -1, 0
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz.def b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz.def
new file mode 100644
index 0000000000..bea0af5ad0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz.def
@@ -0,0 +1,224 @@
+assignmentType = gateway
+openDate = 06/08/2020 at 12:00am PDT
+reducedScoringDate = 12/31/1969 at 04:00pm PST
+dueDate = 06/11/2020 at 10:00pm PDT
+answerDate = 06/11/2020 at 10:00pm PDT
+enableReducedScoring = N
+paperHeaderFile = defaultHeader
+screenHeaderFile =
+attemptsPerVersion = 1
+timeInterval = 0
+versionsPerInterval = 0
+versionTimeLimit = 3600
+problemRandOrder = 1
+problemsPerPage = 1
+hideScore = BeforeAnswerDate
+hideScoreByProblem = N
+hideWork = BeforeAnswerDate
+capTimeLimit = 0
+description = A 20-question quiz on the derivative formulas for elementary functions. Does not include sum/difference/product/quotient/chain rules.
+restrictProbProgression = 0
+emailInstructor = 0
+
+problemListV2
+problem_start
+problem_id = 1
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/constant.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 2
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/power_positive_integer.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 3
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/power_negative_integer.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 4
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/power_fraction.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 5
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/power_reciprocal.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 6
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/squareroot.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 7
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/sine.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 8
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/cosine.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 9
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/tangent.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 10
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/secant.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 11
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/cosecant.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 12
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/cotangent.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 13
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/arctangent.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 14
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/arcsine.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 15
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/arcsecant.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 16
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/exp.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 17
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/exp-base-integer.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 18
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/natural-log.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 19
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/absolute-value.pg
+value = 1
+max_attempts = -1
+showMeAnother = -1
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 0
+problem_end
+problem_start
+problem_id = 20
+source_file = PCCSetDefinitions/MTH251/setDerivatives_Quiz/nth-root.pg
+value = 1
+max_attempts = -1
+showMeAnother = 0
+prPeriod = -1
+counts_parent_grade = 0
+att_to_open_children = 1
+problem_end
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/absolute-value.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/absolute-value.pg
new file mode 100644
index 0000000000..aa616bb848
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/absolute-value.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("abs($x)");
+$df = $f->D($x);
+$df->{test_at} = [[random(-5,-1,0.01)],[random(1,5,0.01)]];
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arccosine.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arccosine.pg
new file mode 100644
index 0000000000..c1049278ba
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arccosine.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+Context()->variables->set($x=>{limits=>[-1,1]});
+$f = Formula("cos^-1($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsecant.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsecant.pg
new file mode 100644
index 0000000000..c3d1623c15
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsecant.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+Context()->variables->set($x=>{limits=>[1,10]});
+$f = Formula("sec^-1($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsine.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsine.pg
new file mode 100644
index 0000000000..87773bc90f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arcsine.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+Context()->variables->set($x=>{limits=>[-1,1]});
+$f = Formula("sin^-1($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arctangent.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arctangent.pg
new file mode 100644
index 0000000000..2f0922d51b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/arctangent.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("tan^-1($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/constant.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/constant.pg
new file mode 100644
index 0000000000..e3e7a8cc44
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/constant.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula(random(11,99,1));
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosecant.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosecant.pg
new file mode 100644
index 0000000000..83bd47284d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosecant.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("csc($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosine.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosine.pg
new file mode 100644
index 0000000000..03d03cc001
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cosine.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("cos($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cotangent.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cotangent.pg
new file mode 100644
index 0000000000..1ad507b7ab
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/cotangent.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("cot($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp-base-integer.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp-base-integer.pg
new file mode 100644
index 0000000000..56ae67d3de
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp-base-integer.pg
@@ -0,0 +1,87 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$b = random(2,9,1);
+$f = Formula("($b)^($x)");
+Context()->flags->set(reduceConstantFunctions=>0);
+$df = Formula("ln($b) ($b)^($x)");
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp.pg
new file mode 100644
index 0000000000..773d1c8464
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/exp.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("e^($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/natural-log.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/natural-log.pg
new file mode 100644
index 0000000000..079462a3ed
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/natural-log.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("ln($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/nth-root.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/nth-root.pg
new file mode 100644
index 0000000000..e067d62509
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/nth-root.pg
@@ -0,0 +1,90 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "parserRoot.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Fraction");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$n = random(3,9,1);
+Context()->variables->set($x=>{limits=>[0.1,10]});
+parser::Root->Enable;
+$f = Formula("root($n,$x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_fraction.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_fraction.pg
new file mode 100644
index 0000000000..cb8cb2f916
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_fraction.pg
@@ -0,0 +1,89 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "PGchoicemacros.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Fraction");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+($m,$n) = num_sort((1..9)[NchooseK(9,2,1)]);
+Context()->variables->set($x=>{limits=>[0.1,10]});
+$f = Formula("$x^($m/$n)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_negative_integer.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_negative_integer.pg
new file mode 100644
index 0000000000..ac57c4eb3c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_negative_integer.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$n = random(5,20,1);
+$f = Formula("$x^(-$n)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_positive_integer.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_positive_integer.pg
new file mode 100644
index 0000000000..c484934f5b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_positive_integer.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$n = random(5,20,1);
+$f = Formula("$x^$n");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_reciprocal.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_reciprocal.pg
new file mode 100644
index 0000000000..ef878f4880
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/power_reciprocal.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$n = random(5,20,1);
+$f = Formula("1/$x^$n");
+$df = Formula("-$n/$x^($n+1)");
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/secant.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/secant.pg
new file mode 100644
index 0000000000..43fbd63bf0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/secant.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("sec($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/sine.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/sine.pg
new file mode 100644
index 0000000000..50ee9983ec
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/sine.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("sin($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/squareroot.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/squareroot.pg
new file mode 100644
index 0000000000..224c08e8f3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/squareroot.pg
@@ -0,0 +1,86 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+Context()->variables->set($x=>{limits=>[0.1,10]});
+$f = Formula("sqrt($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/tangent.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/tangent.pg
new file mode 100644
index 0000000000..c1005d9cb7
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/MTH251/setDerivatives_Quiz/tangent.pg
@@ -0,0 +1,85 @@
+## DBsubject('Calculus - single variable')
+## DBchapter('Differentiation')
+## DBsection('Derivatives of polynomial and power functions')
+## Date('6/7/2020')
+## Author('Alex Jordan')
+## Institution('Portland Community College')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+############################################################
+# Header
+############################################################
+TEXT(beginproblem());
+
+
+
+############################################################
+# PG Setup
+############################################################
+
+Context("Numeric");
+$x = list_random('x','y','z','t','p');
+Context()->variables->are($x=>'Real');
+
+$fname = list_random('f','g','h','k','q');
+
+$f = Formula("tan($x)");
+$df = $f->D($x);
+
+Context()->texStrings;
+
+$dfnotation = list_random(
+ "$fname'($x)",
+ "\frac{d$fname}{d$x}",
+ "\frac{d}{d$x}${fname}($x)",
+ "\frac{d}{d$x}\left($f\right)",
+);
+
+$question = ($dfnotation eq "\frac{d}{d$x}\left($f\right)") ?
+ "Find [`$dfnotation`]." :
+ "If [`$fname`] is defined by [`$fname($x)=$f`], what is [`$dfnotation`]?";
+
+Context()->normalStrings;
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+
+[$question]**
+
+[_]{$df}{20}
+
+END_PGML
+
+
+############################################################
+# Solution
+############################################################
+
+#BEGIN_PGML_SOLUTION
+
+#END_PGML_SOLUTION
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation01.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation01.pg
new file mode 100644
index 0000000000..0dcdc156d4
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation01.pg
@@ -0,0 +1,49 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("LimitedNumeric");
+
+
+
+######################################
+
+
+BEGIN_PGML
+## Entering an Answer and Reading Feedback ##
+
+Hello and welcome to the WeBWorK orientation.
+
+Most of the time, you will be using WeBWorK to submit answers to math questions. Answers will typically either be numbers or expressions with variables.
+
+Let's start off simple. What is the value of [`2+2`] ? Type your answer in the box below, but be patient and keep reading below.
+
+ [_______]{Real(4)}
+
+Below, you have two buttons available: _Preview Answers_ and _Submit Answers_.
+1. Push the _Submit Answers_ button, and see that you have the right answer.
+2. Try typing in a number that is wrong and pushing the _Submit Answers_ button.
+3. Sometimes you might completely misunderstand a question and your answer is way off base. WeBWorK will try to make you see this. Try typing in the expression [`x`] as the answer and pushing the _Submit Answers_ button. In the box above, _read the feedback message_ that arises. Do you understand what that feedback message is saying and how it applies to your answer?
+
+As you use WeBWorK and inevitably get some questions wrong on your first attempt, make sure that you read the feedback messages.
+
+If you are ready, move on to the next problem in this orientation. You my either use the _Next_ button above, or directly click on _Problem 2_ to the left.
+
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation02.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation02.pg
new file mode 100644
index 0000000000..25b1c089de
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation02.pg
@@ -0,0 +1,108 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"contextFraction.pl",
+"contextLimitedRadical.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Fraction");
+$u = random(1,3);
+$v = random(4,10);
+$w = Fraction($u,$v);
+
+$a = random(2,8,1);
+$b = random(2,8,1);
+$c = random(2,8,1);
+$d = $a*$b+$c;
+
+Context("Numeric");
+Context()->flags->set(reduceConstantFunctions=>0);
+$e = Compute("$a/x");
+$h = Formula("sqrt(x)");
+$h->{limits} = [2,5];
+
+Context("Numeric");
+Context()->variables->are(k=>'Real');
+$f = Compute("k^$a");
+
+Context("Numeric");
+Context()->variables->are(K=>'Real');
+$g = Compute("$b^K");
+
+Context("LimitedRadical");
+$i = Formula("root(4,11)");
+
+
+######################################
+
+
+BEGIN_PGML
+## Basic Operations ##
+
+The four basic arithmetic operations are:
+ [`+, -, \times, \div`]
+
+Each of these has a corresponding character on the keyboard. The first two are found in the upper right area of most keyboards. For [`\times`] (which is also often denoted with [`\cdot`] on paper), we use the asterisk character:
+: \*
+This is the shift-8 key on most keyboards.
+
+Try literally entering [`[$a]\cdot[$b]+[$c]`] by typing it exactly as:
+: [$a]\*[$b]+[$c]
+
+ [_________]{Compute($a*$b+$c)->cmp(formatStudentAnswer=>'parsed')}
+
+Of course you could also simplify this to [`[$d]`].
+
+Division is typed using the slash character:
+: /
+which is in the lower right of most keyboards. Try entering the following:
+
+
+ [::[$w]=::] [____]{$w}
+
+ [::[$e]=::] [_________]{$e}
+
+Raising to a power is universally denoted with the caret symbol:
+: [$CARET]
+This is usually shift-6 on a keyboard. Try entering the following:
+
+ [::[$f]=::] [____]{$f}
+
+ [::[$g]=::] [____]{$g}
+
+This is a good time to point out that _capitalization matters_. In math, [`k\neq K`]. See what happens if you use the wrong capitalization in the above answers. If you are not getting one of these answers correct, is it because of capitalization?
+
+Another common basic operation is the square root, which is denoted with [`\sqrt{\phantom{x}}`] on paper. There is no square root character on most keyboards, so we do something else with this operation. We use:
+: sqrt
+and parentheses, as in:
+: sqrt(x)
+for [`\sqrt{x}`].
+
+Try entering the following:
+
+ [::[$h]=::] [_________]{$h}
+
+[%We also sometimes use radicals of higher order. For example the cube root of [`x`] is denoted [`\sqrt[3]{x}`], and this would be typed as:
+: root(3,x)
+This will only be an option in problems that are potentially expecting you to use it. Try entering the following:%]
+
+[% [``[$i]=``] [_________]{$i}%]
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg
new file mode 100644
index 0000000000..a849a5f924
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg
@@ -0,0 +1,61 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"parserNumberWithUnits.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Numeric");
+Context()->variables->add(t=>'Real');
+
+$a = random(2,8,1);
+$b = random(2,8,1);
+$c = random(2,8,1);
+
+$f = Compute("sqrt($a x+ $b)");
+$f->{limits} = [-$b/$a + 1, -$b/$a + 10];
+
+$g = Compute("(t-$b)/(4t+1)");
+
+######################################
+
+
+BEGIN_PGML
+## MathQuill ##
+
+In answer blanks, as you type, math expressions are built. For example if you type the characters [|5^2t|]* it will create [`5^{2t}`]. That is, it will put [|2t|]* up in the exponent and you don't have to see the [|^|]* character.
+
+Also when your cursor is in an answer blank, a math palette tool is available off to the side of the screen. This can help you construct math expressions.
+
+For practice, try typing or using the palette tool to enter these expressions:
+
+ [`5^{2t}=`] [_____]{Compute("5^(2t)")}
+
+ [``\frac{1}{[$a](x+[$c])}=``] [__________]{Compute("1/($a(x+[$c]))")}
+
+ [``\sqrt{[$a] x + [$b]}=``] [__________]{$f}
+
+ [``\frac{t-[$b]}{4t+1}=``] [__________]{$g}
+
+Sometimes you really want an answer to be exactly the way you typed it and not automatically turned into a nice-looking math expression. If this is the case, use the "Tt" button on the palette tool. Or you can type the " key. Either way, you enter what is called "text mode" and whatever you type in the answer blank will be left as it is. Try:
+
+ [``23\,\text{degC}=``] [__________]{NumberWithUnits("23 degC")}
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg.bak b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg.bak
new file mode 100644
index 0000000000..2a93126a7f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation03.pg.bak
@@ -0,0 +1,65 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Numeric");
+Context()->variables->add(t=>'Real');
+
+$a = random(2,8,1);
+$b = random(2,8,1);
+$c = random(2,8,1);
+
+$f = Compute("sqrt($a x+ $b)");
+$f->{limits} = [-$b/$a + 1, -$b/$a + 10];
+
+$g = Compute("(t-$b)^(4t+1)");
+$g->{limits} = [$b + 1, $b + 10];
+
+######################################
+
+
+BEGIN_PGML
+## Preview Answer and Order of Operations ##
+
+WeBWorK understands the order of operations very well, and interprets what you type according to them. Sometimes students will intend to enter an expression like [`5^{2t}`], but not use the right order of operations when typing. WeBWorK wants you to confirm that what you intended to enter is what you actually entered, and so it provides an *Answer Preview* column when you submit any answers. For instance, try the following:
+
+ [`5^{2t}=`] [_____]{Compute("5^(2t)")}
+
+but try entering it as:
+: 5^2t
+which is incorrect. Go ahead and push the _Submit Answers_ button. Note how the *Answer Preview* column is showing you what WeBWorK thinks you entered. It treats the [$CARET] as higher priority than the multiplication, and computes [`5^2`]. _Then_ it multiplies this by [`t`]. So it sees [`5^2t`]. The correct way to enter [`5^{2t}`] is:
+: 5^(2t)
+using parentheses to change the priorities according to the order of operations.
+
+The lesson is that if your answer is marked incorrect, along with looking for any feedback messages, you should also look at the *Answer Preview* column and you may see that you have not used grouping symbols well.
+
+Try entering the following correctly:
+
+ [``\frac{1}{[$a](x+[$c])}=``] [__________]{Compute("1/($a(x+[$c]))")}
+
+ [``\sqrt{[$a] x + [$b]}=``] [__________]{$f}
+
+ [``(t-[$b])^{4t+1}=``] [__________]{$g}
+
+When you have an answer typed into an answer blank and you hit the _enter/return_ key on your keboard, the effect is the same as pushing the *Answer Preview* button. It does _not_ actually submit your answer to see if it is right or wrong; it only lets you see how WeBWorK would interpret what you have typed.
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation04.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation04.pg
new file mode 100644
index 0000000000..8523ababad
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation04.pg
@@ -0,0 +1,69 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"contextFraction.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("LimitedFraction");
+Context()->flags->set(allowMixedNumbers=>0);
+
+$a = Fraction(1,3);
+
+Context("Numeric");
+
+$b = Real("$a");
+
+Context("LimitedNumeric");
+Context()->constants->remove("pi");
+
+$c = Real(1/9);
+$d = sqrt(110);
+$e = 3.1415926;
+$f = Real(5/2);
+
+######################################
+
+
+BEGIN_PGML
+## Decimal Approximations to Answers ##
+
+Imagine that the true answer to a problem is [:1/3:]. As you may know, this fraction is equal to the decimal number [`0.3333\ldots`], which is also written as [`0.\overline{3}`].
+
+Sometimes, your instructor will require you to enter the answer _exactly_. In that case your only option is to enter [:1/3=:] [_________]{$a}.
+
+Sometimes, you will be allowed to get away with decimal _approximations_ to the real answer. So for instance, in _this_ answer blank we can get away with typing [`0.3333`] even though that is slightly different from the true value: [:1/3=:] [_________]{$b}.
+
+Here is what you need to know: _If_ a decimal approximation is acceptable at all, then your answer will be counted correct if you have the first _three_ significant digits correct.
+
+Take out a calculator and enter decimal approximations for these values. At first, try rounding your calculator's outputs to only two significant digits. Then move up to three. Three significant digits will be required for each and every one of these to count as correct. _These questions are trying to teach you that you should be in the habit of using three significant digits when entering decimal answers._
+
+ [`1/9 =0.11111111\ldots=`] [_________]{$c} (Try typing [|0.1|]*, [|0.11|]*, [|0.111|]*, etc. What is counted correct?)
+
+ [`\sqrt{110} =10.4880885\ldots=`] [_________]{$d} (Try typing [|10|]*, [|10.4|]*, [|10.5|]*, etc. What is counted correct?)
+
+ [`0.002038 =`] [_________]{0.002038} (Try typing [|0.002|]*, [|0.0020|]*, [|0.00203|]*, [|0.00204|]*, etc. What is counted correct?)
+
+ [`20380.2 =`] [_________]{20380.2} (Try typing [|20000|]*, [|20300|]*, [|20400|]*, etc. What is counted correct?)
+
+With the third question, students sometimes feel they should be able to get away with [`0.002`], since that is only off by a tiny amount of [`0.000038`]. However, percentage-wise this would be off by over [`1.8%`], which is generally considered unacceptable. By always answering using three significant digits, your percentage error will always be very small.
+
+With the last question, students mistakenly believe they must enter the entire number. While that's fine, it's OK to round to three significant digits. So you may simply enter [`20400`].
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation05.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation05.pg
new file mode 100644
index 0000000000..1ab8a9ca7c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation05.pg
@@ -0,0 +1,70 @@
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "contextLimitedRadical.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+$a = random(2,9,1);
+$b = random(2,9,1);
+$c = Real("$a+$b");
+
+
+Context("LimitedNumeric");
+$d = random(2,9,1);
+$e = random(2,9,1);
+$f = Real($d+$e);
+
+Context("LimitedFraction");
+$g = Fraction(1,3);
+
+Context("LimitedRadical");
+$h = Formula("2 sqrt(3)");
+
+
+######################################
+
+
+BEGIN_PGML
+## Simplifying Answers ##
+
+Your instructor may require you to simplify answers sometimes, and other times simplifying might not be the point of the exercise. For instance, in the following:
+ [`[$a]+[$b]=`] [_____]{$c}
+
+You could certainly enter [`[$c]`]. But does it surprise you to learn that you could literally enter [`[$a]+[$b]`] and have it counted correct? In this answer blank, you could enter virtually any expression that would works out to [`[$c]`]. Try finding other creative ways to enter this answer.
+
+On the other hand, here that ability has been turned off; try entering the answer unsimplified:
+ [`[$d]+[$e]=`] [_____]{$f}
+
+Are you paying attention to the feedback messages that WeBWorK gives you? Try entering the following _without_ simplifying:
+ [``\frac{2}{6}=``] [_____]{$g}
+and WeBWorK will tell you that your answer has not yet been simplified.
+
+You might know that [`\sqrt{12}`] can be simplified to [`2\sqrt{3}`]. (This is considered simpler because what is inside the radical is smaller.) But try entering [`\sqrt{12}`] without any simplification and seeing what the feedback message is:
+ [`\sqrt{12}=`] [_____]{$h}
+
+
+Of course, there will be plenty of times when your instructor will not require answers like these to be simplified. You should just be aware that it is a possibility, and you should monitor WeBWorK's feedback messages. When you are ready, move on to the next question.
+
+
+
+
+END_PGML
+
+
+######################################
+
+
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation06.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation06.pg
new file mode 100644
index 0000000000..b653e0c566
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation06.pg
@@ -0,0 +1,84 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+
+$a = random(5,10,1);
+
+
+######################################
+
+
+BEGIN_PGML
+## Navigating WeBWorK ##
+
+[@ if($envir{QUIZ_PREFIX}) {'*Important:* This page is informational only and features described applies mostly to homework (not used in this course) rather than quizzes.'} @]**
+
+That's enough for now about how you enter your answers. Let's spend some time learning how to navigate WeBWorK so that you can use it more effectively.
+
+By now you've had experience with the _Next_ button above. The _Previous_ button takes you to the previous problem, and the _Problem List_ button takes you back to the beginning of this problem set.
+
+At the bottom of a problem screen, you may see how many times you have attempted a problem, and how many times you have left. Sometimes you also see whether or not partial credit is possible, and if so how much do you have. This particular problem is lying about how many attempts you have used. How many attempts does it _say_ that you have used so far? [______]{Compute($a)}
+
+On the left of the screen there are three panels. The middle panel is just a quick way for you to jump to other problems in the problem set. The top panel lets you find your way to
+* *Homework Sets*: this is the screen you were at when you first logged in. It shows you all of the homework sets that have been assigned to you and when they are due.
+* *User Settings*:
+ * If you would like to change your password, go here.
+ * You may also change your contact email to something that you find more convenient here. However the law requires that your instructor is only permitted to communicate with you about grades using your official school email address. So we recommend that you leave your email address alone. Check your school email address often.
+ * There are some other settings that you can save for your account.
+* *Grades*: Go here to see how you have performed in your assignments.
+* *Achievements*: If your instructor is using Math Achievements, then you can earn badges and level up as you complete homework problems. Go here to view your level and badges. Also, if you have earned any items that can be applied to your homework sets, you will see them here.
+
+Also in *User Settings*, you may choose either to see or not see your previously entered answers, and choose whether or not to enable the math editing tool (this is only an option if the instructor has turned on that tool in the first place).
+
+When you are ready, move on to the next problem.
+
+
+
+END_PGML
+
+
+######################################
+
+install_problem_grader(sub {
+ my ($result,$state) = std_problem_grader(@_);
+ my $time = time();
+ my $open = $time >= $openDate && $time <= $dueDate;
+ my $submit = $inputs_ref->{submitAnswers};
+ my $attempts = $state->{num_of_correct_ans} + $state->{num_of_incorrect_ans};
+ $attempts-- if $attempts && !$submit;
+
+ my @msg = ();
+ push(@msg,"Your score was ".($open ? "" : "not "). "recorded.") if $submit;
+ push(@msg,"You have attempted this problem $a time".($a== 1 ? "." : "s."));
+ push(@msg,"You have unlimited attempts remaining.");
+ if ($submit) {
+ if ($result->{score} == 1) {
+ push(@msg,"You received a score of 100% for this attempt.");
+ push(@msg,"Your overall recorded score is 100%.");
+ } else {
+ push(@msg,"Your answers are not yet fully correct.");
+ }
+ }
+ unless ($open) {
+ push(@msg,"The homework set is not yet open.") if $time < $openDate;
+ push(@msg,"The homework set is closed.") if $time > $dueDate;
+ }
+
+ $state->{state_summary_msg} = join('
',@msg);
+ return ($result,$state);
+ });
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation07.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation07.pg
new file mode 100644
index 0000000000..57707ba5e1
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation07.pg
@@ -0,0 +1,55 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+
+
+
+######################################
+
+
+BEGIN_PGML
+## Seeking Help ##
+
+The primary purpose of WeBWorK is that it allows you to practice some math problems and immediately get feedback about your answers. This is much better than waiting a full week to learn about your answers from written homework. WeBWorK will even often give you _intelligent_ feedback if you are reading the feedback messages.
+
+If you become stuck on a problem, cannot get the answer correct, do not understand what the problem asks, think there is a bug with the problem, or all of the above, then...
+1. Check that you have read any feedback messages WeBWorK is giving, and that you have not rounded your answer too much.
+2. Reread the problem carefully to see if there are any instructions that you did not notice.
+3. Check your textbook and notes to see if you can learn from them.
+4. There is an *Email Instructor* button below: use it.
+
+When you use this button, you should write a message to your instructor (or TA) explaining what you have tried. It will help a lot if you write down the steps of the math that you have worked out too. You can even attach a file, for example a picture of your hand-written work. Then the instructor gets your message along with a link to the problem from _your perspective_, and they can also see all of your previously attempted answers. This way your instructor can write you back with good help/hints.
+
+Writing for help is OK! Yes, it is last on this list, but that is just because it is good for you to try to be self sufficient. There is a lot you can gain from WeBWorK's feedback, your textbook, and your notes. If you feel it is appropriate to contact your instructor for help, then do so!
+
+This answer blank is expecting a certain answer: [___________]{Real(112358)->cmp(tolType=>'absolute',tolerance=>0.1)}. The only way to get the answer is to use the *Email Instructor* button and politely ask for the answer to this Orientation Problem. The instructor will reply to your email as soon as they are able to, which may be the following day. (Instructors: you can check the box to show "Correct Answers" and then use the "Check" button to see the answer and write a response to your student.)
+
+If you don't get a reply within 12 hours, please check your SPAM folder. Google mail will sometimes direct WeBWorK emails to SPAM. This only happens to about 1 in 30 people, but it does happen. If this happens to you just click the option telling Google mail that email from that sender is not SPAM and you should be good for the rest of the term. If you do not find anything in your SPAM folder either, contact your instructor with email outside of WeBWorK.
+
+
+
+
+
+
+
+END_PGML
+
+
+######################################
+
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation08.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation08.pg
new file mode 100644
index 0000000000..bab282a5d9
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation08.pg
@@ -0,0 +1,44 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+$a = random(1000,9999,0.1);
+
+
+
+######################################
+
+
+BEGIN_PGML
+## Printing off a Homework Set ##
+
+For many reasons, you might not be able to work through an entire problem set while sitting online in front of a computer screen. From the *Homework Sets* page, you may push the button to the left of a homework set to download a PDF version of the homework set.
+
+This file is something that you can read onscreen while you are not online. You can even print it off and take it to a tutoring center or your favorite coffee shop to work on. (Please do not waste paper by actually printing an assignment unless you feel that it is necessary.)
+
+To make sure that you understand how this works, download the PDF version of this Orientation assignment. At the end of this problem in the PDF, you will find the answer to this answer blank: [___________]{Compute("$a")->cmp(tolType=>'absolute',tolerance=>0.1)}
+
+
+END_PGML
+
+if ($displayMode eq 'TeX') {
+TEXT("The answer is $a.");
+}
+
+######################################
+
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation09.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation09.pg
new file mode 100644
index 0000000000..1c5915ef55
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation09.pg
@@ -0,0 +1,57 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Interval");
+Context()->variables->add(a=>'Real',b=>'Real');
+
+
+
+######################################
+
+
+BEGIN_PGML
+## Miscellaneous ##
+
+Here are more WeBWorK features.
+
+* After an assignment is due, you typically will be able to see the answers to all questions. You must go back into the problem set and check the _Show correct answer_ box. This box is not visible before the due date, and quite possibly for just a little while after the due date too.
+* Some problems have been coded with walk-through solutions. You will not be able to see these until it's also possible for you to see the answers.
+* Some problems have been coded with hints. You will not be able to see these until you've used some number of attempts on the problem.
+* Once the due date has passed, you can still enter answers in the answer blanks and WeBWorK will still give you the same feedback; just not for credit.
+* Captial letters are different than lowercase letters when it comes to variables. In an answer to a WeBWorK question, [`\pi r^2`] might be correct while [`\pi R^2`] is not.
+* When you click on a problem set, there is set-specific information from your instructor in a panel to the right. Always read this before you begin the problems set. It may give you important hints.
+* Repeated guessing is not helpful. If you have gotten a problem incorrect several times, you should ask for help. That's what your instructor, TAs, and tutors are here for.
+* Have we mentioned enough times that you should read the feedback messages?
+* For decimal answers, get in the habit of using three significant digits.
+* If you want to enter [`\pi`], you could type [|pi|]*, paste the π character, press [|option-p|]* on a Mac, or use the palette tool.
+* If you want to enter [`\infty`], you could type [|inf|]*, type [|infinity|]*, paste the ∞ character, press [|option-%|]* on a Mac, or use the palette tool.
+* All of your submissions are permanently recorded. That means you can log off at any time and all of your work will be saved. So you can do assignments in little bits at a time and work out of order if you like.
+* WeBWorK can be used on tablets and smartphones.
+* Most problems are coded with randomization. This means that while you and your classmate may have the same skeleton of a problem, the numbers invloved are different. This encourages you to teach each other the _process_ of answering a problem without being able to simply share the answers.
+
+The collection of all of the numbers between [`0`] and [`\pi`] including the endpoints is represented as [`[0,\pi]`] in interval notation. Practice entering [`[0,\pi]`] in the answer blank: [_____]{Compute("[0,pi]")}.
+
+What is the symbol that is used to represent a quantity that is conceptually larger than any number? [_____]{Compute("inf")}
+
+The answer to the following is something like [`\pi AB`], but that's not accepted because the actual answer has lowercase variables. Try entering both [`\pi AB`] and [`\pi ab`]: [_____]{Compute("pi a b")}
+
+END_PGML
+
+
+######################################
+
+
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation10.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation10.pg
new file mode 100644
index 0000000000..6bf90736d3
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation10.pg
@@ -0,0 +1,95 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"PGchoicemacros.pl",
+"unionTables.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+$showPartialCorrectAnswers = 1;
+
+#
+# Create a matching list and use popups
+#
+$ml = new_match_list();
+$ml->rf_print_q(~~&pop_up_list_print_q);
+$ml->ra_pop_up_list([
+"No answer" => "?",
+"A" => "A", "B" => "B", "C" => "C",
+"D" => "D", "E" => "E", "F" => "F",
+"G" => "G", "H" => "H", "I" => "I",
+"J" => "J", "K" => "K", "L" => "L",
+"M" => "M", "N" => "N", "O" => "O",
+"P" => "P", "Q" => "Q", "R" => "R",
+]);
+
+#
+# Add correct questions and answers
+#
+$ml->qa(
+"If your answer is marked incorrect, you should read ...",
+ "the feedback messages, if there are any",
+"Raising to a power uses ...",
+ "the $CARET character",
+"To confirm that you typed what you think you typed, look at ...",
+ "the Answer Preview column",
+"If a decimal answer is acceptable, you should use ... significant digits",
+ "three",
+"If you have an answer wrong after several attempts, have read any feedback messages, have not rounded your answer too much, and have tried using your textbook and/or notes, then you should use ...", "the Email Instructor button",
+"If you email your instructor for help, you should include ...",
+ "what work you have tried",
+"It's possible to create ... if you do not want to do the entire assignment on-line or on-screen",
+ "a PDF file",
+"After a problem set is due, you can often see ...",
+ "the answers",
+);
+$ml->choose(8);
+
+#
+# Add extra incorrect answers
+#
+$ml->extra(
+"two",
+"two decimal points",
+"a robot",
+"the source code",
+"your email address",
+"the * character",
+"more attempts",
+"the mood lighting",
+"your watch",
+);
+$ml->choose_extra(9);
+
+#$ml->makeLast("None of the above");
+
+
+######################################
+
+
+BEGIN_PGML
+## Quiz ##
+
+And now, a little check to see if you have learned the more important things from this orientation.
+
+[@ ColumnMatchTable($ml,valign => TOP) @]*
+
+
+
+END_PGML
+
+
+######################################
+
+ANS( str_cmp( $ml->ra_correct_ans ) );
+
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation11.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation11.pg
new file mode 100644
index 0000000000..d7c28786f0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation11.pg
@@ -0,0 +1,141 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+#
+# Orientation problem about how to enter units
+#
+#
+#
+# ENDDESCRIPTION
+
+## DBsubject('Numbers')
+## DBchapter('Real numbers')
+## DBsection('Misc.')
+## KEYWORDS('units')
+## DBCCSS('')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Alex Jordan, Carl Yao, Chris Hughes')
+## Institution('PCC')
+
+
+
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "contextCurrency.pl",
+ "parserNumberWithUnits.pl",
+ "PGML.pl",
+ "parserOneOf.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+
+Context("Numeric");
+
+$length = random(1,99,1);
+$lengthans = NumberWithUnits($length,"ft");
+
+$area = $length;
+$areaans = NumberWithUnits($area,"m^2");
+
+$acceleration = random(5,10,1);
+
+
+Context("Currency")->currency->addSymbol("dollars","dollar");
+Context()->flags->set(trimTrailingZeros=>1);
+
+$finance1 = random(15,95,5);
+$financeans1 = Currency($finance1);
+
+$finance2_dollar = random(1,99,1);
+$finance2_cent = random(1,99,1);
+$financeans2 = Currency($finance2_dollar+$finance2_cent/100);
+
+
+##############################################
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+The following questions practice how to enter units in WeBWorK. Enter a number with a unit as your answer. Note that if a unit is already shown after the textbox, there is no need to enter the unit again.
+
+For finance related units, enter the dollar sign, followed by the money amount.
+
+For non-finance related units, enter the number first, followed by a space, and then followed by the unit.
+
+ *Finance*
+ [@numberWord($finance1)@] dollars
+
+ [_________]{$financeans1}
+
+ [@numberWord($finance2_dollar)@] dollars and [@numberWord($finance2_cent)@] cents
+
+ [_________]{$financeans2}
+
+ *Length*
+ A rectangle's base is [@numberWord($length)@] feet long (WeBWorK recognizes *ft* as the unit feet).
+
+ [_________]{$lengthans}
+
+ *Area*
+ A rectangle's area is [@numberWord($area)@] square meters (WeBWorK recognizes *m^2* as the unit square meter).
+
+ [_________]{$areaans}
+
+ *Physics*
+ A car is accelerating at [@numberWord($acceleration)@] feet per second squared.
+
+ [_________]{$acceleration} [` \frac{\text{ft}}{\text{s}^2} `]
+
+END_PGML
+
+
+
+##############################################
+$showPartialCorrectAnswers=1;
+
+BEGIN_PGML_SOLUTION
+
+Here are the solutions:
+
+ *Finance*
+ [@numberWord($finance1)@] dollars
+
+ [`[$financeans1]`]
+
+ [@numberWord($finance2_dollar)@] dollars and [@numberWord($finance2_cent)@] cents
+
+ [`[$financeans2]`]
+
+ *Length*
+ A rectangle's base is [@numberWord($length)@] feet long (WeBWorK recognizes *ft* as the unit feet).
+
+ [`[$lengthans]`]
+
+ *Area*
+ A rectangle's area is [@numberWord($area)@] square meters (WeBWorK recognizes *m^2* as the unit square meter).
+
+ [`[$area] \text{ m^2}`]
+
+ *Physics*
+ A car is accelerating at [@numberWord($acceleration)@] feet per second squared.
+
+ [`[$acceleration]`] [` \frac{\text{ft}}{\text{s}^2} `]
+
+Note that there is no need to enter unit for the last problem, as the unit is already there.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation12.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation12.pg
new file mode 100644
index 0000000000..f7bd573185
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation12.pg
@@ -0,0 +1,89 @@
+# WeBWorK problem written by Carl Yao
+# Portland Community College
+#
+# Orientation problem on how to enter a mixed number.
+#
+# Last edited: Carl Yao 1/6/2015
+#
+# ENDDESCRIPTION
+
+## DBsubject('Middle School')
+## DBchapter('Fractions')
+## DBsection('')
+## KEYWORDS('mixed number')
+## DBCCSS('6.NS.1')
+## TitleText1('')
+## EditionText1('')
+## AuthorText1('')
+## Section1('')
+## Problem1('')
+## Author('Carl Yao')
+## Institution('PCC')
+
+##############################################
+
+DOCUMENT();
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "PGML.pl",
+ "contextFraction.pl",
+ "PCCmacros.pl",
+ "PGcourse.pl",
+);
+
+##############################################
+
+Context("LimitedFraction");
+Context()->flags->set(requirePureFractions=>0);
+Context()->flags->set(showMixedNumbers=>1);
+
+$int = random(1, 5, 1);
+do {
+ $den = random(4, 9, 1);
+ $num = random(1, $den-1, 1);
+} until (gcd($num,$den)==1);
+$frac = Fraction($num,$den);
+
+$ans = $int + $frac ->reduce;
+
+if ($den==5) {
+ $ordinal = "fifth";
+} elsif ($den==8) {
+ $ordinal = "eighth";
+} elsif ($den==9) {
+ $ordinal = "ninth";
+} else {
+ $ordinal = numberWord($den)."th";
+}
+
+##############################################
+
+TEXT(beginproblem());
+
+BEGIN_PGML
+
+Enter the following mixed number: [@numberWord($int)@] and [@numberWord($num)@] [$ordinal]
+
+A space is needed between the integer and the fraction.
+
+ [___________]{$ans}
+
+END_PGML
+
+##############################################
+
+BEGIN_PGML_SOLUTION
+
+Here is the way to enter the mixed number:
+
+ [` [$int] \text{ } [$num]/[$den] `]
+
+Note that a space is needed between the integer and the fraction.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation15.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation15.pg
new file mode 100644
index 0000000000..f522bdda28
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation15.pg
@@ -0,0 +1,47 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"PGcourse.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("LimitedNumeric");
+
+$a = random(1,5,1);
+$ans = 2*$a;
+
+######################################
+
+
+BEGIN_PGML
+## Learn from solution and try a different version. ##
+
+What is the value of [`[$a]+[$a]`] ? Let's intentionally type a wrong answer in the box below.
+
+ [_______]{$ans}
+
+Check the text box _CorrectAnswers_, and then click on _Submit Answers_ button. Now you can see the solution to this problem.
+
+Once you learned how to do this problem, click on the button _Show Me Another_. Now you can do the same problem with different numbers. You can keep doing this until you feel you have learned the concept.
+
+Now go to the next problem in the orientation.
+
+END_PGML
+
+
+######################################
+
+BEGIN_PGML_SOLUTION
+
+ [`` [$a]+[$a] = [$ans] ``]
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation20.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation20.pg
new file mode 100644
index 0000000000..6f258fa2df
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation20.pg
@@ -0,0 +1,85 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"contextFraction.pl",
+"PGcourse.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Fraction");
+$u = random(1,3);
+$v = random(4,10);
+$w = Fraction($u,$v);
+
+$a = random(2,8,1);
+$b = random(2,8,1);
+$c = random(2,8,1);
+$d = $a*$b+$c;
+
+Context("Numeric");
+$e = Compute("(x+$a)/x");
+$h = Compute("sqrt(x+$b)");
+
+Context("Numeric");
+Context()->variables->are(k=>'Real');
+$f = Compute("k^$a");
+
+Context("Numeric");
+Context()->variables->are(K=>'Real');
+$g = Compute("$b^(K+1)");
+
+
+
+######################################
+
+
+BEGIN_PGML
+## Basic Operations ##
+
+The four basic arithmetic operations are:
+ [``+, -, \times, \div``]
+
+Each of these has a corresponding character on the keyboard. The first two are found in the upper right area of most keyboards. For [`\times`] (which is also often denoted with [`\cdot`] on paper), we use the asterisk character (\*). This is the shift-8 key on most keyboards.
+
+Try literally entering [`[$a]\cdot[$b]+[$c]`]
+
+ [___________]{Compute($a*$b+$c)->cmp(formatStudentAnswer=>parsed)}
+
+Of course you could also simplify this to [`[$d]`].
+
+Division is typed using the slash character (/), which is in the lower right of most keyboards. Try entering the following:
+
+
+ [::[$w]=::] [___________]{$w}
+
+Raising to a power is universally denoted with the caret symbol ([$CARET]). This is usually shift-6 on a keyboard. Try entering the following:
+
+ [::[$f]=::] [___________]{$f}
+
+ [::[$g]=::] [___________]{$g}
+
+For [::[$g]::], you need to enter a pair of parenthsis, like [`[$b]\wedge(K+1)`]. If you entered [`[$b]\wedge K+1`], WeBWorK would interpret it as [`[$b]^K+1`], which is incorrect.
+
+This is a good time to point out that capitalization matters. In math, [`k\neq K`]. See what happens if you use the wrong capitalization in the above answers.
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+BEGIN_PGML_SOLUTION
+
+Re-read the instructions! :)
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation25.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation25.pg
new file mode 100644
index 0000000000..deb944c512
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation25.pg
@@ -0,0 +1,65 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"contextFraction.pl",
+"PGcourse.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Fraction");
+
+$den = random(2,5,1);
+$ans = random(1,5,1);
+$num = $den*$ans;
+$num1 = random(1,$num,1);
+$num2 = $num - $num1;
+
+######################################
+
+
+BEGIN_PGML
+## Using Parentheses ##
+
+Look at this fraction:
+
+ [`` \frac{1+1}{2} ``]
+
+The value of this function should be 1. However, if you enter [` 1+1/2 `], the value will be [` 1.5 `]. This is because, by order of operations, the computer does division before doing addition:
+
+ [`` 1+1/2 = 1+0.5 = 1.5 ``]
+
+This is not what we want the computer to do. So how can we tell the computer to do addition in the numerator first? We must use parentheses:
+
+ [`` (1+1)/2 ``]
+
+By order of operations, the computer will handle parentheses before doing division. This time, the value is [` (1+1)/2=2/2=1 `].
+
+Now, enter the fraction literally, without doing any calculation:
+
+ [`` \frac{[$num1]+[$num2]}{[$den]} ``] = [________________]{$ans}
+
+If you forget to use parentheses, you will see [` [$num1] + \frac{[$num2]}{[$den]} `] in the Answer Preview field. This is incorrect.
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+BEGIN_PGML_SOLUTION
+
+You should enter: _[` ([$num1]+[$num2])/[$den] `]_
+
+Did you forget the parentheses?
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation26.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation26.pg
new file mode 100644
index 0000000000..3c2e409388
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation26.pg
@@ -0,0 +1,69 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"contextFraction.pl",
+"PGcourse.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Fraction");
+Context()->variables->are(a=>'Real',b=>'Real',c=>'Real', d=>'Real');
+
+$den1 = random(1,5,1);
+$den2 = random(1,5,1);
+$ans1 = random(1,5,1);
+$num1 = ($den1+$den2)*$ans1;
+
+$ans2 = Compute("(a+b)/(c-d)")->reduce;
+$ans3 = Compute("a/(bc)")->reduce;
+######################################
+
+
+BEGIN_PGML
+## More about Using Parentheses ##
+
+Enter the fractions literally, without doing any calculation:
+
+1. [` \frac{[$num1]}{[$den1]+[$den2]} `] = [________________]{$ans1}
+
+2. [` \frac{a+b}{c-d} `] = [________________]{$ans2}
+
+3. [` \frac{a}{bc} `] = [________________]{$ans3}
+
+When you are ready, move on to the next question.
+
+END_PGML
+
+
+######################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+You should enter: [` [$num1]/([$den1]+[$den2]) `]
+
+If you forget to use parenthesis and entered [`[$num1]/[$den1]+[$den2]`], WeBWorK would interpret your expression as [` \frac{[$num1]}{[$den1]} + [$den2] `]. This is incorrect.
+
+###Question 2
+
+You should enter: [` (a+b)/(c-d) `]
+
+If you forget to use parenthesis and entered [`a+b/c-d`], WeBWorK would interpret your expression as [` a+\frac{b}{c}-d `]. This is incorrect.
+
+###Question 3
+
+You should enter: [` a/(bc) `]
+
+If you forget the parenthesis and entered [`a/bc`], WeBWorK would interpret your expression as [`\frac{a}{b}\cdot c`]. This is incorrect.
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation28.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation28.pg
new file mode 100644
index 0000000000..0bd2d61e85
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation28.pg
@@ -0,0 +1,48 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+"PGcourse.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+Context("Numeric");
+$b = random(1,10,1);
+$h = Compute("sqrt(x+$b)");
+$i = Compute("sqrt(x)+$b");
+
+######################################
+
+
+BEGIN_PGML
+## square root ##
+
+Another common basic operation is the square root, which is denoted with [`\sqrt{\phantom{x}}`] on paper. There is no square root character on most keyboards, so we do something else with this operation. We use [|sqrt|] and parentheses, as in [|sqrt(x)|] for [`\sqrt{x}`]. Try entering the following:
+
+1. [::[$h]=::] [_________]{$h}
+2. [::[$i]=::] [_________]{$i}
+
+END_PGML
+
+
+######################################
+
+BEGIN_PGML_SOLUTION
+
+###Question 1
+
+You should enter _[$h]_
+
+###Question 2
+
+You should enter _[$i]_
+
+END_PGML_SOLUTION
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation60.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation60.pg
new file mode 100644
index 0000000000..1cd44e24d0
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation60.pg
@@ -0,0 +1,52 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+ "parserRadioButtons.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+
+$a = random(5,10,1);
+
+$radio = RadioButtons(
+ ["Yes","No"],
+ "Yes",
+ last => ["No"],
+);
+
+
+######################################
+
+
+BEGIN_PGML
+## Navigating WeBWorK ##
+
+That's enough for now about how you enter your answers. Let's spend some time learning how to navigate WeBWorK so that you can use it more effectively.
+
+By now you've had experience with the _Next_ button above. The _Prev_ button takes you to the previous problem, and the _Up_ button takes you back to the beginning of this problem set.
+
+On the left of the screen there are three panels. The middle panel is just a quick way for you to jump to other problems in the problem set. The top panel lets you find your way to
+* *Homework Sets*: this is the screen you were at when you first logged in. It shows you all of the homework sets that have been assigned to you and when they are due.
+* *Password/Email*: If you would like to change your password, go here. You may also change your contact email to something that you find more convenient here. However the law requires that your instructor is only permitted to communicate with you about grades using your official school email address. So we recommend that you leave your email address alone. Check your school email address often.
+
+Do you understand this problem's content?
+
+[@$radio->buttons()@]*
+
+END_PGML
+
+######################################
+
+ANS( $radio->cmp() );
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation80.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation80.pg
new file mode 100644
index 0000000000..32dfdd4b2a
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/NewOrientation80.pg
@@ -0,0 +1,48 @@
+DOCUMENT();
+
+loadMacros(
+"PGstandard.pl",
+"MathObjects.pl",
+"PGML.pl",
+ "parserRadioButtons.pl",
+);
+
+TEXT(beginproblem());
+
+######################################
+
+
+Context("Numeric");
+
+$radio = RadioButtons(
+ ["Yes","No"],
+ "Yes",
+ last => ["No"],
+);
+
+######################################
+
+
+BEGIN_PGML
+## Printing off a Homework Set ##
+
+For many reasons, you might not be able to work through an entire problem set while sitting online in front of a computer screen. From the *Homework Sets* page, you may select a problem set and click the _Download PDF or TeX Hardcopy for Selected Sets_ button.
+
+If you do this, one option is for you to download an Adobe PDF file. This file is something that you can read onscreen while you are not online. You can even print it off and take it to a tutoring center or your favorite coffee shop to work on. (Of course, you will need to eventually log back on to enter your answers.)
+
+Prove that you understand how this works by opening the PDF file for this Orientation assignment. Please do not waste paper by actually printing this Orientation assignment unless it is necessary.
+
+Do you understand this problem's content?
+
+[@$radio->buttons()@]*
+
+END_PGML
+
+
+######################################
+
+ANS( $radio->cmp() );
+
+
+ENDDOCUMENT();
+
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/PCCOrientationHeader.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/PCCOrientationHeader.pg
new file mode 100644
index 0000000000..e4f5f67773
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/PCCOrientationHeader.pg
@@ -0,0 +1,14 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGML.pl",
+);
+
+BEGIN_PGML
+This set of exercises is designed to orient you to WeBWorK. You will learn
+how to enter answers to math problems, and you will learn how to use WeBWorK
+feedback and tools to help you as you go.
+END_PGML
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/parserOrientation.pl b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/parserOrientation.pl
new file mode 100644
index 0000000000..5a847a8f08
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/parserOrientation.pl
@@ -0,0 +1,626 @@
+#!/usr/local/bin/perl
+
+######################################################################
+#
+# Macros used by the orientation problem set
+#
+######################################################################
+
+
+#loadMacros("PGcourse.pl");
+
+#
+# Special use of CARET to have it work in non-math mode
+#
+$CARET = MODES(
+ TeX => '\hbox{\texttt{\char94}}',
+ Latex2HTML => '^',
+ HTML => '^'
+);
+
+#
+# Functions to display student input and computer output
+# (written as functions so that we change the style without
+# recoding the problems themselves).
+#
+sub student {
+ my $message = shift;
+ MODES(
+ TeX => '\leavevmode\hbox{\texttt{'.$message.'}}',
+ Latex2HTML =>
+ $bHTML.''.$eHTML.$message.$bHTML.''.$eHTML,
+ HTML => ''.$message.''
+ );
+}
+
+sub computer {
+ my $message = shift;
+ MODES(
+ TeX => '\hbox{\texttt{'.$message.'}}',
+ Latex2HTML =>
+ $bHTML.''.$eHTML.$message.$bHTML.''.$eHTML,
+ HTML => ''.$message.''
+ );
+}
+
+#
+# This prints things we need to fill in yet in red
+#
+sub moreWork {
+ my $message = shift;
+ MODES(
+ TeX => '{\sl ' . $message . '}',
+ Latex2HTML => $bHTML . '' . $eHTML .
+ $message . $bHTML . '' . $eHTML,
+ HTML => '' . $message . ''
+ );
+}
+
+#
+# Temporary macros to mark comments in areas that we are
+# working on.
+#
+$BCOMMENT = MODES(
+ TeX => '{\footnotesize\it',
+ Latex2HTML => $bHTML.''.$eHTML,
+ HTML => ''
+);
+
+$ECOMMENT = MODES(
+ TeX => '}',
+ Latex2HTML => $bHTML.'
'.$eHTML,
+ HTML => '
'
+);
+
+# $BCOMMENT = MODES(
+# TeX => '\iffalse',
+# Latex2HTML => $bHTML.''.$eHTML,
+# HTML => ' -->'
+# );
+
+
+#
+# Hack to get better spacing in HTML_tth math mode but without
+# messing up the spacing in other modes.
+#
+$SP = MODES(
+ TeX => ' ', Latex2HTML => ' ',
+ HTML => ' ', HTML_tth => '\ ',
+ HTML_jsMath => ' ', HTML_dpng => ' ',
+);
+
+
+#
+# Special table macros for questions that have
+# displayed math expressions equal to an answer rule,
+# with an accompanying explanation on a separate line.
+#
+
+sub BeginExamples {
+ return "" if ($displayMode eq "TeX");
+ BeginTable(@_);
+}
+
+sub EndExamples {
+ return "" if ($displayMode eq "TeX");
+ EndTable();
+}
+
+@ExampleDefaults = (ans_rule_len => 40, ans_rule_height => 1);
+
+sub BeginExample {
+ my $math = shift;
+ my $ans = shift;
+ my %options = (@ExampleDefaults, @_);
+ my ($cols,$rows) = ($options{ans_rule_len},$options{ans_rule_height});
+ my $rule;
+
+ if ($rows == 1) {$rule = ans_rule($cols)}
+ else {$rule = ans_box($rows,$cols)}
+ ANS($ans);
+
+ #
+ # HTML_tth puts an unwanted
at the beginning,
+ # and uses a centered table. Remove the
and
+ # align the table to the right.
+ #
+ if ($displayMode eq "HTML_tth") {
+ $math = trimString(EV2('\['.$math.'\]'));
+ $math =~ s!
!!;
+ $math =~ s!table align="center"!table align="right"!;
+ } elsif ($displayMode eq "HTML") {
+ $math = '\('.$math.'\)'
+ } elsif ($displayMode =~ m/^HTML/) {
+ $math = '\(\displaystyle '.$math.'\)'
+ }
+
+ MODES(
+ TeX => "\n".'\['.$math.'=\hbox to 8em{'.$rule.'}\]',
+ Latex2HTML => $bHTML.''.$eHTML.
+ '\(\displaystyle '.$math.'\)'.$bHTML.' | = | '.
+ ''.$eHTML.$rule.$bHTML.' |
'.
+ ' | | '.$eHTML,
+ HTML =>
+ ' |
'.$math.' | = | '.
+ ''.$rule.' |
| '
+ );
+}
+
+sub EndExample {
+ MODES(
+ TeX => "\n",
+ Latex2HTML => $bHTML.'
|
'.$eHTML,
+ HTML => '
'
+ );
+}
+
+sub ExampleRule {
+ MODES(
+ TeX => '\par',
+ Latex2HTML => $bHTML.'
|
'.$eHTML,
+ HTML => '
|
'
+ );
+}
+
+#
+# Produce a TeX version and an answer checker for the formula
+#
+sub DisplayQA {my $f = shift; return (DMATH($f->TeX),$f->cmp)}
+sub QA {my $f = shift; return ($f->TeX,$f->cmp)}
+
+##################################################
+#
+# Insert an image of an equation (but use the equation
+# in TeX mode).
+#
+
+sub MathIMG {
+ my ($img,$text,$tex) = @_;
+ my $useTeX = MODES(TeX => 1, Latex2HTML => 0, HTML => 0, HTML_tth => 0, HTML_dpng => 1);
+ return '\('.$tex.'\)' if $useTeX;
+ $img = alias($img);
+ return qq{};
+}
+
+
+##################################################
+#
+# A simple grader that always returns a score of 1.
+# This is used in the tutorial to give students
+# credit for reading a problem (even if it doesn't
+# ask any questions).
+#
+sub forgiving_grader {
+ my $rh_evaluated_answers = shift;
+ my $rh_problem_state = shift;
+ my %form_options = @_;
+ my %evaluated_answers = %{$rh_evaluated_answers};
+ my %problem_state = %{$rh_problem_state};
+
+ my %problem_result = (
+ score => 1, # always return 1
+ errors => '',
+ type => 'forgiving_grader',
+ msg => '',
+ );
+
+ return(\%problem_result,\%problem_state)
+ if (!$form_options{answers_submitted});
+
+ $problem_state{recorded_score} = $problem_result{score};
+ $problem_state{num_of_correct_ans}++;
+
+ (\%problem_result, \%problem_state);
+}
+
+##################################################
+#
+# Syntactic sugar to avoid ugly ~~& construct in PG.
+#
+sub install_forgiving_grader {install_problem_grader(\&forgiving_grader)}
+
+#
+# Shorthand for WeBWorK
+#
+$WW = "WeBWorK";
+
+
+#
+# Shorthands for entering and leaving rawhtml mode in
+# LaTeX2HTML (since they are so commonly used).
+#
+$bHTML = '\begin{rawhtml}';
+$eHTML = '\end{rawhtml}';
+
+#
+# HTML(htmlcode)
+# HTML(htmlcode,texcode)
+#
+# Insert $html in HTML mode or \begin{rawhtml}$html\end{rawhtml} in
+# Latex2HTML mode. In TeX mode, insert nothing for the first form, and
+# $tex for the second form.
+#
+sub HTML {
+ my ($html,$tex) = @_;
+ return('') unless (defined($html) && $html ne '');
+ $tex = '' unless (defined($tex));
+ MODES(TeX => $tex, Latex2HTML => $bHTML.$html.$eHTML, HTML => $html);
+}
+
+
+#
+# Begin and end indented text
+#
+
+$BBLOCKQUOTE = HTML('','\par\bgroup\advance\leftskip by 2em ');
+$EBLOCKQUOTE = HTML('
','\par\egroup ');
+
+#
+# Start and stop centering
+#
+$BCENTER = HTML('','\begin{center}');
+$ECENTER = HTML('','\end{center}');
+
+
+#
+# Begin and end mode
+#
+$BTT = HTML('','\texttt{');
+$ETT = HTML('','}');
+
+#
+# Begin and end mode
+#
+$BSMALL = HTML('','{\small ');
+$ESMALL = HTML('','}');
+
+#
+# Remove extra space in bold in latex2html mode
+#
+$BBOLD = HTML('','{\bf ');
+$EBOLD = HTML('','}');
+
+#
+# tth doesn't seem to understand \colon
+#
+$COLON = MODES(TeX=>'\colon ',HTML=>':', HTML_dpng => '\colon ');
+
+#
+# Alternatives to the standard WW versions of these
+#
+$LT = $LTS;
+$GT = $GTS;
+
+$LE = $LTE;
+$GE = $GTE;
+
+#
+# Common math sets
+#
+$R = MODES(TeX => '{\bf R}', HTML_tth => '{\bf R}', HTML => 'R');
+$Z = MODES(TeX => '{\bf Z}', HTML_tth => '{\bf Z}', HTML => 'Z');
+$N = MODES(TeX => '{\bf N}', HTML_tth => '{\bf N}', HTML => 'N');
+$Q = MODES(TeX => '{\bf Q}', HTML_tth => '{\bf Q}', HTML => 'Q');
+$C = MODES(TeX => '{\bf C}', HTML_tth => '{\bf C}', HTML => 'C');
+
+#
+# Superscripts and subscript (mostly for if you want answer
+# rules in these positions).
+#
+$BSUP = HTML('','$^{');
+$ESUP = HTML('','}$');
+
+$BSUB = HTML('','$_{');
+$ESUB = HTML('','}$');
+
+#
+# Browser-only BR
+#
+$BBR = HTML('
');
+
+#
+# Broser-only \displaystyle
+#
+$DISPLAY = MODES(TeX => '', Latex2HTML => '\displaystyle ',
+ HTML_tth => '\displaystyle ', HTML => '');
+
+
+#
+# Provides a title to the problem
+#
+sub Title {
+ my $title = shift;
+
+ TEXT(MODES(
+ TeX => "\\par\\begin{centering}{\\bf $title}\\par\\end{centering}\\nobreak\n",
+ Latex2HTML => $bHTML.''.$title.'
'.$eHTML,
+ HTML => ''.$title.'
'
+ ));
+}
+
+
+sub BeginList {
+ my $LIST = 'OL';
+ $LIST = shift if (uc($_[0]) eq "OL" or uc($_[0]) eq "UL");
+ my $enum = ($LIST eq 'OL' ? "enumerate" : "itemize");
+ my %options = @_;
+ $LIST .= ' TYPE="'.$options{type}.'"' if defined($options{type});
+ $LIST .= ' START="'.$options{value}.'"' if defined($options{value});
+ $LIST = "<$LIST>";
+ my $tex = ""; my $type = ""; my $top = "";
+ $tex .= "\\parindent=0pt \\parskip=.75\\baselineskip\n" if $options{tex_par};
+ $tex .= "\\setcounter{enumi}{".($options{value}-1)."}" if defined($options{value}) && $LIST eq 'OL';
+ $type = "[\\quad $options{type}.]" if defined($options{type}) && $LIST eq 'OL';
+ $top = '\vskip-\parskip\hrule height 0pt' if $options{noTopSkip};
+
+ MODES(
+ TeX => "\\par${top}{\\parskip=0pt\\begin{$enum}$type\n$tex",
+ Latex2HTML => $bHTML.$LIST.$eHTML,
+ HTML => $LIST."\n"
+ );
+}
+
+#
+# Usage: EndList(type)
+#
+# where type is the list type (and must match the BeginList type).
+#
+sub EndList {
+ my $LIST = shift; $LIST = 'OL' unless defined $LIST;
+ my $enum = ($LIST eq 'OL' ? "enumerate" : "itemize");
+ $LIST = "$LIST>";
+ MODES(
+ TeX => "\\end{$enum}}",
+ Latex2HTML => $bHTML.$LIST.$eHTML,
+ HTML => $LIST."\n"
+ );
+}
+
+#
+# Syntactic sugar for making lists of paragraphs
+#
+sub BeginParList {
+ my $LIST = 'OL';
+ $LIST = shift if (uc($_[0]) eq "OL" or uc($_[0]) eq "UL");
+ BeginList($LIST,tex_par=>1,@_);
+}
+
+sub EndParList {EndList(@_)};
+
+
+#
+# Use $ITEM to introduce a new list item
+#
+$ITEM = MODES(
+ TeX => '\item\ignorespaces ',
+ Latex2HTML => $bHTML.''.$eHTML,
+ HTML => ""
+);
+
+#
+# This is a hack for when you want MSIE to handle
+# space between list items properly
+#
+$ITEMSEP = MODES(
+ TeX => '\par\vskip-\parskip\vskip\baselineskip ',
+ Latex2HTML => $bHTML."
".$eHTML,
+ HTML => "
"
+);
+
+
+sub ColumnTable {
+ my $col1 = shift; my $col2 = shift;
+ my %options = (indent => 0, separation => 50, valign => "MIDDLE", @_);
+ my ($ind,$sep) = ($options{"indent"},$options{"separation"});
+ my $valign = $options{"valign"};
+
+ my ($bhtml,$ehtml) = ('\begin{rawhtml}','\end{rawhtml}');
+ ($bhtml,$ehtml) = ('','') unless ($displayMode eq "Latex2HTML");
+
+ my $HTMLtable = qq {
+ $bhtml
+ | $ehtml
+ $col1
+ $bhtml | | $ehtml
+ $col2
+ $bhtml |
$ehtml
+ };
+
+ MODES(
+ TeX => '\par\medskip\hbox{\qquad\vtop{'.
+ '\advance\hsize by -3em '.$col1.'}}'.
+ '\medskip\hbox{\qquad\vtop{'.
+ '\advance\hsize by -3em '.$col2.'}}\medskip',
+ Latex2HTML => $HTMLtable,
+ HTML => $HTMLtable
+ );
+}
+
+#
+# Use columns for a match-list output
+#
+# Usage: ColumnMatchTable($ml,options)
+#
+# where $ml is a math list reference and options are those
+# allowed for ColumnTable above.
+#
+sub ColumnMatchTable {
+ my $ml = shift;
+
+ ColumnTable($ml->print_q,$ml->print_a,@_);
+}
+
+
+
+#
+# Command for tables with no borders.
+#
+# Usage: BeginTable(options);
+#
+# Options are taken from:
+#
+# border => n value for BORDER attribute (default 0)
+# spacing => n value for CELLSPACING attribute (default 0)
+# padding => n value for CELLPADDING attribute (default 0)
+# tex_spacing => dimen value for spacing between columns in TeX
+# (e.g, tex_spacing => 2em) (default 1em)
+# tex_border => dimen value for left- and right border in TeX (0pt)
+# center => 0 or 1 center table or not (default 1)
+#
+sub BeginTable {
+ my %options = (border => 0, padding => 0, spacing => 0, center => 1,
+ tex_spacing => "1em", tex_border => "0pt", @_);
+ my ($bd,$pd,$sp) = ($options{border},$options{padding},$options{spacing});
+ my ($tsp,$tbd) = ($options{tex_spacing},$options{tex_border});
+ my ($center,$tcenter) = (' ALIGN="CENTER"','\centerline');
+ ($center,$tcenter) = ('','') if (!$options{center});
+ my $table =
+ qq{};
+
+ MODES(
+ TeX => '\par\medskip'.$tcenter.'{\kern '.$tbd.
+ '\vbox{\halign{#\hfil&&\kern '.$tsp.' #\hfil',
+ Latex2HTML => $bHTML.$table.$eHTML."\n",
+ HTML => $table."\n"
+ );
+}
+
+#
+# Usage: EndTable(options)
+#
+# where options are taken from:
+#
+# tex_border => dimen extra vertical space in TeX mode (default 0pt)
+#
+sub EndTable {
+ my %options = (tex_border => "0pt", @_);
+ my $tbd = $options{tex_border};
+ MODES(
+ TeX => '\cr}}\kern '.$tbd.'}\medskip'."\n",
+ Latex2HTML => $bHTML.'
'.$eHTML."\n",
+ HTML => ''."\n"
+ );
+}
+
+#
+# Creates a row in the table
+#
+# Usage: Row([item1,item2,...],options);
+#
+# Each item appears as a separate entry in the table.
+#
+# Options control how the row is displayed:
+#
+# indent => num Specifies size of blank column on the left
+# (default: indent => 0)
+#
+# separation => num Specifies separation of columns
+# (default: spearation => 30)
+#
+# tex_vspace => "dimen" Specifies additional vertical spacing for TeX
+#
+# align => "type" Specifies alignment of initial column
+# (default: align => "LEFT")
+#
+# valign => "type" Specified vertical alignment of row
+# (default: valign => "MIDDLE")
+#
+sub Row {
+ my $rowref = shift; my @row = @{$rowref};
+ my %options = (
+ indent => 0, separation => 30,
+ align => "LEFT", valign => "MIDDLE",
+ @_
+ );
+ my ($cind,$csep) = ($options{indent},$options{separation});
+ my ($align,$valign) = ($options{align},$options{valign});
+ my $sep = ' | '; $sep = '' if ($csep < 1);
+ my $ind = ' | '; $ind = '' if ($cind < 1);
+ my $fill = '';
+ $fill = '\hfil' if (uc($align) eq "CENTER");
+ $fill = '\hfill' if (uc($align) eq "RIGHT");
+ my $vspace = '';
+ $vspace = '\noalign{\vskip '.$options{tex_vspace}.'}' if $options{tex_vspace};
+
+ MODES(
+ TeX => '\cr'.$vspace."\n". $fill . join('& ',@row),
+ Latex2HTML =>
+ $bHTML."$ind".$eHTML .
+ join($bHTML." | $sep".$eHTML,@row) .
+ $bHTML.' |
'.$eHTML."\n",
+ HTML => "$ind" .
+ join(" | $sep",@row) . ' |
'."\n"
+ );
+}
+
+
+sub TableSpace {
+ my $rsep = shift;
+ my $tsep = shift;
+ $rsep = $tsep if (defined($tsep) && $main::displayMode eq "TeX");
+ return "" if ($rsep < 1);
+ MODES(
+ TeX => '\vadjust{\kern '.$rsep.'pt}' . "\n",
+ Latex2HTML =>
+ $bHTML.' |
'.$eHTML."\n",
+ HTML => ' |
'."\n",
+ );
+}
+
+
+
+#
+# A horizontal rule within a table. (Could have been a variable,
+# but all the other table commands are subroutines, so kept it
+# one to be consistent.)
+#
+sub TableLine {
+ MODES(
+ TeX => '\vadjust{\kern2pt\hrule\kern2pt}',
+ Latex2HTML => $bHTML.
+ '
|
'.
+ $eHTML."\n",
+ HTML =>'
|
'."\n"
+ );
+}
+
+
+sub Image {
+ my $image = shift; my $ilink;
+ my %options = (
+ size => [150,150], tex_size => 200,
+ link => 0, align => "BOTTOM", tex_center => 0, @_);
+ my ($w,$h) = @{$options{size}};
+ my ($ratio,$link) = ($options{tex_size}*(.001),$options{link});
+ my ($border,$align) = ($options{border},$options{align});
+ my ($tcenter) = $options{tex_center};
+ my $HTML; my $TeX;
+ ($image,$ilink) = @{$image} if (ref($image) eq "ARRAY");
+ $image = alias(insertGraph($image)) if (ref($image) eq "WWPlot");
+ $image = alias($image) unless ($image =~ m!^/!i);
+ if ($ilink) {
+ $ilink = alias(insertGraph($ilink)) if (ref($ilink) eq "WWPlot");
+ $ilink = alias($ilink) unless ($ilink =~ m!^/!i);
+ } else {$ilink = $image}
+ $border = (($link || $ilink ne $image)? 2: 1) unless defined($border);
+ $HTML = '';
+ $HTML = ''.$HTML.'' if $link or $ilink ne $image;
+ $TeX = '\includegraphics[width='.$ratio.'\linewidth]{'.$image.'}';
+ $TeX = '\centerline{'.$TeX.'}' if $tcenter;
+ MODES(
+ TeX => $TeX."\n",
+ Latex2HTML => $bHTML.$HTML.$eHTML,
+ HTML => $HTML
+ );
+}
+
+
+
+1;
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob01.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob01.pg
new file mode 100644
index 0000000000..c1ea0a4ceb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob01.pg
@@ -0,0 +1,67 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+
+
+);
+
+
+TEXT(beginproblem);
+
+Title("Understanding $WW Problem Pages");
+
+##############################################
+BEGIN_TEXT
+
+The $WW screen is divided into several areas, each used for a
+different purpose. You will need to understand these
+in order to use $WW effectively.
+$PAR
+
+At the upper left are the navigation buttons that allow you to move
+from problem to problem. The ${LQ}Next$RQ and ${LQ}Previous$RQ
+buttons, naturally, send you to the next and previous problems. The
+${LQ}Prob. List$RQ button takes you back to the opening
+page for the homework set (the one that lists all the problems and
+gives the instructions for the homework set).
+$PAR
+
+The area below the navigation buttons is where $WW tells you about
+your score for the current problem. (It will be shown on a grey
+backgound to help make it stand out; you will see this later.) When you have submitted your answers, this is where you will be given information about what
+answers you got right and wrong. This area also shows you how many points a problem is worth.
+$PAR
+
+The main part of the page is the text of the problem you are trying to
+answer, including blank boxes for you to enter your answers. $BR For example, 2 + 2 = $SPACE \{ans_rule(2)\}
+$PAR
+
+Below the large white text area that you are reading right now is a message area where you may be informed about how partial credit is handled in multi-part problems. Other information might also appear there, such as a message that the due date is passed or that answers are available.
+$PAR
+
+In the panel at the left, instead of the list of homework sets, you
+now have a list of the problems within this assignment. You can go to
+any problem just by clicking on it. The checkboxes at the bottom of
+the panel are discussed in the next problem.
+$PAR
+
+The buttons at the bottom of the screen, including the ${LQ}Submit
+Answers$RQ button, are discussed in the next problem. At this point,
+you can get credit for Problem 1 by typing $BBOLD 4$EBOLD into the answer box above, and pressing the ${LQ}Submit Answers$RQ button at the bottom of the page, and then pressing the ${LQ}Next$RQ button at the
+top of the screen to go on to the next problem.
+
+END_TEXT
+
+
+install_forgiving_grader();
+$showPartialCorrectAnswers = 1;
+
+##############################################
+ANS(Compute(4)->cmp());
+
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob02.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob02.pg
new file mode 100644
index 0000000000..0199dcc1b2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob02.pg
@@ -0,0 +1,98 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+
+
+TEXT(beginproblem);
+
+Title("Controlling $WW");
+
+##############################################
+
+BEGIN_TEXT
+
+The buttons at the bottom of the screen are what cause $WW to process
+your answers. Nothing that you type will have any effect until you
+press one of these buttons.
+$PAR
+
+The ${LQ}Submit Answers$RQ button causes $WW to check your answers and
+report your score for the problem. Usually, your instructor will have granted you some number of attempts (maybe even unlimited). Each time you press the ${LQ}Submit Answers$RQ button, you use up one of your attempts. If the due date is passed and the answers are available, you can click the ${LQ}Show
+Correct Answers$RQ button before pressing ${LQ}Submit$RQ. If you do, the correct answer(s) will be displayed in the answer area at the top of the screen along with the answers you have provided.
+$PAR
+
+If you have typed in a complicated answer, or are being told your
+answer is incorrect when you think it's right, you may want to use the
+${LQ}Preview Answer$RQ button. This will make $WW display what $BITALIC it thinks $EITALIC you have entered, without using up an attempt. This can be used to help spot errors in your typing, and verify that $WW understands your answer the way you intend it to. (This is discussed further in a later problem.)
+$PAR
+
+At the bottom panel on the left is a box that allows you to
+change how the problem is displayed. The ${LQ}math${RQ} within the problem
+can be printed on the screen in many different ways. Here, we'll discuss three of them:
+
+\{BeginParList("UL")\}
+
+$ITEM
+${LQ}images${RQ} mode is the default choice (what $WW uses unless you tell
+it otherwise). It produces the accurate mathematical notation,
+with the disadvantages of being slightly slower, and not printing well
+if you want to print out a single problem.
+$ITEMSEP
+
+$ITEM
+${LQ}formatted-text${RQ} mode produces results quickly, but more
+complicated mathematics may be difficult to read in this
+mode. For example, some fractions are not easy to read
+in formatted-text mode.
+$ITEMSEP
+
+$ITEM
+${LQ}jsMath${RQ} mode uses a JavaScript program and Cascading Style
+Sheets (CSS) to display the mathematics. This produces the nicest looking results, and is particularly nice if you need to change the size of the fonts
+in your browser or wish to print out a single problem. For best
+results, however, you should download and install some fonts that
+jsMath uses; there is a link to the fonts on the jsMath control panel,
+which you can activate using the small jsMath button that will appear
+at the lower right of the screen when you activate this mode. The
+first problem you view using jsMath may take a little longer to
+appear, as the JavaScript program is being loaded into your browser,
+but things should run faster after that.
+
+\{EndParList("UL")\}
+$PAR
+
+Choose whichever mode is most comfortable for you. You can always
+select a different mode if a particular problem needs it. Here is a
+sample of some simple mathematics, \(x^2 + 3\), and a more complicated
+expression, \(\frac{x(1-x)}{2x + 1}\). Try changing the display mode
+by clicking the ${LQ}formatted-text$RQ or ${LQ}jsMath${RQ}
+button and then pressing the ${LQ}Apply Options${RQ} button to cause
+the page to be reformatted. Look how the math expressions change. Then change the display mode to back to
+${LQ}images$RQ mode for the rest of the homework set.
+$PAR
+
+The ${LQ}Show saved answers${RQ} checkbox tells whether you
+want $WW to fill in the answer blanks with your previous answers or
+not. (If you like, you can test this out on the next problem, since
+there are no answer blanks in this one.)
+$PAR
+
+You are now ready to learn how to enter answers into $WW. Press the
+${LQ}Submit Answers${RQ} button to get credit for this problem, and
+then press the ${LQ}Next$RQ button at the top of the page to go on to
+the next one.
+
+END_TEXT
+
+install_forgiving_grader();
+$showPartialCorrectAnswers = 1;
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob03.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob03.pg
new file mode 100644
index 0000000000..9be16d66eb
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob03.pg
@@ -0,0 +1,140 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "contextLimitedNumeric.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Typing in Your Answers");
+
+##############################################
+
+BEGIN_TEXT
+
+Here are the standard symbols that $WW, along with most other
+computer software, uses for arithmetic operations:
+$PAR
+
+\{
+ BeginTable().
+ Row([$BBOLD.'Symbol'.$EBOLD,
+ $BBOLD.'Meaning'.$EBOLD,
+ $BBOLD.'Example'.$EBOLD]).
+ TableLine().
+ Row([computer("+"),'Addition',computer("3+4 = 7")],align=>"CENTER").
+ Row([computer("-"),'Subtraction',computer("3-4 = -1")],align=>"CENTER").
+ Row([computer("*"),'Multiplication',computer("3*4 = 12")],align=>"CENTER").
+ Row([computer("/"),'Division',computer("3/4 = .75")],align=>"CENTER").
+ Row([computer($CARET)." or ".computer("**"),'Exponentiation',
+ computer("3${CARET}4 = 81")." or ".
+ computer("3**4 = 81")],align=>"CENTER").
+ TableLine().
+ EndTable()
+\}
+$PAR
+
+END_TEXT
+
+##################################################
+
+$a = non_zero_random(-5,5,1);
+$b = non_zero_random(-5,5,1);
+$c = non_zero_random(-3,3,1) * 2;
+$d = non_zero_random(-5,5,1);
+
+BEGIN_TEXT
+
+Sometimes $WW will insist that you calculate the value of an
+expression as a single number before you enter it. For example,
+calculate the value of \($c($a - $b) - ($c - $d)\) and enter it in
+the following blank.
+(Here you have to enter a single integer; the question is testing
+whether you can do the operations correctly.)
+
+$PAR
+$BBLOCKQUOTE
+\($c($a - $b) - ($c - $d)\) = \{ans_rule(10)\}
+$EBLOCKQUOTE
+$PAR
+END_TEXT
+
+Context("LimitedNumeric");
+$ans = $c*($a - $b) - ($c - $d);
+ANS(Real($ans)->cmp);
+
+##################################################
+
+BEGIN_TEXT
+
+Sometimes you will not have to simplify your answer, and can let
+$WW do this for you. The following blanks are all expecting
+the value 16. Try entering it several different ways, such as
+\{student "7+9"\}, \{student "18-2"\}, \{student "8*2"\},
+\{student "32/2"\}, and \{student "4${CARET}2"\}. Note: pressing
+the ${LQ}Tab$RQ key on your keyboard will move you from one answer
+box to the next.
+
+$PAR
+$BBLOCKQUOTE
+16 = \{ans_rule(8)\} or
+\{ans_rule(8)\} or
+\{ans_rule(8)\} or
+\{ans_rule(8)\} or
+\{ans_rule(8)\}
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+Context("Numeric");
+
+ANS(
+ Real(16)->cmp,
+ Real(16)->cmp,
+ Real(16)->cmp,
+ Real(16)->cmp,
+ Real(16)->cmp,
+);
+
+##################################################
+
+BEGIN_TEXT
+
+$WW also understands that quantities written next to each other are
+supposed to be multiplied. For example, you can enter \{student
+"(9)(7)"\} instead of \{student "63"\}. Most often this is used when
+one quantity is a number and the other a variable or function. For
+instance, \{computer "2x"\} means \{computer "2*x"\}. The following blank is
+expecting the value 100; try entering it as
+\{student("4(30-5)")\}.
+
+$PAR
+$BBLOCKQUOTE
+100 = \{ans_rule(10)\}
+$EBLOCKQUOTE
+$PAR
+END_TEXT
+
+ANS(Real(100)->cmp);
+
+##################################################
+
+BEGIN_TEXT
+
+${BITALIC}When you are ready, don't forget to press the ${LQ}Submit Answers${RQ}
+button to ask $WW to check your work. Once you get the answers
+correct, press ${LQ}Next${RQ} to go on.${EITALIC}
+
+END_TEXT
+
+##################################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob04.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob04.pg
new file mode 100644
index 0000000000..4c369db42e
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob04.pg
@@ -0,0 +1,99 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGchoicemacros.pl",
+ "MathObjects.pl",
+ "alignedChoice.pl",
+ "contextLimitedNumeric.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+ "contextFraction.pl",
+
+);
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Rules of Precedence");
+
+##############################################
+
+BEGIN_TEXT
+
+The rules of precedence determine the order in which the mathematical
+operations are performed by $WW. It is essential for you to understand
+these so that you know how $WW interprets what you type in. If there
+are no parentheses and no functions (such as \{computer "sin"\} or
+\{computer "log"\}), then $WW computes the value of your answer by
+dealing with exponents first, followed by multiplication and division
+(from left to right), and finally addition and subtraction
+(from left to right).
+$PAR
+
+If there are expressions in grouping symbols, those expressions are
+simplified first. We'll talk about functions (and give a more
+complete list of rules) in a later problem.
+
+$PAR
+Examples:
+\{BeginList("UL")\}
+$ITEM
+\{student "4*3/6 = 12/6 = 2"\} (multiplications and divisions are done
+from left to right)
+$ITEM
+\{student "4*3/6-2*7+10 = 2 - 14 + 10 = -2"\} (multiplications and divisions are done
+before additions and subtractions)
+$ITEM
+\{student "12/3/2 = 4/2 = 2"\} (multiplications and divisions are done
+from left to right)
+$ITEM
+\{student "12/(3/2) = 12/1.5 = 8"\}
+(expressions inside parentheses are calculated before anything else)
+$ITEM
+\{student "2*4${CARET}2 = 2*16 = 32"\} (exponentiation is done before multiplication),
+so \{student "2*4${CARET}2 - 3*4 = 2*16 - 3*4 = 32 - 12 = 20"\}.
+\{EndList("UL")\}
+$PAR
+
+To practice these rules, completely simplify the following
+expressions. Because the point of this problem is for you to do the
+numerical calculations correctly, $WW will only accept sufficiently
+accurate decimal numbers or fractions as the answers to these problems.
+$PAR
+
+END_TEXT
+
+$a = random(1,4,1);
+$b = random(2,6,1);
+$c = random(3,6,1);
+$d = random(2,25,1);
+$al = new_aligned_list(equals => 1);
+
+Context("LimitedFraction");
+$al->qa(
+ computer("$a+$b*$c"), Real($a+($b*$c))->cmp,
+# computer("($a+$b)*$c"), Real(($a+$b)*$c)->cmp,
+# computer("($a+$b)/$c"), Real(($a+$b)/$c)->cmp,
+# computer("$a+$b/$c"), Real($a+($b/$c))->cmp,
+ computer("$a/$b*$c"), Fraction(($a/$b)*$c)->cmp,
+# computer("$a/($b*$c)"), Real($a/($b*$c))->cmp,
+# computer("$a/$b/$c"), Real(($a/$b)/$c)->cmp,
+ computer("3*$b+$d-$a/5"), Fraction((3*$b)-(($a/5))+$d)->cmp,
+ computer("2${CARET}$b+1"), Real((2**$b)+1)->cmp,
+ computer("2${CARET}($b+1)"), Real(2**($b+1))->cmp,
+);
+
+BEGIN_TEXT
+$BBLOCKQUOTE
+\{$al->print_q\}
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS($al->correct_ans);
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-a.gif b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-a.gif
new file mode 100644
index 0000000000..d32ee11b3b
Binary files /dev/null and b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-a.gif differ
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-b.gif b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-b.gif
new file mode 100644
index 0000000000..b074b10281
Binary files /dev/null and b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-b.gif differ
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-c.gif b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-c.gif
new file mode 100644
index 0000000000..71062c6f06
Binary files /dev/null and b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05-c.gif differ
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05.pg
new file mode 100644
index 0000000000..a076b0263f
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob05/prob05.pg
@@ -0,0 +1,125 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGchoicemacros.pl",
+ "MathObjects.pl",
+ "alignedChoice.pl",
+ "../parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Common Errors to Avoid");
+
+##############################################
+
+BEGIN_TEXT
+
+Many of the answers you enter into $WW will be expressions
+that involve variables. Here are some important things to know.
+
+$PAR
+
+\{BeginParList("UL")\}
+
+$ITEM
+It matters what letter you use. For example, if you are asked for a
+function using the variable \(x\), then it won't work to enter the
+function with the variable \(t\). Also, $WW considers upper- and
+lower-case letters to be different, so don't use the capital letter
+\(X\) in place of the lower-case letter \( x\).
+The following blank is expecting the
+expression \(x^3\), which you would enter as \{student "x${CARET}3"\} or
+\{student "x**3"\}. Instead, try entering \{student "t${CARET}3"\} or \{student "X${CARET}3"\} and submitting your answer, just to see what happens.
+
+$PAR
+$BBLOCKQUOTE
+\{ans_rule(10)\}
+$EBLOCKQUOTE
+$PAR
+
+You should get an error message informing you that \{computer "t"\}
+is not defined in this context. This tells you that $WW did not receive the
+correct variable and doesn't know how to check your answer. Now enter
+\{student "x${CARET}3"\} and resubmit to get credit for this part of
+the problem.
+
+END_TEXT
+
+ANS(Formula("x^3")->cmp);
+
+##################################################
+
+$IMGA = MathIMG("prob05-a.gif","1/x+1","1/x+1");
+$IMGB = MathIMG("prob05-b.gif","1/(x+1)","\frac{1}{x+1}");
+$IMGC = MathIMG("prob05-c.gif","(1/x)+1","\frac{1}{x} + 1");
+
+BEGIN_TEXT
+
+$ITEM
+$WW requires that you think about how you present your answer. As we just saw, you need to be careful about the variables that you use. You must also be careful about how the order of operations apply to your answers. Often, this involves using parentheses appropriately.
+
+$PAR
+
+For example, you might intend to submit $IMGB, and write $IMGA on your paper. But that is actually incorrect. The expression $IMGA means $IMGC,
+according to the rules of precedence. $WW will force you to be exact
+with how you think and what you write. If you want
+to enter something that means $IMGB, you must write \{student
+"1/(x+1)"\}.
+
+$PAR
+
+This precision is important in your written work too. If the answer was $IMGB and you wrote $IMGA on paper or on a test, it is not correct. So the precision that $WW is demanding of you will help you outside of $WW.
+
+$PAR
+END_TEXT
+
+##################################################
+
+BEGIN_TEXT
+
+\{EndParList("UL")\}
+
+$PAR
+$HR
+$PAR
+
+Now enter the following expressions:
+$PAR
+END_TEXT
+
+$al = new_aligned_list(
+ equals => 1, ans_rule_len => 30,
+ tex_spacing => "5pt", spacing => 10
+);
+
+Context("Numeric")->variables->are(t=>'Real'); $t = Formula("t");
+Context("Numeric")->variables->are(y=>'Real'); $y = Formula("y");
+Context("Numeric")->variables->are(x=>'Real'); $x = Formula("x");
+
+$al->qa(
+ DisplayQA($t/(2*$t+6)),
+# DisplayQA(2*$y*($y**2-$y+1)),
+# DisplayQA(1/$x**2 - 3*(1/$x)),
+ DisplayQA(1/(2*($x-5))),
+ DisplayQA((2*$x-3)**4),
+);
+
+BEGIN_TEXT
+
+$BBLOCKQUOTE
+\{$al->print_q\}
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS($al->correct_ans);
+
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob06.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob06.pg
new file mode 100644
index 0000000000..f959ef0a94
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob06.pg
@@ -0,0 +1,131 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+
+$showPartialCorrectAnswers = 1;
+
+Context("Numeric")->variables->are(y=>'Real'); $y = Formula('y');
+Context("Numeric")->variables->are(x=>'Real'); $x = Formula('x');
+Context()->flags->set(limits=>[0,2]);
+
+TEXT(beginproblem);
+
+Title("Using Parentheses Effectively");
+
+##############################################
+
+BEGIN_TEXT
+
+${BCENTER} ${BBOLD} If you are in a math course numbered 70 or below, you might not need the information on this page. Feel free to move to the next page.${EBOLD} ${ECENTER}
+
+$PAR
+
+One of the hardest parts about using parentheses is making sure that
+they match up correctly. Here are a couple of hints to help you with
+this:
+
+$PAR
+END_TEXT
+
+$BRACES = HTML('{}','\char123\char125');
+
+BEGIN_TEXT
+
+\{BeginParList("UL")\}
+
+$ITEM
+Several types of parentheses are allowed: \{student "()"\},
+\{student "[]"\}, and \{student $BRACES\}. When you need to nest
+parentheses inside other parentheses, try using a different type for
+each to make it easier to see which ones match up.
+$ITEMSEP
+
+$ITEM
+When you type a left parenthesis, type the corresponding right
+parenthesis at the same time, then position your cursor between them and
+type the expression that goes inside. This can save you a
+lot of time hunting for mismatched parentheses.
+$ITEMSEP
+
+$ITEM
+When you have a complicated answer, type a template for
+the structure of your result first. For example, suppose that you are
+planning to enter the fraction
+\[\frac{2x^2-5}{(x+1)(3x^{3x} - 22)}.\]
+A good way to start would be to type in \{student "()/[()*()]"\}.
+This shows a template of one number divided by the product of two
+other numbers. (Note that \{student "()/()*()"\} would not be a good
+way to start; do you see why?) Now when you fill in the expressions, you
+will be sure your parentheses balance correctly.
+$PAR
+
+Although $WW understands that numbers written next to each other are
+meant to be multiplied (so you do not have to use \{student "*"\} to
+indicate multiplication if you don't want to), it is often useful for
+you to include the \{student "*"\} anyway, as it helps you keep track
+of the structure of your answer.
+$PAR
+
+$ITEM
+To see how $WW is interpreting what you type, enter your answer and
+then click the ${LQ}Preview Answers$RQ button, which is next to the
+${LQ}Submit Answers$RQ button below. $WW will show you what $BITALIC it thinks$EITALIC you entered. (The preview appears in your answer area at the top of the page.) Previewing your answer $BITALIC does not $EITALIC submit it for credit or use up an attempt; that only
+happens when you press the ${LQ}Submit Answers$RQ button.
+$ITEMSEP
+
+$ITEM
+When division or exponentiation are involved, it is a good idea to
+use parentheses even in simple situations, rather than relying on the
+order of operations. For example, 1/2x and (1/2)x both mean the same
+thing (first divide 1 by 2, then multiply the result by x), but the
+second makes it easier to see what is going on. Likewise, use
+parentheses to clarify expressions involving exponentiation. Type
+\{student "(e${CARET}x)${CARET}2"\} if you mean \((e^x)^2\), and type
+\{student "e${CARET}(x${CARET}2)"\} if you mean \(e^{(x^2)}\).
+
+\{EndParList("UL")\}
+
+$PAR
+$HR
+$PAR
+
+Now enter the following expressions:
+
+$BBLOCKQUOTE
+
+\{@ExampleDefaults = (ans_rule_len => 50, ans_rule_height => 1);
+ BeginExamples\}
+
+\{BeginExample(QA(($x**(2*$x-1))/(($x**2-$x)*(3*$x+5))))\}
+Start with the template \{student "[x${CARET}()]/[()*()]"\}.
+\{EndExample\}
+\{ExampleRule\}
+
+\{BeginExample(QA((($y+3)*($y**3+$y+1))/((2*$y**2-2)*(5*$y+4))))\}
+Start by putting in an appropriate template. This means that you
+should begin by looking at the function and thinking about how many
+pieces are used to construct it and how those pieces are related.
+Once you have entered your answer, try using the ${LQ}Preview$RQ button
+to see how $WW is interpreting your answer.
+\{EndExample\}
+\{ExampleRule\}
+
+\{BeginExample(QA((($x+1)/($x-2))**4))\}
+Start by putting in an appropriate template.
+\{EndExample\}
+
+\{EndExamples\}
+
+$EBLOCKQUOTE
+
+END_TEXT
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob07.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob07.pg
new file mode 100644
index 0000000000..fad9fc9b6b
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob07.pg
@@ -0,0 +1,135 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGchoicemacros.pl",
+ "MathObjects.pl",
+ "alignedChoice.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Constants and Functions in $WW");
+
+##############################################
+
+BEGIN_TEXT
+
+$WW knows the value of \(\pi\), which you can enter as \{student
+"pi"\}, and the value of \(e\) (the base of the natural logarithm,
+\(e\approx 2.71828\)), which you can enter simply as the letter
+\{student "e"\}. This answer blank is expecting the area formula for a circle, which is \(\pi r^2\). Try it: $SPACE \(A=\) \{ans_rule(8) \}.
+END_TEXT
+Context()->variables->add(r=>'Real');
+ANS(Compute("pi r^2")->cmp);
+BEGIN_TEXT
+$PAR
+
+
+$WW also understands many standard functions, like square root. Here
+is a partial list. Notice that function names use lower-case
+letters. Capitalizing might lead to an error message.
+
+\{BeginParList("UL")\}
+
+$ITEM
+The square root \(\sqrt{\ } \) is represented by \{student
+"sqrt(x)"\}. Try entering the square root of seven: \{ans_rule(10) \}.
+END_TEXT
+ANS(Compute("sqrt(7)")->cmp);
+BEGIN_TEXT
+$ITEMSEP
+
+${BCENTER} ${BBOLD} If you are in a math course numbered 95 or below, you might not need the information on the rest of this page. Feel free to move on to the next page.${EBOLD} ${ECENTER}
+$ITEMSEP
+
+$ITEM
+$WW knows about \{student "sin(x)"\}, \{student "cos(x)"\}, \{student
+"tan(x)"\}, \{student "arcsin(x)"\}, \{student "arccos(x)"\},
+\{student "arctan(x)"\} and the other trigonometric functions and their
+inverses. $WW ${BITALIC}always$EITALIC uses radian mode for these
+functions. $WW will evaluate trigonometric functions for you in many situations. For example, the following blank is expecting the value \(-1\).
+Since \(\cos(\pi) = -1\), you can enter \{student "cos(pi)"\}. Try it: \{ans_rule(10)\} \(= -1\)
+
+$PAR
+
+END_TEXT
+
+ANS(Real(-1)->cmp);
+
+##################################################
+
+BEGIN_TEXT
+
+
+$ITEM
+The function \{student "ln(x)"\} means the natural logarithm of \(x\) (the logarithm with base \(e\)). In $WW, \{student "log(x)"\} $BITALIC also$EITALIC means the natural logarithm. Use \{student "log10(x)"\} for the base 10
+logarithm of \(x\).
+$ITEMSEP
+
+$ITEM
+The exponential function with base \(e\) can be entered as
+\{student "e${CARET}x"\} or \{student "exp(x)"\}. The second method
+is convenient if you have a long, complicated exponent.
+$ITEMSEP
+
+$ITEM
+The absolute value function, \(|x|\), should be entered as
+\{student "|x|"\} or \{student "abs(x)"\}.
+$ITEMSEP
+
+$ITEM
+The inverse sine function, \(\sin${CARET}{-1}(x)\), can be written as
+\{student "arcsin(x)"\} or \{student "asin(x)"\} or \{student "sin${CARET}(-1)(x)"\}
+in $WW. Note that this is ${BITALIC}not$EITALIC the same as
+\{student "(sin(x))${CARET}(-1)"\}, which means \(\frac{1}{\sin(x)}\).
+The other inverse functions are handled similarly.
+
+\{EndParList("UL")\}
+
+$PAR
+$HR
+$PAR
+
+Now enter the following expressions:
+$PAR
+END_TEXT
+
+$al = new_aligned_list(
+ equals => 1,
+ ans_rule_len => 40,
+ tex_spacing => "5pt",
+ spacing => 10,
+);
+
+Context("Numeric")->variables->are(t=>'Real'); $t = Formula('t');
+Context("Numeric")->variables->are(y=>'Real'); $y = Formula('y');
+Context("Numeric")->variables->are(x=>'Real'); $x = Formula('x');
+Context()->flags->set(limits=>[-2,10]);
+
+$al->qa(
+# DisplayQA(sqrt($y**2+1)),
+# DisplayQA(sin(3*$x+1)),
+ DisplayQA(1/tan($x)),
+ DisplayQA(asin($t+1)->with(limits=>[-2,0])),
+ DisplayQA((sin($x)-cos($x))/sqrt(2*$x-7))
+);
+
+BEGIN_TEXT
+
+$BBLOCKQUOTE
+\{$al->print_q\}
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS($al->correct_ans);
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob08.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob08.pg
new file mode 100644
index 0000000000..5b0d6dbe5c
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob08.pg
@@ -0,0 +1,155 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+
+Context("Numeric")->variables->are(y=>'Real'); $y = Formula('y');
+Context("Numeric")->variables->are(x=>'Real'); $x = Formula('x');
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Rules of Precedence (Again)");
+
+##############################################
+
+$Explanation = "${BITALIC}Explanation${EITALIC}";
+$Moral = "${BITALIC}Moral${EITALIC}";
+
+BEGIN_TEXT
+${BCENTER} ${BBOLD} If you are in a math course numbered 95 or below, you might not need the information on this page. Feel free to move on to the next page.${EBOLD} ${ECENTER}
+$PAR
+
+At this point, we can give the complete rules of precedence for
+how $WW computes the value of a mathematical formula. The operations
+are handled in the following order:
+$PAR
+
+\{BeginList\}
+$ITEM Evaluate expressions within parentheses.
+$ITEM Evaluate functions such as \{student "sin(x)"\},
+\{student "cos(x)"\}, \{student "log(x)"\}, \{student "sqrt(x)"\}.
+$ITEM Perform exponentiation (from right to left).
+$ITEM Perform multiplication and division, (from left to right).
+$ITEM Perform addition and subtraction, (from left to right).
+\{EndList\}
+$PAR
+
+This can get a little subtle, so be careful. The following are some
+typical traps for $WW users.
+$PAR
+
+\{BeginParList("UL")\}
+
+$ITEM
+$WW interprets \{student "sin 2x"\} to mean \((\sin${SP}2)*x\)
+$PAR
+
+$Explanation: Rule 2 tells you that $WW does evaluation of functions
+(like \{student "sin"\}) before multiplication. Thus $WW first
+computes \(\sin${SP}2\), and then multiplies the result by \(x\).
+$PAR
+
+$Moral: You must type \{student "sin(2x)"\} for the sine of \(2x\),
+even though we often write it as \(\sin${SP}2x\).
+Get in the habit of using parentheses for all your trigonometric
+functions.
+$PAR
+
+$PAR
+$BBLOCKQUOTE
+The cosine of \(5x\) is entered as \{ans_rule(15)\}.
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+ANS(cos(5*$x)->cmp);
+
+BEGIN_TEXT
+
+$ITEM
+$WW interprets \{student "cos t${CARET}3"\} to mean \((\cos${SP}t)^3\)
+$PAR
+
+$Explanation: Rule 2 tells you that $WW does evaluation of functions
+(like \{student "cos"\}) before exponentiation. Thus $WW first
+computes \(\cos${SP}t\) and then raises the result to the power 3.
+$PAR
+
+$Moral: You must type in \{student "cos(t${CARET}3)"\} if you mean the
+cosine of \(t^3\), even though we sometimes write it as \(\cos${SP}t^3\).
+
+
+$PAR
+$BBLOCKQUOTE
+The tangent of \(y^4\) is entered as \{ans_rule(15)\}.
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+ANS(tan($y**4)->cmp);
+
+BEGIN_TEXT
+
+$ITEM
+In mathematics, we often write \(\sin^2${SP}x\) to mean \((\sin x)^2\).
+$WW will let you write \{student "sin${CARET}2(x)"\} for this, though
+it is probably better to type \{student "(sin(x))${CARET}2"\} instead,
+as this makes your intention clearer. Note that a power of \(-1\), as
+in \{student "sin${CARET}(-1)(x)"\}, is a special case; it indicates the
+${BITALIC}inverse${EITALIC} function \{student "arcsin(x)"\} rather
+than a power.
+
+
+$PAR
+$BBLOCKQUOTE
+\(\sin^2${SP}x + \cos^3${SP}x\) = \{ans_rule(30)\}
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+ANS((sin($x)**2 + cos($x)**3)->cmp);
+
+BEGIN_TEXT
+
+$ITEM
+\{student "e${CARET}3x"\} means \((e^3) x\) and not \(e^{(3x)}\) $PAR
+$PAR
+
+$Explanation: Rule 3 says that $WW does exponentiation before multiplication.
+Thus $WW first computes \{student "e${CARET}3"\}, with the result
+\(e^3\), and then multiplies the result by \(x\).
+$PAR
+
+$Moral: Always put parentheses around an exponent.
+Type \{student "e${CARET}(3x)"\} if you want \(e^{3x}\).
+
+$PAR
+$BBLOCKQUOTE
+\(2^{4x^3}\) = \{ans_rule(30)\}
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+ANS((2**(4*($x**3)))->cmp);
+
+BEGIN_TEXT
+
+\{EndParList("UL")\}
+
+
+END_TEXT
+
+##############################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob09.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob09.pg
new file mode 100644
index 0000000000..3c97379dc5
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob09.pg
@@ -0,0 +1,112 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Non-Numeric Answers");
+
+##############################################
+
+BEGIN_TEXT
+
+Sometimes you will be asked to enter answers that are not numbers.
+For example, if you are asked to determine what is \(\frac{1}{0}\), the answer is that this $LQ\(\)number$RQ does not exist, so you might have to type \{student "DNE"\} to indicate this (the problem should tell you what words to
+use). Note that upper- and lower-case letters are not the same to
+$WW, so you might need to enter the answer exactly as indicated in the
+problem. (Well-written problems will allow the answer to be
+entered either way.)
+$PAR
+
+$BBLOCKQUOTE
+Please enter ${LQ}\{student "DNE"\}${RQ} here: \{ans_rule(10)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS(String('DNE')->cmp);
+
+##################################################
+
+BEGIN_TEXT
+
+Other problems may require you to enter \(\infty\), which you do using
+the word ${LQ}\{student "INFINITY"\}${RQ} (in upper- or lower-case) or
+${LQ}\{student "INF"\}${RQ} for short. The problem should remind you
+of how to do this. You can't add or multiply something by infinity. You
+can, however, indicate \(-\infty\) by ${LQ}\{student "-INFINITY"\}${RQ},
+or ${LQ}\{student "-INF"\}${RQ}.
+$PAR
+
+$BBLOCKQUOTE
+Try entering \(-\infty\) here: \{ans_rule(10)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS((-(Infinity))->cmp);
+
+##################################################
+
+Context("Interval");
+
+$a = random(-5,5,1);
+$I = Compute("(-infinity,$a)");
+
+BEGIN_TEXT
+
+One common place where you use \(\infty\) is as an endpoint of
+an interval. $WW allows you to enter intervals using standard
+interval notation, including infinite endpoints. For example,
+\{student "[-2,5)"\} represents an interval that is closed on the
+left and open on the right, while \{student "[2,inf)"\} is an interval
+that extends infinitely to the right.
+$PAR
+
+$BBLOCKQUOTE
+If you have learned interval notation, write the interval of points that are less than \($a\): \{ans_rule(20)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS($I->cmp);
+
+##################################################
+
+Context("Interval");
+
+$a = random(-8,-2,1);
+$b = random($a+1,$a+5,1);
+$c = random($b+1,$b+5,1);
+$I = Compute("[$a,$b) U ($b,$c)");
+
+BEGIN_TEXT
+
+${BCENTER} ${BBOLD} If you are in a math course numbered 70 or below, you might not need the information on the rest of this page. Feel free to move on to the next page.${EBOLD} ${ECENTER}
+$PAR
+Several intervals can be combined into one region using the ${LQ}set
+union${RQ} operation, \(\cup\), which is represented as ${LQ}\{student
+"U"\}${RQ} in $WW. For example, \{student "[-2,0] U (8,inf)"\}
+represents the points from \(-2\) to \(0\) together with everything
+bigger than 8.
+$PAR
+
+$BBLOCKQUOTE
+Write the set of points from \($a\) to \($c\) but excluding \($b\) and \($c\)
+as a union of intervals: \{ans_rule(20)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+
+ANS($I->cmp);
+
+##################################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob10.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob10.pg
new file mode 100644
index 0000000000..fd9237d64d
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob10.pg
@@ -0,0 +1,132 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserVectorUtils.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Points and Vectors");
+
+##############################################
+
+Context("Vector");
+
+$p0 = non_zero_point2D();
+$p1 = $p0 + 2*non_zero_point2D(2,2,1);
+
+Context()->texStrings;
+BEGIN_TEXT
+
+Some problems will ask you to enter an answer that is a point (also known as an ordered pair) rather than a number. You enter points in $WW just as you would expect: by separating the coordinates by commas and enclosing them all in
+parentheses. So \{student "(2,-3)"\} represents the point in the
+plane that has an \(x\)-coordinate of \(2\) and \(y\)-coordinate of
+\(-3\).
+$PAR
+
+$BBLOCKQUOTE
+What point is halfway between \($p0\) and \($p1\)? \{ans_rule(20)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+Context()->normalStrings;
+
+ANS((($p0+$p1)/2)->cmp);
+
+##################################################
+
+$P = non_zero_point3D();
+
+$LANGLE = HTML('<',"\char60 ");
+$RANGLE = HTML('>',"\char62 ");
+
+Context()->flags->set(ijk=>1);
+Context()->texStrings;
+BEGIN_TEXT
+
+
+${BCENTER} ${BBOLD} If you are in a math course numbered 199 or below, you might not need the information on the rest of this page. Feel free to move on to the next page. ${EBOLD} ${ECENTER}
+
+$PAR
+Other problems require you to provide a vector as your answer. $WW
+allows you to enter vectors either as a list of coordinates enclosed
+in angle braces, \{student $LANGLE\} and \{student $RANGLE\}, or as a
+sum of multiples of the coordinate unit vectors, \(\{i\}\), \(\{j\}\)
+and \(\{k\}\), which you enter as \{student "i"\}, \{student "j"\} and
+\{student "k"\}. For example, \{student "${LANGLE}1,3,-2${RANGLE}"\}
+represents the same vector as \{student "i+3j-2k"\}.
+$PAR
+
+$BBLOCKQUOTE
+What vector points from the origin to the point \($P\)? \{ans_rule(20)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+Context()->normalStrings;
+Context()->flags->set(ijk=>0);
+
+ANS(Vector($P)->cmp);
+
+##################################################
+
+$v0 = non_zero_vector3D();
+$v1 = non_zero_vector3D();
+
+$SPACING = HTML(' ');
+$BNOBR = HTML('');
+$ENOBR = HTML('');
+
+Context()->texStrings;
+BEGIN_TEXT
+
+Just as you can enter a number by giving an expression that reduces to it,
+$WW allows you to enter points and vectors by giving expressions for the
+individual coordinates, or by using a vector-valued expression that
+reduces to your answer. For example,
+$PAR
+$BCENTER
+$BNOBR\{student "${LANGLE}1-(-3),2-sqrt(4),6/2${RANGLE}"\}$ENOBR
+${SPACING} and ${SPACING}
+$BNOBR\{student "[1-(-3)]i + [2-sqrt(4)]j + (6/2)k"\}$ENOBR
+$ECENTER
+$PAR
+both represent the vector \(\{Vector(4,0,3)\}\), while
+$BNOBR\{student "${LANGLE}1,0,-1${RANGLE} + ${LANGLE}2,-2,3${RANGLE}"\}$ENOBR
+could be used to answer a question that asks for the vector \(\{Vector(3,-2,2)\}\).
+$PAR
+
+$BBLOCKQUOTE
+Try writing \(\{$v0+$v1\}\) as a sum of two vectors: \{ans_rule(30)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+Context()->normalStrings;
+
+#
+# Check that the result actually IS a sum (or difference).
+#
+sub checkAdd {
+ my $ans = shift;
+ if ($ans->{score} == 1 && !$ans->{isPreview}) {
+ my $item = $ans->{student_formula}->{tree};
+ $ans->{correct_value}->cmp_Error
+ ($ans,"Your answer is not a sum of vectors")
+ unless $item->class eq 'BOP' &&
+ ($item->{bop} eq '+' || $item->{bop} eq '-');
+ }
+ return $ans;
+}
+
+my $check = ($v0+$v1)->cmp;
+$check->install_post_filter(~~&checkAdd);
+ANS($check);
+
+##################################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob11.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob11.pg
new file mode 100644
index 0000000000..1f2bafb041
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob11.pg
@@ -0,0 +1,64 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "MathObjects.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+$showPartialCorrectAnswers = 1;
+
+TEXT(beginproblem);
+
+Title("Multiple Answers in One Blank");
+
+##############################################
+
+Context("Numeric");
+
+
+
+Context()->texStrings;
+BEGIN_TEXT
+
+Sometimes you might be asked to provide more than one answer in a single
+answer blank. In this case, you should separate your answers by commas. Such an answer is called a ${BITALIC}list${EITALIC} in $WW. Note that you don't $BITALIC have to $EITALIC enter multiple answers for a list; a single number is a legal response (it's a list with only one thing).
+$PAR
+
+$BBLOCKQUOTE
+The even integers between 1 and 9 are: \{ans_rule(20)\}. $BR
+Try entering the answer in a different order. With lists, order won't matter.
+$EBLOCKQUOTE
+
+END_TEXT
+Context()->normalStrings;
+
+ANS(List(2,4,6,8)->cmp);
+
+##################################################
+
+$a = random(1,5,1);
+$f = Formula("1/(x^2+$a^2)")->reduce;
+
+Context()->texStrings;
+BEGIN_TEXT
+
+When you are asked for a list of numbers, another possible answer is
+that there are ${BITALIC}no${EITALIC} numbers that satisfy the
+requirements. In that case, you should enter ${LQ}\{student
+"NONE"\}${RQ} as your answer.
+$PAR
+
+$BBLOCKQUOTE
+The expression \($f\) is not defined at these \(x\) values: \{ans_rule(20)\}.
+$EBLOCKQUOTE
+
+END_TEXT
+Context()->normalStrings;
+
+ANS(String('NONE')->cmp);
+
+##################################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob12.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob12.pg
new file mode 100644
index 0000000000..def47308b8
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob12.pg
@@ -0,0 +1,69 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGchoicemacros.pl",
+ "choiceUtils.pl",
+ "parserOrientation.pl",
+ "PGcourse.pl",
+);
+
+TEXT(beginproblem);
+
+Title("True/False Questions in $WW");
+
+##############################################
+
+$a = random(1,5,1);
+$b = random(6,10,1);
+$c = random(-10,-1,1);
+$d = random(-10,-1,1);
+$e = random(1,10,1);
+
+$sl = new_select_list();
+$sl->{rf_print_q} = ~~&alt_print_q;
+$sl->{separation} = 5;
+
+$sl->qa(
+ "\(-$a $LT -$b\)", "F",
+ "\($c $LE $c\)", "T",
+ "\($d $LT $d\)", "F",
+ "\(\pi $GE 3.2\)", "F",
+ "\($e-1 $LE $e\)", "T"
+);
+
+$sl->choose(4);
+
+##################################################
+
+BEGIN_TEXT
+
+Enter a \{student "T"\} or an \{student "F"\} in each
+answer space below to indicate whether the corresponding
+statement is true or false.
+$PAR
+
+$BBLOCKQUOTE
+\{$sl->print_q\}
+$EBLOCKQUOTE
+$PAR
+
+END_TEXT
+
+ANS(str_cmp($sl->ra_correct_ans));
+install_problem_grader(~~&std_problem_grader);
+$showPartialCorrectAnswers = 0;
+
+BEGIN_TEXT
+
+In most multipart problems, if one or more of your answers is wrong,
+then $WW tells you which ones they are. But for True/False or
+multiple-choice questions, $WW usually only tells you whether
+${BITALIC}all$EITALIC the answers are correct. It won't tell you
+which ones are right or wrong.
+
+END_TEXT
+
+##################################################
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob13.pg b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob13.pg
new file mode 100644
index 0000000000..a4e2fa1cc2
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob13.pg
@@ -0,0 +1,67 @@
+DOCUMENT(); # This should be the first executable line in the problem.
+
+loadMacros(
+ "PGstandard.pl",
+ "PGchoicemacros.pl",
+ "parserOrientation.pl",
+ "choiceUtils.pl",
+ "PGcourse.pl",
+);
+
+TEXT(beginproblem);
+
+Title("Matching Lists in $WW");
+
+##############################################
+
+$a = random(-10,10,1);
+$b = random(1,3,1);
+
+$ml = new_match_list();
+$ml->rf_print_q(~~&alt_print_q);
+$ml->rf_print_a(~~&alt_print_a);
+$ml->{separation} = 5;
+
+$ml->qa(
+ "\(x\) is less than \($a\)", "\(x $LT $a\)",
+ "\(x\) is any real number", "\(-\infty $LT x $LT \infty\)",
+ "\(x\) is greater than \($a\)", "\($a $LT x\)",
+ "\(x\) is less than or equal to \($a\)", "\(x $LE $a\)",
+ "\(x\) is greater than or equal to \($a\)", "\(x $GE $a\)",
+ "The distance from \(x\) to \($a\) is at most $b",
+ "\(|x - $a| $LE $b\)",
+ "The distance from \(x\) to \($a\) is more than $b",
+ "\(|x - $a| $GT $b\)"
+);
+
+$ml->choose(5);
+
+##################################################
+
+BEGIN_TEXT
+
+Match the statements defined below with the letters labeling their
+equivalent expressions.
+$PAR
+
+\{ColumnMatchTable($ml,indent => 30)\}
+$PAR
+
+END_TEXT
+
+ANS(str_cmp($ml->ra_correct_ans));
+install_problem_grader(~~&std_problem_grader);
+$showPartialCorrectAnswers = 0;
+
+BEGIN_TEXT
+
+Usually with matching problems,
+$WW tells you whether ${BITALIC}all$EITALIC
+your answers are correct or not. If they are not all
+correct, $WW will not tell you which ones are right
+and which are wrong.
+$PAR
+
+END_TEXT
+
+ENDDOCUMENT(); # This should be the last executable line in the problem.
diff --git a/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob14/prob14-hint.html b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob14/prob14-hint.html
new file mode 100644
index 0000000000..9ad160d2da
--- /dev/null
+++ b/Contrib/PCC/PCCDefaultProblemSets/SetDefinitions/Orientation/prob14/prob14-hint.html
@@ -0,0 +1,35 @@
+
+WeBWork Set 0 Problem 11 Hint
+
+
+
+
+
+
+
+
+Graphs in WeBWorK
+
+Often in WeBWorK, the graphs are displayed as small thumbnail images.
+These can be difficult to read, so in these cases, WeBWorK provides
+you with a link to a larger copy of the graph. You can click on the
+small version of the image to get the larger one. For example, click
+on the diagram below to enlarge it. It will be displayed in a
+separate window; close that window when you are done looking at the
+larger graph.
+
+
+
+
+
+
+
+After you are done, press the "Back" button to go back to the problem page.
+
+ |
+ |
+
+
+
+
+