Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5989d6f
Create .gitkeep
smith36j Jun 26, 2026
f9a11a4
Delete Contrib/UCalgary/.gitkeep
smith36j Jun 26, 2026
b02285d
Add files via upload
smith36j Jun 26, 2026
1fbc2be
Add files via upload
smith36j Jun 26, 2026
3b15244
Add files via upload
smith36j Jun 26, 2026
fcfa54d
Add files via upload
smith36j Jun 26, 2026
7420fd9
Add files via upload
smith36j Jun 26, 2026
331ba2e
Add files via upload
smith36j Jun 26, 2026
24c278d
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationG…
smith36j Jun 26, 2026
dfa6f6b
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt
smith36j Jun 26, 2026
d83b4f7
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst
smith36j Jun 26, 2026
4a5a5f4
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def
smith36j Jun 26, 2026
7bdcf75
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip
smith36j Jun 26, 2026
3675d71
Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_…
smith36j Jun 26, 2026
6091963
Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_…
smith36j Jun 26, 2026
2fc23ae
Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_…
smith36j Jun 26, 2026
e8dd11d
Delete Contrib/UCalgary/MATH249-WeBWork-2026.zip
smith36j Jun 26, 2026
82ec374
Delete Contrib/UCalgary/MATH_249_CLO_(High-level).docx
smith36j Jun 26, 2026
e3fcf7c
Delete Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx
smith36j Jun 26, 2026
1ae044f
Add files via upload
smith36j Jun 26, 2026
02c7aa8
Update README.md
smith36j Jun 26, 2026
519fcc7
Update README.md
smith36j Jul 30, 2026
d1c9798
Replace \Context with Context
dlglin Jul 31, 2026
403b24e
Update 1-1-0-An-C-quad-linear-jms.pg to use RadioMultiAnswer and plot…
dlglin Jul 31, 2026
d6fc031
Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choic…
smith36j Aug 3, 2026
3315731
Delete Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-…
smith36j Aug 3, 2026
8ec715a
Delete Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-…
smith36j Aug 3, 2026
7c4d4bd
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-c…
smith36j Aug 3, 2026
9e7b8f3
Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-c…
smith36j Aug 3, 2026
55086f5
Update 5-4-5-U-C-t-f-asmp-1-jms.pg
smith36j Aug 3, 2026
6b201f6
Update 5-4-5-U-C-t-f-asmp-2-jms.pg
smith36j Aug 3, 2026
a1c1c8d
Merge pull request #1 from dlglin/spec-calculus
smith36j Aug 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
## DESCRIPTION
##
## ENDDESCRIPTION


## DBsubject(Algebra)
## DBchapter(Quadratic equations and functions)
## DBsection(Graphs)
## Date(3 February 2025)
## Institution(University of Calgary)
## Author(Jerrod Smith)
## Level(4)

DOCUMENT();

loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",);
$a = non_zero_random(-3, 3, 1); #nonzero repeated root
$b = 2; #tried a random power, too much so go with 2
if(abs($a)==1)
{$c = 10;}
else
{$c = abs($a)*4}; #dampening factor for graph
$p = non_zero_random(-1,1,1); #coefficient +/- 1
# answers depend on $p and are switched based on sign
if($p==1)
{
$inc = List("($a,5)");
$dec = List("(-5,$a)");
}
else
{
$inc = List("(-5,$a)");
$dec = List("($a,5)");
}

$graph_image = createTikZImage();
$graph_image->tikzLibraries("arrows.meta");

$graph_image->BEGIN_TIKZ
\draw[->,thick] (-5.5,0) -- (5.5,0) node[above left,outer sep=2pt]{\(x\)};
\draw[->,thick] (0,-5.5) -- (0,5.5) node[below right,outer sep=2pt]{\(y\)};
\draw[very thin,color=gray] (-5.5,-5.5) grid (5.5,5.5);
\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)};
\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)};
\draw[-,red, very thick] plot[domain={-4.98}:{4.98}] (\x,{$p*pow((\x-$a),$b)/($c) - $p*abs($a)});
\draw[red, very thick] (-5,{$p*pow(-5-$a,$b)/$c- $p*abs($a)}) circle (2 pt);
\draw[red, very thick] (5,{$p*pow(5-$a,$b)/$c- $p*abs($a)}) circle (2 pt);
\draw[red] (5,{$p*pow(5-$a,$b)/$c- $p*abs($a)}) node[above right, outer sep=2pt]{\(y=f(x)\)};
END_TIKZ

Context("Interval");
BEGIN_PGML
[@ image($graph_image, width => 600, tex_size => 1000) @]*

Let [`f`] be a function defined on the open interval [`(-5,5)`] and consider the graph of [`y=f(x)`] given above (drawn in red).

Enter your answers below as (open) intervals (use a list separated by commas, if needed).

If there are no such intervals, type [|None|]*.

a. [`f`] is increasing on the interval(s) [_]{$inc}{20}
b. [`f`] is decreasing on the interval(s) [_]{$dec}{20}

[@helpLink('intervals')@]*

END_PGML

ENDDOCUMENT();
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
## DESCRIPTION
##
## ENDDESCRIPTION


## DBsubject(Algebra)
## DBchapter(Functions)
## DBsection(Graphs)
## Date(30 January 2025)
## Institution(University of Calgary)
## Author(Aiden Taylor)
## Level(4)

DOCUMENT();

loadMacros(
"PGstandard.pl",
"PGML.pl",
"PGcourse.pl",
"PGtikz.pl"
);

$showPartialCorrectAnswers = 1;

$graph_image = createTikZImage();
$graph_image->tikzLibraries("arrows.meta");

$graph_image->BEGIN_TIKZ
\draw[<->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)};
\draw[<->,thick] (0,-3) -- (0,11) node[below right,outer sep=2pt]{\(y\)};
\foreach \x in {-6,-4,...,-2,2,4,...,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)};
\foreach \y in {-2,2,4,...,10} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)};
\draw[-,red, ultra thick] plot[domain={-3}:{2.99}] (\x,{pow(\x,2)});
\filldraw[red, ultra thick] (-3,9) circle (3.5 pt);
\draw[red, ultra thick] (3,9) circle (3.5 pt);
\draw[very thin,color=gray] (-7,-3) grid (7,11);
\draw[red] (1,9) node[outer sep=2pt]{\(y=f(x)\)};
END_TIKZ

Context("Interval");
BEGIN_PGML
[@ image($graph_image, width => 600, tex_size => 1000) @]*

Refer to the graph of the function, [`f`], drawn above in red.

(a) The value of [`f(1)`] is: [_]{"1"}{2}

(b) For what values of [`x`] is [`f(x) = 4`]? [____]{"-2,2"}{5}
(Enter the values of [`x`] as a list, separated by commas.)

(c) State the domain of [`f`]. [______]{"[-3,3)"}{20}
(Enter your answer as an interval. [@helpLink('intervals')@]*)

(d) State the range of [`f`]. [______]{"[0,9]"}{20}
(Enter your answer as an interval.)
END_PGML

ENDDOCUMENT();
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
## DESCRIPTION
##
## ENDDESCRIPTION

## DBsubject(Algebra)
## DBchapter(Quadratic equations and functions)
## DBsection(Graphs)
## Date(3 February 2025)
## Institution(University of Calgary)
## Author(Jerrod Smith)
## Level(4)

DOCUMENT();

loadMacros(
"PGstandard.pl", "PGML.pl",
"PGtikz.pl", 'plots.pl',
'parserRadioMultiAnswer.pl', "parserPopUp.pl",
"PGcourse.pl"
);
$a = non_zero_random(-1, 1, 1); #nonzero repeated root
$b = random(1, 2, 1); #linear or quadratic
if ($b == 2) { $c = 10 * $b; }
else { $c = 2 }
; #dampening factor for graph
$p = random(-1, 1, 2); #coefficient +/- 1
# popup_type answers depend on $b
if ($b == 1) {
$type = 'linear function';
if ($p > 0) {
$graph_desc =
'A graph of a straight line oriented from lower left to upper right';
} else {
$graph_desc =
'A graph of a straight line oriented from upper left to lower right';
}
} else {
$type = 'quadratic function';
if ($p > 0) {
$graph_desc = 'A graph of a parabola opening upward';
} else {
$graph_desc = 'A graph of a parabola opening downward';
}
}
# popup_slope answers depend on $b and $p
if ($p == 1) { $slope = 'positive'; }
else { $slope = 'negative'; }

$popup_slope = DropDown([ 'negative', 'positive' ], $slope);

$rma = RadioMultiAnswer(
[
[
'\(f\) is a linear function, and the slope of \(y=f(x)\) is %s.',
$popup_slope
],
['\(f\) is a quadratic function.']
],
$b - 1
);

$f = Formula("$p*(($b*(x-$a))^$b/$c-abs($a*$b))");

$plot = Plot(
xmin => -5,
xmax => 5,
ymin => -5,
ymax => 5,
xtick_delta => 1,
ytick_delta => 1,
xminor => 0,
yminor => 0,
xlabel => '\(x\)',
ylabel => '\(y\)',
aria_label => $graph_desc,
axes_on_top => 1,
);

$plot->add_function(
$f, 'x', -5, 5,
color => 'red',
start_mark => 'arrow',
end_mark => 'arrow',
width => 3
);

BEGIN_PGML
[! $graph_desc !]{$plot}

Consider the graph of the of the function [`y=f(x)`] given above in red.

Based on the visible portion of the graph, choose the correct conclusion.
[_]{$rma}
END_PGML

ENDDOCUMENT();
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
## DESCRIPTION
##
## ENDDESCRIPTION


## DBsubject(Algebra)
## DBchapter(Linear equations and functions)
## DBsection(Equations of lines: slope-intercept form)
## Level(4)

DOCUMENT();

loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",);
$a = random(1, 3, 1); #random positive slope numerator
$m = $a / 2; #slope is m = a/2
$b = non_zero_random(-1, 1, 1); #random nonzero y-intercept
$l = $m * (-4) + $b; #lower limit, min of L
$u = $m * (4) + $b; #upper limit, max of L
$um = $u - 1; # for graph grid
$lm = $l + 1; # for graph grid
$xint = -$b / $m; #calculate x-intercept

$graph_image = createTikZImage();
$graph_image->tikzLibraries("arrows.meta");

$graph_image->BEGIN_TIKZ
\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)};
\draw[->,thick] (0,$l) -- (0,$u) node[below right,outer sep=2pt]{\(y\)};
\draw[very thin,color=gray] (-5,$l) grid (5,$u);
\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)};
\foreach \y in {$lm,...,$um} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)};
\draw[<->,red, very thick] plot[domain={-4}:{4}] (\x,$m*\x+$b);
\draw[red] (4,$u) node[below right, outer sep=2pt]{\(y=L(x)\)};
END_TIKZ

Context("Interval");
BEGIN_PGML
[@ image($graph_image, width => 600, tex_size => 1000) @]*

Consider the graph of the line [`L`] given above.

(a) The slope of [`L`] is [`m = `] [_]{"$m"}

(b) The [`y`]-intercept of [`L`] is [`b = `] [_]{"$b"}

(c) The [`x`]-intercept of [`L`] is [`x = `] [_]{"$xint"}

Note: You may need to calculate the [`x`]-intercept by using your answers to parts (a) and (b).

END_PGML

ENDDOCUMENT();
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
## DESCRIPTION
##
## ENDDESCRIPTION


## DBsubject(Algebra)
## DBchapter(Linear equations and functions)
## DBsection(Equations of lines: slope-intercept form)
## Date(31 January 2025)
## Institution(University of Calgary)
## Author(Jerrod Smith)
## Level(2)

DOCUMENT();

loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",);
$a = random(-4, -2, 2); #random even negative slope numerator
$b = non_zero_random(-2, 2, 1); #random nonzero
$c = random(3,5,2); #positive odd slope denominator relatively prime to $a*$b
$m = $a / $c; #slope is m = a/c
# L = $m(x-$b);
$l = $m * (4 - $b); #lower limit, min of L at x=4 since decreasing
$u = $m * (-4 - $b) ; #upper limit, max of L at x=-4 since decreasing
$um = $u + 1; # for graph grid
$umc = int($um); #floor of $um
$lm = $l - 1; # graph grid
$lmf = int($lm); # floor of $lm
# floor for y-axis grid marks
$yint = -$b * $m; #calculate y-intercept



$graph_image = createTikZImage();
$graph_image->tikzLibraries("arrows.meta");

$graph_image->BEGIN_TIKZ
\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)};
\draw[->,thick] (0,$lm) -- (0,$um) node[below right,outer sep=2pt]{\(y\)};
\draw[very thin,color=gray] (-5,$lm) grid (5,$um);
\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)};
\foreach \y in {$lmf,...,$umc} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)};
\draw[<->,red, very thick] plot[domain={-4.5}:{4.5}] (\x,$m*(\x-$b));
\draw[red] (4,$l) node[above right, outer sep=2pt]{\(y=L(x)\)};
END_TIKZ

Context("Interval");
BEGIN_PGML
[@ image($graph_image, width => 600, tex_size => 1000) @]*

Consider the graph of the line [`L`] given above.

(a) The slope of [`L`] is [`m = `] [_]{"$m"}

(b) The [`x`]-intercept of [`L`] is [`x = `] [_]{"$b"}

(c) The [`y`]-intercept of [`L`] is [`b = `] [_]{"$yint"}

Note: You may need to calculate the [`y`]-intercept by using your answers to parts (a) and (b).

END_PGML

ENDDOCUMENT();
Loading