diff --git a/CHANGELOG.md b/CHANGELOG.md
index ad42e82c..90ac32c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,10 @@ Instructions: Add a subsection under `[Unreleased]` for additions, fixes, change
## [Unreleased]
+### Changed
+
+- Improved `course` template and updated readme's for main templates.
+
## [2.33.0] - 2025-12-06
Includes updates to core through commit: [1c97959](https://github.com/PreTeXtBook/pretext/commit/1c97959297d51749717f9b34ce5da131c960b92d)
diff --git a/templates/article/README.md b/templates/article/README.md
index dbf66131..2616b71d 100644
--- a/templates/article/README.md
+++ b/templates/article/README.md
@@ -35,7 +35,7 @@ The most important thing to remember when authoring in a codespace is that you a
We have tried to keep the codespace small (so it starts up quickly and doesn't eat through your monthly storage allotment), so we do not include a full TeXLive distribution. We have tried to include most packages and fonts you are likely to need to generate images using `` elements, and to generate PDF print output. However, if you run into a situation where the LaTeX gives errors about packages missing (like it cannot find a `mypackage.sty` file), here is what you should do.
-1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
+1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
a. If you know that the package is called `mypackage` then enter the following two lines:
```bash
@@ -48,12 +48,21 @@ We have tried to keep the codespace small (so it starts up quickly and doesn't e
tlmgr search --global --all "mypackage.sty"
```
-2. To ensure that you don't have to repeat this step every time you recreate the codespace, add the package name to the list of installs inside the file `.devcontainer/installLatex.sh` which gets run every time a codespace is created.
-
-3. Better yet, post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit (if you edit the `installLatex.sh` file, then it won't be updated when you run `pretext update`).
+2. Then please post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit. The next time you update PreTeXt, you should get the better version of the devcontainer and everyone else will benefit as well.
### Troubleshooting: sageplot images
-By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+
+Open the file `.devcontainer/devcontainer.json` and edit the line that contains
+
+```
+ "image": "pretextbook/pretext:latest",
+```
+(or perhaps instead of `latest`, you have a version number). Change this to
+
+```
+ "image": "pretextbook/pretext-full:latest",
+```
-Just open the command palette (`Ctrl+Shift+P` of `F1`) and search for "PreTeXt: Install SageMath". This will also update the `.devcontainer/devcontainer.json` file so that the next time you create a codespace for this project, it should install automatically.
+VS Code should prompt you to rebuild your codespace, which you should do (you do not need to do a "full rebuild" though). This docker image contains sagemath and you should be able to add sageplots and generate them successfully now.
diff --git a/templates/book/README.md b/templates/book/README.md
index 4ce1d16c..a2340ed5 100644
--- a/templates/book/README.md
+++ b/templates/book/README.md
@@ -36,7 +36,7 @@ The most important thing to remember when authoring in a codespace is that you a
We have tried to keep the codespace small (so it starts up quickly and doesn't eat through your monthly storage allotment), so we do not include a full TeXLive distribution. We have tried to include most packages and fonts you are likely to need to generate images using `` elements, and to generate PDF print output. However, if you run into a situation where the LaTeX gives errors about packages missing (like it cannot find a `mypackage.sty` file), here is what you should do.
-1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
+1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
a. If you know that the package is called `mypackage` then enter the following two lines:
```bash
@@ -49,12 +49,21 @@ We have tried to keep the codespace small (so it starts up quickly and doesn't e
tlmgr search --global --all "mypackage.sty"
```
-2. To ensure that you don't have to repeat this step every time you recreate the codespace, add the package name to the list of installs inside the file `.devcontainer/installLatex.sh` which gets run every time a codespace is created.
-
-3. Better yet, post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit (if you edit the `installLatex.sh` file, then it won't be updated when you run `pretext update`).
+2. Then please post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit. The next time you update PreTeXt, you should get the better version of the devcontainer and everyone else will benefit as well.
### Troubleshooting: sageplot images
-By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+
+Open the file `.devcontainer/devcontainer.json` and edit the line that contains
+
+```
+ "image": "pretextbook/pretext:latest",
+```
+(or perhaps instead of `latest`, you have a version number). Change this to
+
+```
+ "image": "pretextbook/pretext-full:latest",
+```
-Just open the command palette (`Ctrl+Shift+P` of `F1`) and search for "PreTeXt: Install SageMath". This will also update the `.devcontainer/devcontainer.json` file so that the next time you create a codespace for this project, it should install automatically.
\ No newline at end of file
+VS Code should prompt you to rebuild your codespace, which you should do (you do not need to do a "full rebuild" though). This docker image contains sagemath and you should be able to add sageplots and generate them successfully now.
diff --git a/templates/course/README.md b/templates/course/README.md
index f055f5ce..3ee722e7 100644
--- a/templates/course/README.md
+++ b/templates/course/README.md
@@ -1,43 +1,56 @@
# My PreTeXt Course
-This README was generated by running `pretext new course`. You should feel free to edit this to describe your project. Thanks to Mitch Keller for his contributions to this template.
+This README was generated by running `pretext new course`. You should feel free to edit this to describe your project.
## Instructions
-Build the entire course with:
+The course template includes a single PreTeXt "book" that contains (as chapters) different course documents you might want to share with students. What is included is determined by the `main.ptx` file in the `source` folder. The starts of files for a syllabus, weekly notes, activities (worksheets), handouts, and homework are also included.
+
+You can build the course using
```bash
-pretext build --deploys
+pretext build course
```
-and then view it with
+and view it with
```bash
-pretext deploy --stage-only
-pretext view -d
+pretext view course
```
-If you want to build just a single activity, say the "Magic Beans" activity, run:
+Also included is the start of a slide deck. This is a single file in the `source/slides` folder. You could use this for all the slides in a course (as a single slideshow), or create separate slideshows. In that case, you might want to build those separate ones with something like,
```bash
-pretext build pdf -i ./source/activities/magic-beans.ptx
+pretext build slides -i source/slides/chapter2.ptx
```
-This will create a pdf inside the `output/pdfs` directory.
+### Creating a landing page for multiple targets
-Another thing to try:
+Build the entire course with:
```bash
-pretext build scorm -i ./source/activities/magic-beans.ptx
+pretext build --deploys
```
+This will build both the course "book" and the slide deck. You can create a landing page with links to each of these automatically with the command,
-### How this is done
+```bash
+pretext deploy --stage-only
+```
-Look at the source files, in particular `source/acitivies.ptx` and `source/activities/magic-beans.ptx` to see how the activities are included in the main document and can also build on their own.
+and then view the results with,
-The use of `xpointer="/1/1/1"` is a little mysterious; we could have also used `xpoint="Activity-magic-beans"` to refer to the activity by its `xml:id`, although this would require us changing that for each included activity.
+```bash
+pretext view -d
+```
+If you then run
+
+```bash
+pretext deploy
+```
+
+everything will be pushed to github pages.
---
@@ -61,7 +74,7 @@ The most important thing to remember when authoring in a codespace is that you a
We have tried to keep the codespace small (so it starts up quickly and doesn't eat through your monthly storage allotment), so we do not include a full TeXLive distribution. We have tried to include most packages and fonts you are likely to need to generate images using `` elements, and to generate PDF print output. However, if you run into a situation where the LaTeX gives errors about packages missing (like it cannot find a `mypackage.sty` file), here is what you should do.
-1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
+1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
a. If you know that the package is called `mypackage` then enter the following two lines:
```bash
@@ -74,12 +87,21 @@ We have tried to keep the codespace small (so it starts up quickly and doesn't e
tlmgr search --global --all "mypackage.sty"
```
-2. To ensure that you don't have to repeat this step every time you recreate the codespace, add the package name to the list of installs inside the file `.devcontainer/installLatex.sh` which gets run every time a codespace is created.
-
-3. Better yet, post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit (if you edit the `installLatex.sh` file, then it won't be updated when you run `pretext update`).
+2. Then please post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit. The next time you update PreTeXt, you should get the better version of the devcontainer and everyone else will benefit as well.
### Troubleshooting: sageplot images
-By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+
+Open the file `.devcontainer/devcontainer.json` and edit the line that contains
+
+```
+ "image": "pretextbook/pretext:latest",
+```
+(or perhaps instead of `latest`, you have a version number). Change this to
+
+```
+ "image": "pretextbook/pretext-full:latest",
+```
-Just open the command palette (`Ctrl+Shift+P` of `F1`) and search for "PreTeXt: Install SageMath". This will also update the `.devcontainer/devcontainer.json` file so that the next time you create a codespace for this project, it should install automatically.
+VS Code should prompt you to rebuild your codespace, which you should do (you do not need to do a "full rebuild" though). This docker image contains sagemath and you should be able to add sageplots and generate them successfully now.
diff --git a/templates/course/project.ptx b/templates/course/project.ptx
index 7f9b27b1..013951de 100644
--- a/templates/course/project.ptx
+++ b/templates/course/project.ptx
@@ -1,32 +1,32 @@
+
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -89,4 +89,4 @@
/>
--->
\ No newline at end of file
+-->
diff --git a/templates/course/publication/publication-slides-annotated.ptx b/templates/course/publication/publication-slides-annotated.ptx
new file mode 100644
index 00000000..788808d4
--- /dev/null
+++ b/templates/course/publication/publication-slides-annotated.ptx
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/course/publication/publication-slides.ptx b/templates/course/publication/publication-slides.ptx
new file mode 100644
index 00000000..935aadc1
--- /dev/null
+++ b/templates/course/publication/publication-slides.ptx
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/course/publication/publication-syllabus.ptx b/templates/course/publication/publication-syllabus.ptx
deleted file mode 100644
index 33f0c1c7..00000000
--- a/templates/course/publication/publication-syllabus.ptx
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/course/publication/publication.ptx b/templates/course/publication/publication.ptx
index eaad8291..a296d5b6 100644
--- a/templates/course/publication/publication.ptx
+++ b/templates/course/publication/publication.ptx
@@ -12,7 +12,7 @@
-
+
@@ -52,6 +52,7 @@
+
@@ -105,10 +106,12 @@
-
+
+
+
@@ -143,9 +146,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/course/source/activities.ptx b/templates/course/source/activities.ptx
deleted file mode 100644
index c8dcb874..00000000
--- a/templates/course/source/activities.ptx
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- In-Class Activities
-
-
-
-
- These activities are designed to be used in class to help students understand the material. They are not graded, but students are encouraged to work on them in groups and ask the instructor for help when needed.
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/course/source/activities/wkst-relns-digramphs.ptx b/templates/course/source/activities/00-sample-activity.ptx
similarity index 98%
rename from templates/course/source/activities/wkst-relns-digramphs.ptx
rename to templates/course/source/activities/00-sample-activity.ptx
index 2e6dcae5..bee2c6d3 100644
--- a/templates/course/source/activities/wkst-relns-digramphs.ptx
+++ b/templates/course/source/activities/00-sample-activity.ptx
@@ -1,8 +1,8 @@
-
-
- Relations and Digraphs
+
+
+ Sample Activity: Relations and Digraphs
@@ -39,6 +39,7 @@
+
diff --git a/templates/course/source/activities/activity-template.ptx b/templates/course/source/activities/activity-template.ptx
index b9c3960d..96e02957 100644
--- a/templates/course/source/activities/activity-template.ptx
+++ b/templates/course/source/activities/activity-template.ptx
@@ -1,25 +1,23 @@
-
-
+
+
+ Activity Title
-
-
- Activity Title
+
+
+
- You have traded your cow for 5 magic chocolate covered espresso beans.
- Each night at midnight, each bean splits into three beans.
- To take advantage of this, you eat 8 beans each morning for breakfast.
- You wonder how many beans you will have after breakfast 30 days after you traded your cow.
-
-
-
- Let (b_n)_{n\ge 0} be the sequence of number of beans you have n days after trading your cow, (after breakfast, before midnight; take b_0 = 5).
-
-
-
-
-
-
-
-
- Write out the first few terms of the sequence.
- Then give a recursive definition for the sequence and explain how you know it is correct.
-
-
-
-
-
-
-
- What do you notice about all elements of the sequence? Will they all be ...? Prove your conjecture by mathematical induction.
-
-
-
-
-
-
-
-
-
-
- Find a closed formula for b_n and prove it is correct using induction.
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/course/source/activities/wkst-eqrel-counting.ptx b/templates/course/source/activities/wkst-eqrel-counting.ptx
deleted file mode 100644
index 7be48a27..00000000
--- a/templates/course/source/activities/wkst-eqrel-counting.ptx
+++ /dev/null
@@ -1,413 +0,0 @@
-
-
-
- Equivalence Relations and Counting
-
-
-
-
-
- Let A = \{a, b, c, d, e\}. Suppose R is an equivalence relation on A. Suppose R has two equivalence classes. Also aRd, bR c, and eRd. Write out R as a set.
-
-
-
-
-
- Since R is an equivalence relation, the relation is reflexive, so every element is related to itself. Since we are told aRd, this means by symmetry that d R a. Similarly, cRb because bRc and dRe because eRd. By transitivity, we have that aRe and e R a. To make writing the elements of R easier to see, here is the equivalence relation as a diagram:
-
-
- An equivalence relation as a digraph
-
-
- N=5
- f(t)=(cos(2*pi*t/N), sin(2*pi*t/N))
-
-
- a
- b
- c
- d
- e
-
-
-
-
-
-
- From this, we can more readily see that the relation will be
-
- R = \{ \amp(a,a), (d,d), (e,e), (a,d), (d,a), (a,e), (e,a) ,
- \amp (d,e), (e,d), (b,b), (c,c), (b,c), (c,b) \}
- .
-
-
-
-
-
-
-
- Prove the relations below are equivalence relations, and describe the relation's equivalence classes.
-
-
-
-
-
-
- The relation R on \Z, where xR y if and only if 3x -5y is even.
-
-
-
-
- We need to show that this relation is reflexive, symmetric, and transitive.
-
-
-
- For any x \in \Z, 3x-5x = -2x so this is clearly even. Hence, xRx, so R is reflexive.
-
-
-
- Suppose that x,y \in \Z with x R y, so 3x-5y is even. This means that 3x-5y=2k for some integer k. Then,
-
-
- 3y-5x \amp= 3y + 2y -2y -5x + 2x -2x
-
-
- \amp= 5y - 2y - 3x - 2x
-
-
- \amp= (5y-3x)-2x-2y
-
-
- \amp= -(3x-5y)-2x-2y
-
-
- \amp= -2k - 2x - 2y
-
-
- \amp= 2(-k-x-y)
-
- ,
- which is even because k,x,y \in \Z. Therefore, y R x as well. Thus, R is symmetric.
-
-
-
- Now, assume that x,y,z \in \Z with xRy and yRz. Therefore, 3x-5y and 3y - 5z are both even, meaning that there exist integers a and b so that 3x-5y= 2a and 3y-5z=2b. We thus have
-
-
- 3x-5z \amp= 3x -5y + 5y -5z
-
-
- \amp= (3x-5y) + 2y + (3y-5z)
-
-
- \amp= 2a + 2y + 2b
-
-
- \amp= 2(a+y+b)
-
- ,
- which is even because a,y,b \in \Z. Therefore, x R z, so R is transitive. We conclude that R is an equivalence relation.
-
-
-
- To determine the equivalence classes, note that
-
-
- [0] \amp= \{ x \in \Z : x R 0 \}
-
-
- \amp= \{ x \in \Z : 3x-5\cdot 0 \text{ is even} \}
-
- \amp= \{ x \in \Z : 3x \text{ is even} \}
-
- \amp= \{ x \in \Z : x \text{ is even} \}
-
-
- where the last equality follows because 3x is even if and only if x is even. (Further justification is left as an exercise for the reader :).) Similarly, note that
-
- [1] = \{ x \in \Z : x R 1 \} = \{ x \in \Z : 3x-5\cdot 1 \text{ is even} \} = \{ x \in \Z : x \text{ is odd} \}
-
- where we used the fact that 3x-5 is even if and only if x is odd (Also left as an exercise for the reader :).) Since the sets of even and odd integers partition the set of all integers, these are the equivalence classes.
-
-
-
-
-
-
-
- The relation R on \Z as xR y if and only if x^2 + y^2 is even.
-
-
-
-
-
- We will show that R is reflexive, symmetric, and transitive. Note that if x \in \Z, then x^2 + x^2 = 2x^2 which is clearly even, so x R x. Thus, R is reflexive. Clearly R is symmetric: if x,y\in\Z with xRy, then x^2+y^2 is even. Addition is commutative so y^2+x^2=x^2+y^2 is also even, meaning that yRx. Finally, let x,y,z \in \Z with xRy and yRz. Thus, x^2 +y^2 and y^2 + z^2 are both even, so there exist integers a and b where x^2+y^2 = 2a and y^2+z^2 = 2b. Solving for x^2 and z^2, we get that x^2 = 2a-y^2 and z^2 = 2b-y^2. Hence,
-
- x^2 + z^2 = 2a-y^2 + 2b-y^2 = 2a+2b-2y^2 = 2(a+b-y^2),
-
- which implies that x^2+z^2 is even because a,b,y \in \Z. Thus, x R z, so the relation is transitive.
-
-
-
- The equivalence classes are
-
- [0] = \{ x \in \Z : x R 0 \} = \{ x \in \Z : x^2 \text{ is even}\} = \{ x \in \Z : x \text{ is even} \}
-
- where we use the fact that x^2 is even if and only if x is even (left as an exercise:) ), and
-
- [1] = \{ x \in \Z : x R 1 \} = \{ x \in \Z : x^2 + 1 \text{ is even} \} = \{ x \in \Z : x \text{ is odd} \}
-
- where we use the fact that x^2+1 is even if and only if x is odd (left as an exercise:) ). The sets of even and odd integers partition \Z, so these are the equivalence classes.
-
-
-
-
-
-
-
-
- Describe the partition of \Z resulting from the equivalence relation \equiv \pmod{4}.
-
-
-
-
- The way congruence modulo 4 partitions \Z is based on the remainder after division. So, there are four equivalence classes:
-
-
- [0] \amp = \{ x \in \Z : x \equiv 0 \pmod 4\} = \{ \ldots,-8, -4, 0, 4, 8, 12, \ldots \},
-
-
- [1] \amp = \{ x \in \Z : x \equiv 1 \pmod 4\} = \{ \ldots,-7, -3, 1,5, 9, 13, \ldots \},
-
-
- [2] \amp = \{ x \in \Z : x \equiv 2 \pmod 4\} = \{ \ldots,-6,-2,2,6,10,14 \ldots \},
-
- and
-
- [3] \amp = \{ x \in \Z : x \equiv 3 \pmod 4\} = \{ \ldots,-5,-1,3,7,11,15, \ldots \}.
-
-
-
-
-
-
-
-
- Consider the following definitions for characters: the digits are the integers between 0 and 9 (inclusive), the letters are the lowercase letters (a through z), and the special characters are \{*, ?, \$, \# \}. Compute the number of passwords that satisfy the given constraints.
-
-
-
-
-
-
- Strings of length 6, where characters can be special characters, digits, or letters.
-
-
-
-
-
- The sets of special characters, digits, and letters are all mutually disjoint, which means that by the sum rule the total number of characters will be 10 + 26 + 4 = 40. Then, each of the six characters in the string can be any of the 40 characters, so there are a total of 40^6 possible passwords.
-
-
-
-
-
-
-
- Strings of length 7,8, or 9. Characters can be special characters, digits, or letters.
-
-
-
-
-
- The strings of length 7, 8, and 9 are mutually disjoint, so by the sum rule we have that there are 40^7 + 40^8 + 40^9 possible passwords.
-
-
-
-
-
-
-
- Strings of length 7,8, or 9. Characters can be special characters, digits, or letters. The first character cannot be a letter.
-
-
-
-
-
- When choosing a string of length j where the first character is not a letter, there are 10+4 = 14 available choices for the first character between digits and special characters, and 40 choices remaining for the remaining j-1 elements of the string. Hence, for a string of length j subject to these constraints, there are 14 \cdot 40^{j-1} choices. The sets of strings of lengths 7, 8, and 9 are mutually disjoint, so by the sum rule, the total number of strings subject to the given constraints will be
-
- 14 \cdot 40^{7-1} + 14\cdot 40^{8-1} + 14\cdot 40^{9-1} = 14 ( 40^6 + 40^7 + 40^8).
-
-
-
-
-
-
-
-
- The password must be a string of length 6. Characters can be special characters, digits, or letters, with no repeated characters.
-
-
-
-
-
- Since there are a total of 40 characters, and characters are not repeated, there is 40 choices for the first character, 39 choices for the second character, 38 choices for the third, etc. Hence, the total number of strings of length 6 without character repetitions is 40 \cdot 39 \cdot 38 \cdot 37 \cdot 36 \cdot 35.
-
-
-
-
-
-
-
- The password must be a string of length 6. Characters can be special characters, digits, or letters, with no repeated characters. The first character cannot be a special character.
-
-
-
-
-
- Since the first character cannot be a special character, there are 10 + 26 = 36 choices for the first character. Once the first character has been chosen, then there are 39 choices for the second character because we do not allow for repeated characters. For the third character, there will be 38 choices, etc. Hence, the total number of strings of length 6 with no repetitions in which the first character is not a special character will be 36 \cdot 39 \cdot 38 \cdot 37 \cdot 36 \cdot 35.
-
-
-
-
-
-
-
-
-
-
- Find a function from the set \{1,2,\ldots,30\} to \{1,2,\ldots,10\} that is a 3-to-1 correspondence. (The division, ceiling, or floor operations may be useful here.)
-
-
-
-
-
- One possibility is f(x) = \lceil \frac{x}{3} \rceil. This is a 3-to-1 correspondence because for j \in \{1, 2, \ldots, 10\}, the numbers that will get mapped to j under f will be 3j, 3j-1, and 3j-2 (which are all elements of \{1,2,\cdots,30\}).
-
-
-
-
-
-
-
- How many strings are there over the set \{a,b,c\} that have length 10 in which no two consecutive characters are the same? For example, the string abcbcbabcb counts, and the strings abbbcbabcb and aacbcbabcb do not count.
-
-
-
-
-
- There are 3 choices for the first character in the string, and 2 choices for the second character. For the third, since we cannot have two consecutive characters be the same, we therefore have 2 choices. Similarly, there are 2 choices for the fourth, etc. Hence, there are 3 \cdot 2^9 strings of length 10 in which no two consecutive characters are the same.
-
-
-
-
-
-
-
-
-
-
- A girl scout troop with ten girl scouts and two leaders goes on a hike. When the path narrows, the troop must walk in single file with a leader at the front and a leader at the back. How many ways are there for the entire troop (including the girl scouts and the leaders) to line up?
-
-
-
-
-
- There are 2 choices for the leader at the front. Then, there are 10! choices made for the ten girl scouts in the middle. Finally, there is one choice for the leader at the back of the line. Hence there are 2 \cdot 10! ways to line up the entire troop.
-
-
-
-
-
-
-
- Suppose a network has 40 computers of which five fail.
-
-
-
-
-
-
- How many possibilities are there for the five that fail?
-
-
-
-
-
- Note that this is the same as selecting a subset of five computers from a set of 40 computers. There are \binom{40}{5} ways to do this.
-
-
-
-
-
-
-
- Suppose that three of the computers in the network have a copy of a particular file. How many sets of failures wipe out all the copies of the file? That is, how many 5-subsets contain the three computers that have the file?
-
-
-
-
-
- In this context, any such 5-subset of computers that fail must contain the three computers that have the file. The two remaining computers in the subset must then be selected from the 37 computers that did not contain the file. Thus, the number of such 5-subsets in which the three computers with the file fail is the number of ways to select two computers from the 37 computers without the file, which is \binom{37}{2}.
-
-
-
-
-
-
-
-
- A search committee is formed to find a new software engineer to hire.
-
-
-
-
-
-
- If 100 applicants apply for the job, how many hays are there to select a subset of 9 applicants for a short list?
-
-
-
-
-
- There are \binom{100}{9} ways to select 9 applicants out of 100.
-
-
-
-
-
-
-
- If 6 of the 9 are selected for an interview, how many ways are there to pick the set of applicants who are interviewed? (Assume that the short list is already decided.)
-
-
-
-
-
- There are \binom{9}{6} ways to pick the set of applicants who are interviewed.
-
-
-
-
-
-
-
- Based on the interview, the committee will rank the top 3 applicants and submit the list to the boss who will make the final decision. (Assume that the interviewees are already decided.) How many ways are there to select the list from the 6 applicants?
-
-
-
-
-
- Since the applicants will be ranked, they are ordered. Therefore, there are P(6,3) = \frac{6!}{2!} ways to select an ordered list of 3 people without repetitions from a set of 6 applicants.
-
+ Instructions: Complete all the parts below on a separate page (not between the prompts). Submit your work by uploading a single PDF to Canvas. This can either be a scan of handwritten solutions or a PDF you created by first typing your solutions.
+
+
+
+ Note that the last prompt asks you to write a project proposal. This should be written out in paragraph form. Pretend you are really trying to earn the business of the farmer, so make it professional and accurate.
+
+
+
+
+
+
+
+
+ A local farmer has reached out to your family's livestock containment company for an estimate to create a habitat for their new emus. The requirements given to you by the farmer are:
+
+
+
+ Create a rectangular habitat that is 4000 square feet total, divided into two equal sized areas.
+
+
+
+
+ Exterior fence must be 6' tall sturdy 12 gauge galvanized steel.
+
+
+
+
+ Interior fence to divide the two areas can be 4' tall and as needs to only be 16 gauge.
+
+
+
+
+ Since emu's like to run, it is preferable to have one dimension of the individual areas be at least 100' long.
+
+
+
+ The farmer has requested a project plan, including estimates, for the habitat. Your dad has asked you to use calculus to help write the proposal.
+
+
+
+ On your end, you know that including parts and labor, the exterior fence will cost $15 per foot, while the interior fence costs only $10 per foot.
+
+
+
+
+
+
+
+
+ Start by drawing a schematic for the project.
+
+
+
+
+
+
+
+ Suppose one dimension is exactly 100'. Find the other dimension and compute the exact cost for this version of the habitat.
+
+
+
+
+
+
+
+ Is there a way to reduce the cost for the farmer? Create a function C(x) that gives the total cost of a project when the long side of the habitat is x feet long. Verify that C(100) is the same cost as you found in the previous part.
+
+
+
+
+ You will likely want to first write C in terms of two dimensions. Then use the fact that the total area of the habitat must be 4000 square feet to eliminate one variable.
+
+
+
+
+
+
+
+ Sketch a graph of the function C(x) on an appropriate domain.
+
+
+
+
+
+
+
+ Use calculus to find the absolute minimum of the function C(x), both with and without the restriction that one side of the habitat must be 100' long.
+
+
+
+
+
+
+
+ Use what you have found in the above parts to write a self contained project proposal, that includes at least two options for the farmer. Clearly explain what the options are, how much they would cost, and what the farmer would get with each. Remember, you are trying to sell fence here. Don't dissapoint your dad!
+
+ The following notes are intended to remind you what we covered each week.
+ They are not a substitute for attending class and not a substitute for reading the textbook.
+
+
+
+
+
+
+
+
+
+
+
+ In-Class Activities
+
+
+
+ These are copies of the in-class activities distributed during the semester.
+
- The following notes are intended to remind you what we covered each week. They are not a substitute for attending class and not a substitute for reading the textbook.
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/course/source/notes/week01.ptx b/templates/course/source/notes/week01.ptx
index be4df2a0..8fda3ba6 100644
--- a/templates/course/source/notes/week01.ptx
+++ b/templates/course/source/notes/week01.ptx
@@ -1,13 +1,35 @@
-
-
-
- Week 1
-
- This week we covered the following topics:
-
-
-
-
-
\ No newline at end of file
+
+ Week 1
+
+
+
+ This is an outline of the topics we covered in the first week of class.
+
- Basic concepts of logic, sets, partial order and other relations, and functions. Basic concepts of mathematics (definitions, proofs, sets, functions, and relations) with a focus on discrete structures: integers, bits, strings, trees, and graphs. Propositional logic, Boolean algebra, and predicate logic. Mathematical induction and recursion. Invariants and algorithmic correctness. Recurrences and asymptotic growth analysis. Fundamentals of counting.
-
-
-
- Credits
-
- 3
-
-
-
- Course Designations and Attributes
-
-
-
- Breadth
-
- Natural Science
-
-
-
- Level
-
- Intermediate
-
-
-
- L&S Credit
-
- Counts as Liberal Arts and Science credit in L&S
-
-
-
-
-
-
- Requisite
-
- MATH 217 or 221
-
-
-
- Instructional modality
-
- In-person
-
-
-
-
-
- Learning Outcomes
-
-
-
-
- Be able to construct proofs by induction to prove properties in a variety of domains (mathematical formulas, recursively-defined structures, loop invariants, correctness of recursive programs).
-
-
-
-
- Apply basic combinatoric techniques to counting problems.
-
-
-
-
- Develop basic skills to construct mathematically rigorous arguments and proofs.
-
-
-
-
- Gain exposure to the basics of program analysis (program correctness, recurrences, asymptotic analysis).
-
-
-
-
- Demonstrate a familiarity with and an ability to reason about discrete structures/data types (integers, strings, bit strings, sets, relations, functions, graphs, trees).
-
-
-
-
-
-
- Meeting Times and Locations
-
- Both sections have lecture meetings in ... LEC 001 meets TR 11am12:15pm and LEC 002 meets TR 9:3010:45am. Each student is enrolled in one 50-minute discussion section led by one of the teaching assistants. Your discussion section meets either on Monday or Wednesday. Check your Student Center for your discussion number, time, and location.
-
-
-
- How the Credit Hours are Met by the Course
-
- This class meets for two 75-minute lectures and one 50-minute discussion each week over the semester and carries the expectation that students will work on course learning activities (e.g. reading, problem sets, papers, and studying) for about six hours outside of classroom per week. The syllabus includes more information about meeting times and expectations for student work.
-
- Students are welcome to attend the office hour of the instructor or any of the teaching assistants. Office hours are posted on Canvas, including updates in the event any individual office hour is cancelled or rescheduled.
-
-
-
-
- Textbook and Other Required Materials
-
-
-
- Textbook
-
- The required course text is the ebook Introduction to Discrete Mathematics by Irani et al. The ISBN is 978-1-394-05895-2. A subscription is $64. Students may begin subscribing on January 7, 2025 and the cutoff to subscribe is April 26, 2025. Subscriptions will last until May 23, 2025. To subscribe, click any zyBooks assignment link in Canvas and subscribe. (Do not go to the zyBooks website and create a new account.)
-
-
-
- Canvas
-
- Course materials will be posted to or linked from Canvas. This includes lecture slides, discussion worksheets, zyBook Participation and Challenge Activities, sample test questions, and written homework assignments. Announcements from the instructor and TAs will also be posted using Canvas. You are responsible for reading Canvas announcements in a timely manner.
-
-
-
- Gradescope
-
- You will scan and submit your written homework to Gradescope. Homework will be graded and returned to you within Gradescope. Tests and the final exam will be taken on paper, but the instructional team will scan them and upload them to Gradescope. Graded tests and the final exam will be returned to you using Gradescope. You will be able to access Gradescope using links from Canvas.
-
-
-
- Piazza
-
- We will use Piazza. This page is a forum for you to discuss the material of this class with other students and your TAs and/or instructor. Posts to this page should be confined to questions regarding the material and logistical questions about the class (e.g., exam dates and locations). Please do not use email for math questions.
-
-
- Any posts containing comments (either positive or negative) about the instructors, the class, the students, or anything else, will be deleted. Unprofessional conduct may result in disciplinary action.
-
- Reading assignments including questions graded for completion to give you the opportunity to check your understanding will be regularly assigned in our zyBook. These assignments are meant to be done before we cover content in lecture so that we have more time for active learning in class. You will receive full credit for a zyBook Participation Activity if you answer the questions. Because these zyBook Participation Activities are your first exposure to the material, we do not expect you to understand everything from the reading alone. You will gain the most from these activities if you take them seriously, think about the questions before answering, and work to understand the reasoning for the correct answer when you get a question incorrect.
-
-
- zyBook Participation Activities are due each Tuesday morning at 8am CT. They are worth 3% of your course grade. No late zyBook Participation Activities will be accepted, but the lowest three scores will be dropped.
-
-
-
- Discussion Participation
-
- Starting in the second week, the teaching assistants will take attendance in discussion. Mathematics is a human activity, and we learn by engaging with other humans. Discussion allows you to do this in a small enough group that every student can interact with peers and their TA during each meeting. Students who do not actively participate during activities in discussion may not receive credit for participation. You must attend the discussion section for which you are registered; missed discussion sections may not be made up. However, we will drop three, so discussion participation will be taken out of 10 and is 3% of your course grade.
-
-
-
- zyBook Challenge Activities
-
- Most weeks you will have a zyBook Challenge Activity. Unlike the zyBook Participation Activities, the zyBook Challenge Activities are (automatically) graded for correctness. The zyBook Challenge Activities follow up on material from lecture after you have also had time to work on the material in discussion.
-
-
- zyBook Challenge Activities are due Thursday nights at 11:59pm CT. They are worth 7% of your course grade. No late zyBook Challenge Activities will be accepted, but the lowest two scores will be dropped.
-
-
-
- Written Homework
-
- Most weeks you will have a written homework assignment. These will give you an opportunity to write out proofs and solutions in the manner that you will be expected to on the exams. You will submit your solutions using Gradescope following instructions provided on Canvas. The questions on each written homework will be graded for correctness by the TAs and graders.
-
-
- Collaborating with other students on the written homework is encouraged, but you must write up all reasoning and solutions on your own (in other words, no copying). Failure to abide by this guideline could be construed as a form of academic dishonesty.
-
-
- The purpose of this course is to develop your ability to understand and construct mathematical arguments or proofs. The use of artificial intelligence (AI) tools and applications (including, but not limited to, ChatGPT, Copilot, DALL-E, and others) for written homework does not support the learning objectives of this course and is prohibited. Using them in any way for written homework in this course is a violation of the course’s expectations and will be addressed through UW–Madison’s academic misconduct policy, specifically UWS 14.03(1)b (b) Uses unauthorized materials or fabricated data in any academic exercise.
-
-
- Each problem on written homework should be completed with neat, understandable, detailed solutions and explanations. Your explanations and proofs must be sound and rigorous, paying attention to detail and clarity.
-
-
- Written homework is due Thursday nights at 11:59pm CT. It is worth 15% of your course grade. Late written homework will generally not be accepted. Since you likely will either experience a technical difficulty (e.g., missed the deadline, your computer shut down as you were submitting it, internet outage, etc.) or a personal emergency (being sick, attending a funeral, etc.) during the semester, the two lowest two written homework scores will be dropped. You do not need to contact your instructor or TA if such a situation does come up.
-
-
-
- Tests and Exams
-
- This course will have two tests and a final exam. Each will be worth 24% of your course grade. The dates and times for these assessments are:
-
-
- Test I
-
- Wednesday, February 26, 2025. 7:309pm. Location announced via Canvas.
-
-
-
- Test II
-
- Wednesday, April 9, 2025. 7:309pm. Location announced via Canvas.
-
-
-
- Final Exam
-
- Tuesday, May 6, 2025. 5:057:05pm. Location announced via Canvas.
-
-
-
-
-
- Students must use the form provided on Canvas to inform the instructor of conflicts with the dates and times of the tests or final exam during the first two week of classes. Reports of conflicts will be reviewed. Submitting incorrect information in order to take a test or the final exam at a different time may be considered an act of academic misconduct.
-
-
- During exams, students will not be allowed to use any notes or electronic devices. Ample space will be provided on the exams for you to show your work. You must bring a writing utensil.
-
-
- Added March 7, 2025: If a student's overall course grade would increase by using their final exam score in place of the lower of their scores on Test I and Test II, they will receive the grade based on this alternative grade computation method.
-
-
-
-
- Grading
-
- The grade components and their are all identified above. For quick reference, they are also summarized in the table below.
-
-
-
- Component
- Weight
-
-
- zyBook Participation Activities
- 3%
-
-
- Discussion Participation
- 3%
-
-
- zyBook Challenge Activities
- 7%
-
-
- Written Homework
- 15%
-
-
- Test I
- 24%
-
-
- Test II
- 24%
-
-
- Final Exam
- 24%
-
-
-
- Grades will be calculated to two decimal places. They will not be rounded up to the next integer. The lower cutoff for each letter grade is given in the table below. It is possible that these cutoffs will be adjusted at the end of the semester. However, if this is done, it will only be done in a way that benefits students by lowering the cutoff to earn a given letter grade.
-
-
-
-
- Letter Grade
- Lower Cutoff
-
-
- A
- 92%
-
-
- AB
- 87%
-
-
- B
- 82%
-
-
- BC
- 77%
-
-
- C
- 70%
-
-
- D
- 60%
-
-
- F
- 0%
-
-
-
- Incomplete Grades
-
- Incomplete grades will be assigned only under extraordinary circumstances in accordance with L&S policy, which states as follows:
-
-
-
- An Incomplete (I) may be reported for a student who has been enrolled in a course with a passing grade until near the end of the semester/term and then, due to illness or some other unusual and substantiated cause beyond the student’s control, has been unable to take or complete the final examination (or to complete some limited amount of term work). An Incomplete is not given to a student who stays away from a final examination unless the student proves to the instructor that he or she was prevented from attending as indicated above. In the absence of such proof the grade reported will be an F. Even when a student can provide verifiable documentation, a student may still earn a grade of F if his/her work convinces the instructor that the student cannot successfully pass the course.
-
-
-
- If you feel an incomplete grade may be warranted, you must contact me before the end of the final examination period on Friday, May 9, 2025.
-
-
-
-
- Tentative Schedule of Topics
-
-
-
- Week 1
-
- Integer Properties; Logic
-
-
-
- Week 2
-
- Logic
-
-
-
- Week 3
-
- Proofs
-
-
-
- Week 4
-
- Sets; Functions
-
-
-
- Week 5
-
- Functions; Computation
-
-
-
- Week 6
-
- Computation and Test I on Wednesday, February 26 (7:309pm)
-
-
-
- Week 7
-
- Induction
-
-
-
- Week 8
-
- Recursion
-
-
-
- Week 9
-
- Recursion; Recurrence Relations
-
-
-
- Spring Break
-
- March 2230, 2025
-
-
-
- Week 10
-
- Relations and digraphs
-
-
-
- Week 11
-
- Couting and Test II on Wednesday, April 9 (7:309pm)
-
-
-
- Week 12
-
- Counting; Graphs
-
-
-
- Week 13
-
- Graphs
-
-
-
- Week 14
-
- Trees
-
-
-
- Final Exam
-
- Tuesday, May 6 (5:057:05pm)
-
-
-
-
-
- Note that class will meet as scheduled during the weeks of the two tests in addition to meeting on Wednesday evening for the test.
-
-
-
- Institutional Syllabus Statements
-
- The following statements from the institution all apply in this course:
-
-
-
- Academic Calendar & Religious Observances
-
-
-
-
-
- Academic Integrity
-
-
-
-
-
- Statement Accommodations for Students with Disabilities
-
-
-
-
-
- Course Evaluations
-
-
-
-
-
- Diversity & Inclusion Statement
-
-
-
-
-
- Mental Health and Well-Being Statement
-
-
-
-
-
- Privacy of Student Records & the Use of Audio Recorded Lectures Statement
-
-
-
-
-
- Students Rules, Rights & Responsibilities, and
-
-
-
-
-
- Teaching & Learning Data Transparency Statement
-
-
-
- The full text of all of these statements can be found in the Guide.
-
-
-
-
diff --git a/templates/course/source/syllabus/subsec-dates.ptx b/templates/course/source/syllabus/subsec-dates.ptx
new file mode 100644
index 00000000..0eadfdb4
--- /dev/null
+++ b/templates/course/source/syllabus/subsec-dates.ptx
@@ -0,0 +1,57 @@
+
+
+
+ Important Dates
+
+
+
+
+ Friday, Aug 25
+
+
+ Last day to add a class
+
+
+
+
+ Monday, Sep 4
+
+
+ Labor Day (no classes)
+
+
+
+
+ Monday, Sep 8
+
+
+ Last day to drop a class
+
+
+
+
+ Nov 26 - Nov 28
+
+
+ Thanksgiving break (no classes Wednesday, Thursday or Friday)
+
+
+
+
+ Friday, Dec 5
+
+
+ Last day to withdraw from class and receive a W
+
+ Welcome to what promises to be an exciting and fun semester of ...
+
+
+
+
+ Course Information
+
+
+ This is the syllabus for course name (MATH xxx, section xxx) for semester 20xx.
+ It is a x credit course.
+
+
+ Instructor
+
+
+ Prof.
+ Lastname, Office Location, prof.lastname@example.edu.
+
+
+
+
+ Student Hours
+
+
+ TBD
+
+
+
+ Important: I want to see you in student hours, and will happily make appointments with you outside of the regular hours. I'm also available by email and will respond within 24 hours, usually much sooner. There is little I enjoy more than discussing mathematics, so you are really doing me a favor by coming to see me.
+
+
+
+
+ Class meets
+
+
+ course times and location.
+
+
+
+
+ Course Description
+
+
+ course description from catalog
+
+
+
+
+ Prerequisite
+
+
+ list of prerequisites
+
+
+
+
+ Textbook and course materials
+
+
+ textbook name
+ by textbook author.
+
+
+
+
+
+
+
+ Course Overview
+
+
+
+
+
+
+
+
+ Assessments and Grades
+
+
+
+
+
+
+ Learning targets
+
+
+ By the end of this course, you should be able to:
+
+ Your level of effort and engagement will be assessed through your participation in class and completion of a variety of homework assignments.
+
+
+ Participation
+
+
+
+
+
+
+ Daily Prep Assignments
+
+
+
+
+
+
+ Practice Problems
+
+
+
+
+
+
+ Written Homework
+
+
+
+
+
+
+
+
+
+
+ Final Grades
+
+
+
+
+
+
+
+
+
diff --git a/templates/demo/README.md b/templates/demo/README.md
index 7ea1f0be..888a8dd5 100644
--- a/templates/demo/README.md
+++ b/templates/demo/README.md
@@ -36,7 +36,7 @@ The most important thing to remember when authoring in a codespace is that you a
We have tried to keep the codespace small (so it starts up quickly and doesn't eat through your monthly storage allotment), so we do not include a full TeXLive distribution. We have tried to include most packages and fonts you are likely to need to generate images using `` elements, and to generate PDF print output. However, if you run into a situation where the LaTeX gives errors about packages missing (like it cannot find a `mypackage.sty` file), here is what you should do.
-1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
+1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package.
a. If you know that the package is called `mypackage` then enter the following two lines:
```bash
@@ -49,12 +49,21 @@ We have tried to keep the codespace small (so it starts up quickly and doesn't e
tlmgr search --global --all "mypackage.sty"
```
-2. To ensure that you don't have to repeat this step every time you recreate the codespace, add the package name to the list of installs inside the file `.devcontainer/installLatex.sh` which gets run every time a codespace is created.
-
-3. Better yet, post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit (if you edit the `installLatex.sh` file, then it won't be updated when you run `pretext update`).
+2. Then please post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit. The next time you update PreTeXt, you should get the better version of the devcontainer and everyone else will benefit as well.
### Troubleshooting: sageplot images
-By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it.
+
+Open the file `.devcontainer/devcontainer.json` and edit the line that contains
+
+```
+ "image": "pretextbook/pretext:latest",
+```
+(or perhaps instead of `latest`, you have a version number). Change this to
+
+```
+ "image": "pretextbook/pretext-full:latest",
+```
-Just open the command palette (`Ctrl+Shift+P` of `F1`) and search for "PreTeXt: Install SageMath". This will also update the `.devcontainer/devcontainer.json` file so that the next time you create a codespace for this project, it should install automatically.
+VS Code should prompt you to rebuild your codespace, which you should do (you do not need to do a "full rebuild" though). This docker image contains sagemath and you should be able to add sageplots and generate them successfully now.