From 48e0f760a0ecbadbcfd3fb4b8b22cd59224a3c9f Mon Sep 17 00:00:00 2001
From: Fernando Belmonte Archetti
<110430578+farchettiensis@users.noreply.github.com>
Date: Thu, 12 Feb 2026 12:16:45 -0300
Subject: [PATCH] fix(curriculum): remove double punctuation marks at the end
of sentences (#65511)
---
.../686b9720ee1d032bd77a480a.md | 20 +++++++++----------
.../66c06fad3475cd92421b9ac2.md | 6 +++---
.../6842a6cd9836f0114a5b7a8a.md | 4 ++--
.../673b567e3ba535dda140d278.md | 6 +++---
.../66bbf02b6112f3a2f03c1968.md | 2 +-
.../673bab51ecb42c369eb6b37b.md | 2 +-
.../65802ee9706eb103aea442f8.md | 2 +-
.../671d1f5590e7110b82940771.md | 2 +-
.../671d1f7ca5f2aa0bb63b9e22.md | 2 +-
.../671d1f94461c820bc68e3694.md | 2 +-
.../671d1fab38a4710bd7a6b9c0.md | 2 +-
.../671f78193bb0510709b169b8.md | 2 +-
.../671f7834b9a323071f7a325e.md | 2 +-
.../671f7852f3a7e80737cc21d0.md | 2 +-
.../671f786a18c275074d55d298.md | 2 +-
.../671f788c2665b807636b31a8.md | 2 +-
.../67d5681f7a8dd6346ff23196.md | 6 +++---
.../6839a6376e7c2c8f7ed40f2c.md | 2 +-
.../5900f4811000cf542c50ff94.md | 2 +-
.../59e09e6d412c5939baa02d16.md | 6 +++---
.../61fd778081276b59d59abad6.md | 2 +-
.../61fd77f7ad2aeb5ae34d07d6.md | 2 +-
.../61fd78621573aa5e8b512f5e.md | 2 +-
.../61fd933ba685de776a94997e.md | 2 +-
.../61fd94056e0355785fbba4d3.md | 2 +-
.../66a7e72adf226c02626715a3.md | 4 ++--
.../68ec99e478211dc578699944.md | 2 +-
.../68eca5412b5dd9d06b3d6404.md | 2 +-
.../68eca6364c5616d393389a30.md | 2 +-
.../6819bc0637b80256a33adccc.md | 2 +-
.../6819c7beb4a8289c2b4f24d5.md | 4 ++--
.../6819ca464db219ab86f37dc4.md | 4 ++--
.../681a44f4c3235f7d8f428545.md | 2 +-
.../671141f948cbab359e74cc93.md | 2 +-
.../68540a534c56aeabae6afd58.md | 4 ++--
.../6899b0d1825ff24e9fe8d747.md | 2 +-
.../684cca09aac0fc035db4099f.md | 2 +-
.../68ecfa1003d88990bb96a33d.md | 2 +-
.../68ecfa1003d88990bb96a33e.md | 2 +-
.../69038dd51a41ae215fcc030a.md | 2 +-
.../69038f5efad6f722def4a214.md | 2 +-
.../68b816815f13eca63a588b45.md | 2 +-
.../68b942c9b8cce592f1c33d03.md | 2 +-
.../6895e4940e39950288e406c2.md | 2 +-
.../68ea7c41f2555e16174e7cfa.md | 2 +-
.../6734c10a327760a665b7d5b9.md | 2 +-
.../6734eee1f9498cd90f9ae340.md | 4 ++--
.../6734fa225c6667121e589f7e.md | 4 ++--
.../68e65ec5348e40a739903e6d.md | 4 ++--
.../68e90335bd53a901c41dfc13.md | 2 +-
.../68eab6a2b37d2f13602d0c3f.md | 8 ++++----
.../68ebe9cd7523d340c0b343d3.md | 6 +++---
.../68c2d31a86d5672ca49d4521.md | 4 ++--
.../68ca758f8160b11757f877ae.md | 2 +-
.../685523c05fb41d0848c4b52f.md | 2 +-
.../686386e76197458b7dfd52ed.md | 2 +-
.../66b6e80d6c3f0b329c360283.md | 2 +-
.../66b6f586767a1534f3097353.md | 2 +-
58 files changed, 89 insertions(+), 89 deletions(-)
diff --git a/curriculum/challenges/english/blocks/lab-isbn-validator/686b9720ee1d032bd77a480a.md b/curriculum/challenges/english/blocks/lab-isbn-validator/686b9720ee1d032bd77a480a.md
index e43e110eeba..42ed09b143f 100644
--- a/curriculum/challenges/english/blocks/lab-isbn-validator/686b9720ee1d032bd77a480a.md
+++ b/curriculum/challenges/english/blocks/lab-isbn-validator/686b9720ee1d032bd77a480a.md
@@ -217,7 +217,7 @@ assert "Valid ISBN Code." in out
}})
```
-When the user enters `9781530051120,13`, you should see the message `Valid ISBN Code.`.
+When the user enters `9781530051120,13`, you should see the message `Valid ISBN Code.`
```js
({test: () => {runPython(`
@@ -271,7 +271,7 @@ assert "Invalid ISBN Code." in out
}})
```
-When the user enters `9781530051120,10`, you should see the message `ISBN-10 code should be 10 digits long.`.
+When the user enters `9781530051120,10`, you should see the message `ISBN-10 code should be 10 digits long.`
```js
({test: () => {runPython(`
@@ -298,7 +298,7 @@ assert "ISBN-10 code should be 10 digits long." in out
}})
```
-When the user enters `1530051126,13`, you should see the message `ISBN-13 code should be 13 digits long.`.
+When the user enters `1530051126,13`, you should see the message `ISBN-13 code should be 13 digits long.`
```js
({test: () => {runPython(`
@@ -325,7 +325,7 @@ assert "ISBN-13 code should be 13 digits long." in out
}})
```
-When the user enters `15-0051126,10`, you should see the message `Invalid character was found.`.
+When the user enters `15-0051126,10`, you should see the message `Invalid character was found.`
```js
({test: () => {runPython(`
@@ -352,7 +352,7 @@ assert "Invalid character was found." in out
}})
```
-When the user enters `1530051126,9`, you should see the message `Length should be 10 or 13.`.
+When the user enters `1530051126,9`, you should see the message `Length should be 10 or 13.`
```js
({test: () => {runPython(`
@@ -379,7 +379,7 @@ assert "Length should be 10 or 13." in out
}})
```
-When the user enters `1530051125,A`, you should see the message `Length must be a number.`.
+When the user enters `1530051125,A`, you should see the message `Length must be a number.`
```js
({test: () => {runPython(`
@@ -406,7 +406,7 @@ assert "Length must be a number." in out
}})
```
-When the user enters `1530051125`, you should see the message `Enter comma-separated values.`.
+When the user enters `1530051125`, you should see the message `Enter comma-separated values.`
```js
({test: () => {runPython(`
@@ -433,7 +433,7 @@ assert "Enter comma-separated values." in out
}})
```
-When the user enters `9971502100,10`, you should see the message `Valid ISBN Code.`.
+When the user enters `9971502100,10`, you should see the message `Valid ISBN Code.`
```js
({test: () => {runPython(`
@@ -460,7 +460,7 @@ assert "Valid ISBN Code." in out
}})
```
-When the user enters `080442957X,10`, you should see the message `Valid ISBN Code.`.
+When the user enters `080442957X,10`, you should see the message `Valid ISBN Code.`
```js
({test: () => {runPython(`
@@ -487,7 +487,7 @@ assert "Valid ISBN Code." in out
}})
```
-When the user enters `9781947172104,13`, you should see the message `Valid ISBN Code.`.
+When the user enters `9781947172104,13`, you should see the message `Valid ISBN Code.`
```js
({test: () => {runPython(`
diff --git a/curriculum/challenges/english/blocks/lab-leap-year-calculator/66c06fad3475cd92421b9ac2.md b/curriculum/challenges/english/blocks/lab-leap-year-calculator/66c06fad3475cd92421b9ac2.md
index f2fdc97ebd6..54fba692bc1 100644
--- a/curriculum/challenges/english/blocks/lab-leap-year-calculator/66c06fad3475cd92421b9ac2.md
+++ b/curriculum/challenges/english/blocks/lab-leap-year-calculator/66c06fad3475cd92421b9ac2.md
@@ -55,19 +55,19 @@ The `year` variable shouldn't be empty.
assert.isNotNull(year);
```
-With `2024` as the value of the `year` variable, the `result` should be `2024 is a leap year.`.
+With `2024` as the value of the `year` variable, the `result` should be `2024 is a leap year.`
```js
assert.strictEqual(isLeapYear(2024), '2024 is a leap year.');
```
-With `2000` as the value of the `year` variable, the `result` should be `2000 is a leap year.`.
+With `2000` as the value of the `year` variable, the `result` should be `2000 is a leap year.`
```js
assert.strictEqual(isLeapYear(2000), '2000 is a leap year.');
```
-With `1900` as the value of the `year` variable, the `result` should be `1900 is not a leap year.`.
+With `1900` as the value of the `year` variable, the `result` should be `1900 is not a leap year.`
```js
assert.strictEqual(isLeapYear(1900), '1900 is not a leap year.');
diff --git a/curriculum/challenges/english/blocks/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md b/curriculum/challenges/english/blocks/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md
index b6ffe675f15..ed4914a30a6 100644
--- a/curriculum/challenges/english/blocks/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md
+++ b/curriculum/challenges/english/blocks/lab-number-pattern-generator/6842a6cd9836f0114a5b7a8a.md
@@ -16,8 +16,8 @@ In this lab you will practice the basics of Python by building a small app that
1. You should define a function named `number_pattern` that takes a single parameter `n` (representing a positive integer).
1. `number_pattern` should use a `for` loop.
1. `number_pattern(n)` should return a string with all the integers starting from 1 up to `n` (included) separated by a space. For example, `number_pattern(4)` should return the string `1 2 3 4`.
-1. If the argument passed to the function is not an integer value, the function should return `Argument must be an integer value.`.
-1. If the argument passed to the function is less than 1, the function should return `Argument must be an integer greater than 0.`.
+1. If the argument passed to the function is not an integer value, the function should return `Argument must be an integer value.`
+1. If the argument passed to the function is less than 1, the function should return `Argument must be an integer greater than 0.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/lab-voting-system/673b567e3ba535dda140d278.md b/curriculum/challenges/english/blocks/lab-voting-system/673b567e3ba535dda140d278.md
index 429285bd91a..a106d2a1cf5 100644
--- a/curriculum/challenges/english/blocks/lab-voting-system/673b567e3ba535dda140d278.md
+++ b/curriculum/challenges/english/blocks/lab-voting-system/673b567e3ba535dda140d278.md
@@ -22,15 +22,15 @@ In this lab, you will build a voting system that uses `Map` to create a poll and
- If the `option` does not already exist in the poll, it should be added to the poll with an empty `Set` as its value to track voters. You should also return the message `Option "" added to the poll.`
- - If the `option` already exists, it should return the message `Option " " already exists.`.
+ - If the `option` already exists, it should return the message `Option " " already exists.`
- - If you try to add an empty option, the function should return the message `Option cannot be empty.`.
+ - If you try to add an empty option, the function should return the message `Option cannot be empty.`
4. You should have a function `vote` that accepts two parameters, `option` (the option to vote for) and `voterId` (a unique ID for the voter).
5. In the `vote` function:
- - If the `option` does not exist in the poll, the function should return the message `Option " " does not exist.`.
+ - If the `option` does not exist in the poll, the function should return the message `Option " " does not exist.`
- If the `option` exists, the function should check if the `voterId` has already voted for this `option`.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-describe-places-and-events/66bbf02b6112f3a2f03c1968.md b/curriculum/challenges/english/blocks/learn-how-to-describe-places-and-events/66bbf02b6112f3a2f03c1968.md
index 59a5627be36..ddf8a99e556 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-describe-places-and-events/66bbf02b6112f3a2f03c1968.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-describe-places-and-events/66bbf02b6112f3a2f03c1968.md
@@ -14,7 +14,7 @@ This task doesn't have audio. Read the question and select the correct answer.
## --text--
-What does `it` refer to in the sentence `The Live Preview isn't showing in Visual Studio Code. Isn't it supposed to support that feature?`?
+What does `it` refer to in the sentence `The Live Preview isn't showing in Visual Studio Code. Isn't it supposed to support that feature?`
## --answers--
diff --git a/curriculum/challenges/english/blocks/learn-how-to-plan-future-events/673bab51ecb42c369eb6b37b.md b/curriculum/challenges/english/blocks/learn-how-to-plan-future-events/673bab51ecb42c369eb6b37b.md
index 022d0f31dce..99d2c0d0de4 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-plan-future-events/673bab51ecb42c369eb6b37b.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-plan-future-events/673bab51ecb42c369eb6b37b.md
@@ -37,7 +37,7 @@ Check if the response uses the correct tense for a future event. Maria is asking
# --explanation--
-Maria's question uses the `Present Simple` tense, `The server downtime starts...`, to talk about a planned event.
+Maria's question uses the `Present Simple` tense, `The server downtime starts...`, to talk about a planned event.
This is common when discussing schedules or timetables, as the `Present Simple` indicates something fixed or organized in the future. Her intention is to confirm the timing of the downtime as planned.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-hobbies-and-interests/65802ee9706eb103aea442f8.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-hobbies-and-interests/65802ee9706eb103aea442f8.md
index 2f31543f60a..4119b2f6f92 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-hobbies-and-interests/65802ee9706eb103aea442f8.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-hobbies-and-interests/65802ee9706eb103aea442f8.md
@@ -14,7 +14,7 @@ This task doesn't have audio. Read the question below and select the correct ans
## --text--
-Which of the following best completes the phrase `Really? That sounds great! ...`?
+Which of the following best completes the phrase `Really? That sounds great!`?
## --answers--
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f5590e7110b82940771.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f5590e7110b82940771.md
index ab3b4737741..da14b96fd62 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f5590e7110b82940771.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f5590e7110b82940771.md
@@ -62,4 +62,4 @@ The text focuses on fixing security issues, not documentation.
# --explanation--
-Focus on the paragraph that starts with `Last week, our team had to…`. This explains why the team worked late.
+Focus on the paragraph that starts with `Last week, our team had to...`. This explains why the team worked late.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f7ca5f2aa0bb63b9e22.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f7ca5f2aa0bb63b9e22.md
index 060e8ec30ad..abbf416cbed 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f7ca5f2aa0bb63b9e22.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f7ca5f2aa0bb63b9e22.md
@@ -62,4 +62,4 @@ The text teaches the opposite: to stay on top of things and not fall behind.
# --explanation--
-Focus on the sentence that starts with `We now know that we need to…`. This teaches the main lesson: integrating security checks during design updates.
+Focus on the sentence that starts with `We now know that we need to...`. This teaches the main lesson: integrating security checks during design updates.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f94461c820bc68e3694.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f94461c820bc68e3694.md
index 8d52de8094d..0ec0d529869 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f94461c820bc68e3694.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1f94461c820bc68e3694.md
@@ -62,4 +62,4 @@ There is no mention of a consultant handling security in the text.
# --explanation--
-Focus on the sentence that starts with `Jake, who handles…`. This identifies him as the person responsible for security.
+Focus on the sentence that starts with `Jake, who handles...`. This identifies him as the person responsible for security.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1fab38a4710bd7a6b9c0.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1fab38a4710bd7a6b9c0.md
index bc780367f4f..78cc4257328 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1fab38a4710bd7a6b9c0.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671d1fab38a4710bd7a6b9c0.md
@@ -62,4 +62,4 @@ They learned to stay on top of things and not fall behind.
# --explanation--
-Focus on the sentence that starts with `This experience taught us…`. This highlights the overall takeaway about staying on top of tasks.
+Focus on the sentence that starts with `This experience taught us...`. This highlights the overall takeaway about staying on top of tasks.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f78193bb0510709b169b8.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f78193bb0510709b169b8.md
index d5700e42ddb..e00554988d5 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f78193bb0510709b169b8.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f78193bb0510709b169b8.md
@@ -60,4 +60,4 @@ The dream mentioned is related to attending a tech conference, not starting a bu
# --explanation--
-Focus on the sentence that starts with `Years ago, Maria and Brian…`. This sentence explains Maria and Brian's goal when they were junior developers, sitting in their office and dreaming about the future.
+Focus on the sentence that starts with `Years ago, Maria and Brian...`. This sentence explains Maria and Brian's goal when they were junior developers, sitting in their office and dreaming about the future.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7834b9a323071f7a325e.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7834b9a323071f7a325e.md
index e16c74f45c9..1d5563234c2 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7834b9a323071f7a325e.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7834b9a323071f7a325e.md
@@ -60,4 +60,4 @@ They were excited about every new programming trend.
# --explanation--
-Focus on the sentence that starts with `Back then, they were junior developers…`. This sentence provides insight into how Maria and Brian felt about new programming trends early in their careers.
+Focus on the sentence that starts with `Back then, they were junior developers...`. This sentence provides insight into how Maria and Brian felt about new programming trends early in their careers.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7852f3a7e80737cc21d0.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7852f3a7e80737cc21d0.md
index ff693791557..3863f7a0318 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7852f3a7e80737cc21d0.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f7852f3a7e80737cc21d0.md
@@ -60,4 +60,4 @@ The focus of the sessions mentioned in the text is more technical and specific.
# --explanation--
-Focus on the sentence that starts with `Fast forward to today…`. This sentence lists the sessions that Maria and Brian are attending at PyCon, reflecting their current interests.
+Focus on the sentence that starts with `Fast forward to today...`. This sentence lists the sessions that Maria and Brian are attending at PyCon, reflecting their current interests.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f786a18c275074d55d298.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f786a18c275074d55d298.md
index 59a35355fc1..92c28210a53 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f786a18c275074d55d298.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f786a18c275074d55d298.md
@@ -60,4 +60,4 @@ The text indicates they are already attending, not planning for a future event.
# --explanation
-Focus on the sentence that starts with `Their dream is no longer just a dream…`. This sentence tells us that Maria and Brian are now living the dream they once envisioned.
+Focus on the sentence that starts with `Their dream is no longer just a dream...`. This sentence tells us that Maria and Brian are now living the dream they once envisioned.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f788c2665b807636b31a8.md b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f788c2665b807636b31a8.md
index 8bf26e0d87d..2a21ffbcd69 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f788c2665b807636b31a8.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-talk-about-past-experiences/671f788c2665b807636b31a8.md
@@ -60,4 +60,4 @@ There is no mention of a product launch; the significance lies in achieving thei
# --explanation--
-Focus on the sentence that starts with `They promised they would…`. This sentence shows that attending PyCon was their goal, making it significant as it fulfills a long-held promise.
+Focus on the sentence that starts with `They promised they would...`. This sentence shows that attending PyCon was their goal, making it significant as it fulfills a long-held promise.
diff --git a/curriculum/challenges/english/blocks/learn-how-to-use-modal-verbs/67d5681f7a8dd6346ff23196.md b/curriculum/challenges/english/blocks/learn-how-to-use-modal-verbs/67d5681f7a8dd6346ff23196.md
index 3da97e999a5..7285083a381 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-use-modal-verbs/67d5681f7a8dd6346ff23196.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-use-modal-verbs/67d5681f7a8dd6346ff23196.md
@@ -54,12 +54,12 @@ Remember:
`Must` expresses strong necessity or obligation. For example:
-`You must wear a seatbelt.`.
+`You must wear a seatbelt.`
`Have to` also expresses obligation but is sometimes less strict than must. For example:
-`You have to submit the report by Friday.`.
+`You have to submit the report by Friday.`
`Should` is used for recommendations or advice. For example:
-`You should review your notes before the test.`.
+`You should review your notes before the test.`
diff --git a/curriculum/challenges/english/blocks/learn-how-to-use-prepositions-according-to-context/6839a6376e7c2c8f7ed40f2c.md b/curriculum/challenges/english/blocks/learn-how-to-use-prepositions-according-to-context/6839a6376e7c2c8f7ed40f2c.md
index 4b8d57f90c1..90485326537 100644
--- a/curriculum/challenges/english/blocks/learn-how-to-use-prepositions-according-to-context/6839a6376e7c2c8f7ed40f2c.md
+++ b/curriculum/challenges/english/blocks/learn-how-to-use-prepositions-according-to-context/6839a6376e7c2c8f7ed40f2c.md
@@ -14,7 +14,7 @@ This task doesn't have audio. Read the question below and select the correct ans
## --text--
-Which sentence uses the word `in` the same way as in this sentence: `The server room is located in the building's basement.`?
+Which sentence uses the word `in` the same way as in this sentence: `The server room is located in the building's basement`?
## --answers--
diff --git a/curriculum/challenges/english/blocks/project-euler-problems-201-to-300/5900f4811000cf542c50ff94.md b/curriculum/challenges/english/blocks/project-euler-problems-201-to-300/5900f4811000cf542c50ff94.md
index c80635aa3d8..8a3fdd865d0 100644
--- a/curriculum/challenges/english/blocks/project-euler-problems-201-to-300/5900f4811000cf542c50ff94.md
+++ b/curriculum/challenges/english/blocks/project-euler-problems-201-to-300/5900f4811000cf542c50ff94.md
@@ -20,7 +20,7 @@ The sequence terminates when some $a_n = 1$.
Given any integer, we can list out the sequence of steps. For instance if $a_1 = 231$, then the sequence $\\{a_n\\} = \\{231, 77, 51, 17, 11, 7, 10, 14, 9, 3, 1\\}$ corresponds to the steps "DdDddUUdDD".
-Of course, there are other sequences that begin with that same sequence "DdDddUUdDD....".
+Of course, there are other sequences that begin with that same sequence "DdDddUUdDD...".
For instance, if $a_1 = 1004064$, then the sequence is DdDddUUdDDDdUDUUUdDdUUDDDUdDD.
diff --git a/curriculum/challenges/english/blocks/rosetta-code-challenges/59e09e6d412c5939baa02d16.md b/curriculum/challenges/english/blocks/rosetta-code-challenges/59e09e6d412c5939baa02d16.md
index 112483733bf..d6c72e23537 100644
--- a/curriculum/challenges/english/blocks/rosetta-code-challenges/59e09e6d412c5939baa02d16.md
+++ b/curriculum/challenges/english/blocks/rosetta-code-challenges/59e09e6d412c5939baa02d16.md
@@ -82,19 +82,19 @@ Using Markov Algorithm, change the `data` into the desired `outputs` using the
assert(typeof markov === 'function');
```
-`markov(["A -> apple","B -> bag","S -> shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As from T S.")` should return the string `I bought a bag of apples from my brother.`.
+`markov(["A -> apple","B -> bag","S -> shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As from T S.")` should return the string `I bought a bag of apples from my brother.`
```js
assert.deepEqual(markov(rules[0], datas[0]), outputs[0]);
```
-`markov(["A -> apple","B -> bag","S -> .shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As from T S.")` should return the string `I bought a bag of apples from T shop.`.
+`markov(["A -> apple","B -> bag","S -> .shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As from T S.")` should return the string `I bought a bag of apples from T shop.`
```js
assert.deepEqual(markov(rules[1], datas[1]), outputs[1]);
```
-`markov(["A -> apple","WWWW -> with","Bgage -> ->.*","B -> bag","->.* -> money","W -> WW","S -> .shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As W my Bgage from T S.")` should return the string `I bought a bag of apples with my money from T shop.`.
+`markov(["A -> apple","WWWW -> with","Bgage -> ->.*","B -> bag","->.* -> money","W -> WW","S -> .shop","T -> the","the shop -> my brother","a never used -> .terminating rule"],"I bought a B of As W my Bgage from T S.")` should return the string `I bought a bag of apples with my money from T shop.`
```js
assert.deepEqual(markov(rules[2], datas[2]), outputs[2]);
diff --git a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd778081276b59d59abad6.md b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd778081276b59d59abad6.md
index 3b7f2349026..883bff5216c 100644
--- a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd778081276b59d59abad6.md
+++ b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd778081276b59d59abad6.md
@@ -21,7 +21,7 @@ const tableRow = tableBody?.querySelectorAll('tr')?.[0];
assert.isNotNull(tableRow?.querySelector('th'));
```
-Your `th` element should have the text `Cash This is the cash we currently have on hand.`.
+Your `th` element should have the text `Cash This is the cash we currently have on hand.`
```js
const tableBody = document.querySelector('tbody');
diff --git a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd77f7ad2aeb5ae34d07d6.md b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd77f7ad2aeb5ae34d07d6.md
index 6f35ab4d23b..3996a74b1fd 100644
--- a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd77f7ad2aeb5ae34d07d6.md
+++ b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd77f7ad2aeb5ae34d07d6.md
@@ -21,7 +21,7 @@ const tableRow = tableBody?.querySelectorAll('tr')?.[1];
assert.isNotNull(tableRow?.querySelector('th'));
```
-Your `th` element should have the text `Checking Our primary transactional account.`.
+Your `th` element should have the text `Checking Our primary transactional account.`
```js
const tableBody = document.querySelector('tbody');
diff --git a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd78621573aa5e8b512f5e.md b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd78621573aa5e8b512f5e.md
index 0ed6845db80..a6056715678 100644
--- a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd78621573aa5e8b512f5e.md
+++ b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd78621573aa5e8b512f5e.md
@@ -21,7 +21,7 @@ const tableRow = tableBody?.querySelectorAll('tr')?.[2];
assert.isNotNull(tableRow?.querySelector('th'));
```
-Your `th` element should have the text `Savings Funds set aside for emergencies.`.
+Your `th` element should have the text `Savings Funds set aside for emergencies.`
```js
const tableBody = document.querySelector('tbody');
diff --git a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd933ba685de776a94997e.md b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd933ba685de776a94997e.md
index 304c6bc4c9f..a438d638f4b 100644
--- a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd933ba685de776a94997e.md
+++ b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd933ba685de776a94997e.md
@@ -22,7 +22,7 @@ const tableRow = tbody?.querySelectorAll('tr')?.[0];
assert.isNotNull(tableRow?.querySelector('th'));
```
-Your `th` element should have the text `Loans The outstanding balance on our startup loan.`.
+Your `th` element should have the text `Loans The outstanding balance on our startup loan.`
```js
const table = document.querySelectorAll('table')?.[1];
diff --git a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd94056e0355785fbba4d3.md b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd94056e0355785fbba4d3.md
index 95a30ad1ae6..7bcc6738eca 100644
--- a/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd94056e0355785fbba4d3.md
+++ b/curriculum/challenges/english/blocks/workshop-balance-sheet/61fd94056e0355785fbba4d3.md
@@ -22,7 +22,7 @@ const tableRow = tbody?.querySelectorAll('tr')?.[1];
assert.isNotNull(tableRow?.querySelector('th'));
```
-Your `th` element should have the text `Expenses Annual anticipated expenses, such as payroll.`.
+Your `th` element should have the text `Expenses Annual anticipated expenses, such as payroll.`
```js
const table = document.querySelectorAll('table')?.[1];
diff --git a/curriculum/challenges/english/blocks/workshop-blog-page/66a7e72adf226c02626715a3.md b/curriculum/challenges/english/blocks/workshop-blog-page/66a7e72adf226c02626715a3.md
index 21e096fa510..74da9f00d93 100644
--- a/curriculum/challenges/english/blocks/workshop-blog-page/66a7e72adf226c02626715a3.md
+++ b/curriculum/challenges/english/blocks/workshop-blog-page/66a7e72adf226c02626715a3.md
@@ -7,13 +7,13 @@ dashedName: step-8
# --description--
-Below your `h2` element, add a paragraph element with the text of `Hi there! I'm Jane Doe, a passionate writer who finds endless inspiration in the antics of my beloved cat, Mr. Whiskers.`.
+Below your `h2` element, add a paragraph element with the text of `Hi there! I'm Jane Doe, a passionate writer who finds endless inspiration in the antics of my beloved cat, Mr. Whiskers.`
Below your paragraph element, add another paragraph element with the text of `His playful nature and boundless energy keeps me on my toes. I love him so much.`
# --hints--
-Your first paragraph should have the text of `Hi there! I'm Jane Doe, a passionate writer who finds endless inspiration in the antics of my beloved cat, Mr. Whiskers.` Double check your spelling.
+Your first paragraph should have the text of `Hi there! I'm Jane Doe, a passionate writer who finds endless inspiration in the antics of my beloved cat, Mr. Whiskers.` Double-check your spelling.
```js
const pElement = document.querySelector('body p:first-of-type');
diff --git a/curriculum/challenges/english/blocks/workshop-bookstore-page/68ec99e478211dc578699944.md b/curriculum/challenges/english/blocks/workshop-bookstore-page/68ec99e478211dc578699944.md
index 21798d76fee..0416afb206a 100644
--- a/curriculum/challenges/english/blocks/workshop-bookstore-page/68ec99e478211dc578699944.md
+++ b/curriculum/challenges/english/blocks/workshop-bookstore-page/68ec99e478211dc578699944.md
@@ -21,7 +21,7 @@ You should have a `p` element nested inside the element having a class of `card`
assert.exists(document.querySelector('.card p'));
```
-Your `p` element's text should be `This is an epic story of Sally and her dog Rex as they navigate through other worlds.`.
+Your `p` element's text should be `This is an epic story of Sally and her dog Rex as they navigate through other worlds.`
```js
assert.equal(document.querySelector('.card p')?.innerText.trim(), "This is an epic story of Sally and her dog Rex as they navigate through other worlds.");
diff --git a/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca5412b5dd9d06b3d6404.md b/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca5412b5dd9d06b3d6404.md
index 52faf9f6f7e..954e77a186d 100644
--- a/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca5412b5dd9d06b3d6404.md
+++ b/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca5412b5dd9d06b3d6404.md
@@ -22,7 +22,7 @@ const cards = document.querySelectorAll('.card');
assert.exists(cards[1]?.querySelector('p'));
```
-Your second card's `p` element's text should be `This is the story of Dave as he learns to cook everything from pancakes to pasta, one recipe at a time.`.
+Your second card's `p` element's text should be `This is the story of Dave as he learns to cook everything from pancakes to pasta, one recipe at a time.`
```js
const cards = document.querySelectorAll('.card');
diff --git a/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca6364c5616d393389a30.md b/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca6364c5616d393389a30.md
index 2c56310240d..7c804df81cd 100644
--- a/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca6364c5616d393389a30.md
+++ b/curriculum/challenges/english/blocks/workshop-bookstore-page/68eca6364c5616d393389a30.md
@@ -31,7 +31,7 @@ The newly added `p` element should be below the element with a class of `card-co
assert.exists(document.querySelector('.card-container + p'));
```
-Your new `p` element's text should be `Review your selections and continue to checkout.`.
+Your new `p` element's text should be `Review your selections and continue to checkout.`
```js
const cardContainer = document.querySelector('.card-container');
diff --git a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819bc0637b80256a33adccc.md b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819bc0637b80256a33adccc.md
index 59836dc0ff1..a18a1f6ec10 100644
--- a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819bc0637b80256a33adccc.md
+++ b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819bc0637b80256a33adccc.md
@@ -14,7 +14,7 @@ if condition:
# code to run when condition is true
```
-At the beginning of your function body, create an `if` statement. For now, use `True` as the condition, and within the `if` statement body return the string `Shift must be an integer value.`.
+At the beginning of your function body, create an `if` statement. For now, use `True` as the condition, and within the `if` statement body return the string `Shift must be an integer value.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819c7beb4a8289c2b4f24d5.md b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819c7beb4a8289c2b4f24d5.md
index 22350b700db..ef5ab3b8dc1 100644
--- a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819c7beb4a8289c2b4f24d5.md
+++ b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819c7beb4a8289c2b4f24d5.md
@@ -7,7 +7,7 @@ dashedName: step-19
# --description--
-A negative or null shift should not be accepted by your function. Therefore, after your first `if` statement, create another `if` statement that checks if `shift` is less than `1` and returns the string `Shift must be a positive integer.`.
+A negative or null shift should not be accepted by your function. Therefore, after your first `if` statement, create another `if` statement that checks if `shift` is less than `1` and returns the string `Shift must be a positive integer.`
# --hints--
@@ -21,7 +21,7 @@ assert any(_cond.is_equivalent(option) for option in _options)
`) })
```
-Your second `if` statement should return `Shift must be a positive integer.`.
+Your second `if` statement should return `Shift must be a positive integer.`
```js
({ test: () => assert(runPython(`_Node(_code).find_function("caesar").find_ifs()[1].find_bodies()[0].has_return("'Shift must be a positive integer.'")`)) })
diff --git a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819ca464db219ab86f37dc4.md b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819ca464db219ab86f37dc4.md
index 971823337f1..044f7dd25b4 100644
--- a/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819ca464db219ab86f37dc4.md
+++ b/curriculum/challenges/english/blocks/workshop-caesar-cipher/6819ca464db219ab86f37dc4.md
@@ -11,7 +11,7 @@ As you've already verified, the shift passed to encrypt the text should be posit
Add a second condition to the `if` statement that verifies that `shift` is greater than `25`. Remember that the logical OR operation in Python is implemented through the `or` operator.
-Also, update the returned message to `Shift must be an integer between 1 and 25.`.
+Also, update the returned message to `Shift must be an integer between 1 and 25.`
# --hints--
@@ -25,7 +25,7 @@ assert any(_cond.is_equivalent(f"shift < 1 or {option}") for option in _options)
`) })
```
-Your second `if` statement should return `Shift must be an integer between 1 and 25.`.
+Your second `if` statement should return `Shift must be an integer between 1 and 25.`
```js
({ test: () => assert(runPython(`_Node(_code).find_function("caesar").find_ifs()[1].find_bodies()[0].has_return("'Shift must be an integer between 1 and 25.'")`)) })
diff --git a/curriculum/challenges/english/blocks/workshop-caesar-cipher/681a44f4c3235f7d8f428545.md b/curriculum/challenges/english/blocks/workshop-caesar-cipher/681a44f4c3235f7d8f428545.md
index eb5f0d7fbb9..8c94d38acb4 100644
--- a/curriculum/challenges/english/blocks/workshop-caesar-cipher/681a44f4c3235f7d8f428545.md
+++ b/curriculum/challenges/english/blocks/workshop-caesar-cipher/681a44f4c3235f7d8f428545.md
@@ -7,7 +7,7 @@ dashedName: step-25
# --description--
-Now you're going to test the `decrypt` function. Replace the value assigned to `encrypted_text` with the following string, which represents a message to decrypt: `Pbhentr vf sbhaq va hayvxryl cynprf.`.
+Now you're going to test the `decrypt` function. Replace the value assigned to `encrypted_text` with the following string, which represents a message to decrypt: `Pbhentr vf sbhaq va hayvxryl cynprf.`
Then, declare a variable named `decrypted_text` and assign it a call to `decrypt` with `encrypted_text` as it first argument and a shift of `13` as the second argument.
diff --git a/curriculum/challenges/english/blocks/workshop-cat-photo-app/671141f948cbab359e74cc93.md b/curriculum/challenges/english/blocks/workshop-cat-photo-app/671141f948cbab359e74cc93.md
index e362e69db64..556884f435e 100644
--- a/curriculum/challenges/english/blocks/workshop-cat-photo-app/671141f948cbab359e74cc93.md
+++ b/curriculum/challenges/english/blocks/workshop-cat-photo-app/671141f948cbab359e74cc93.md
@@ -11,7 +11,7 @@ Add `p` tags to turn `See more cat photos<
# --hints--
-You should add a `p` element around `See more cat photos in our gallery.`.
+You should add a `p` element around `See more cat photos in our gallery.`
```js
const P = document.querySelectorAll('p')[1];
diff --git a/curriculum/challenges/english/blocks/workshop-email-simulator/68540a534c56aeabae6afd58.md b/curriculum/challenges/english/blocks/workshop-email-simulator/68540a534c56aeabae6afd58.md
index 216f0276234..13d67f90ac7 100644
--- a/curriculum/challenges/english/blocks/workshop-email-simulator/68540a534c56aeabae6afd58.md
+++ b/curriculum/challenges/english/blocks/workshop-email-simulator/68540a534c56aeabae6afd58.md
@@ -12,7 +12,7 @@ Now you'll simulate sending some emails between the users.
In your `main` function, after creating the users, use the `send_email` method to:
- Have Tory send an email to the `ramy` user object with subject `Hello` and body `Hi Ramy, just saying hello!`.
-- Have Ramy send an email to the `tory` user object with subject `Re: Hello` and body `Hi Tory, hope you are fine.`.
+- Have Ramy send an email to the `tory` user object with subject `Re: Hello` and body `Hi Tory, hope you are fine.`
# --hints--
@@ -28,7 +28,7 @@ You should have Tory send an email to `ramy`, subject `Hello`, and body `Hi Ramy
})
```
-You should have Ramy send an email to `tory`, subject `Re: Hello`, and body `Hi Tory, hope you are fine.`.
+You should have Ramy send an email to `tory`, subject `Re: Hello`, and body `Hi Tory, hope you are fine.`
```js
({
diff --git a/curriculum/challenges/english/blocks/workshop-emoji-reactor/6899b0d1825ff24e9fe8d747.md b/curriculum/challenges/english/blocks/workshop-emoji-reactor/6899b0d1825ff24e9fe8d747.md
index ed5360fa148..8a915802feb 100644
--- a/curriculum/challenges/english/blocks/workshop-emoji-reactor/6899b0d1825ff24e9fe8d747.md
+++ b/curriculum/challenges/english/blocks/workshop-emoji-reactor/6899b0d1825ff24e9fe8d747.md
@@ -9,7 +9,7 @@ dashedName: step-2
Below the `h1` element, add a `p` element with class `description`.
-Inside the `p` element write the text `Click on the buttons below to rate your emotions.`.
+Inside the `p` element write the text `Click on the buttons below to rate your emotions.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/workshop-error-message-component/684cca09aac0fc035db4099f.md b/curriculum/challenges/english/blocks/workshop-error-message-component/684cca09aac0fc035db4099f.md
index e2355d9aed5..4511e52f35c 100644
--- a/curriculum/challenges/english/blocks/workshop-error-message-component/684cca09aac0fc035db4099f.md
+++ b/curriculum/challenges/english/blocks/workshop-error-message-component/684cca09aac0fc035db4099f.md
@@ -23,7 +23,7 @@ Your `strong` element should have the text `Error!`.
assert.equal(document.querySelector("strong")?.textContent, "Error!");
```
-Your `p` element should have the correct text that ends with `Something went wrong. Please try again.`.
+Your `p` element should have the correct text that ends with `Something went wrong. Please try again.`
```js
const remainingText = "Something went wrong. Please try again."
diff --git a/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33d.md b/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33d.md
index 349fa1d019d..ea765f34b71 100644
--- a/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33d.md
+++ b/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33d.md
@@ -42,7 +42,7 @@ const ddElement = document.querySelector('dl dd');
assert.exists(ddElement);
```
-Your `dd` element should contain the text `This is a free web browser developed by Google and first released in 2008.`.
+Your `dd` element should contain the text `This is a free web browser developed by Google and first released in 2008.`
```js
const ddElement = document.querySelector('dd');
diff --git a/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33e.md b/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33e.md
index 961f1cf709d..c2c6de2f3a6 100644
--- a/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33e.md
+++ b/curriculum/challenges/english/blocks/workshop-major-browsers-list/68ecfa1003d88990bb96a33e.md
@@ -40,7 +40,7 @@ const ddElements = document.querySelectorAll('dd');
assert.lengthOf(ddElements, 2);
```
-Your second `dd` element should contain the text `This is a free web browser developed by the Mozilla Corporation and first created in 2004.`.
+Your second `dd` element should contain the text `This is a free web browser developed by the Mozilla Corporation and first created in 2004.`
```js
const ddElement = document.querySelectorAll('dd')[1];
diff --git a/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038dd51a41ae215fcc030a.md b/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038dd51a41ae215fcc030a.md
index 0b2806f669d..b44fefb9744 100644
--- a/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038dd51a41ae215fcc030a.md
+++ b/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038dd51a41ae215fcc030a.md
@@ -40,7 +40,7 @@ const ddElements = document.querySelectorAll('dd');
assert.lengthOf(ddElements, 3);
```
-Your third `dd` element should contain the text `This browser was developed by Apple and is the default browser for iPhone, iPad and Mac devices.`.
+Your third `dd` element should contain the text `This browser was developed by Apple and is the default browser for iPhone, iPad and Mac devices.`
```js
const ddElement = document.querySelectorAll('dd')[2];
diff --git a/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038f5efad6f722def4a214.md b/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038f5efad6f722def4a214.md
index 6429cd5cec2..ba805adc8a4 100644
--- a/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038f5efad6f722def4a214.md
+++ b/curriculum/challenges/english/blocks/workshop-major-browsers-list/69038f5efad6f722def4a214.md
@@ -40,7 +40,7 @@ const ddElements = document.querySelectorAll('dd');
assert.lengthOf(ddElements, 4);
```
-Your fourth `dd` element should contain the text `This is a free web browser first released in 2016 that is based on the Chromium web browser.`.
+Your fourth `dd` element should contain the text `This is a free web browser first released in 2016 that is based on the Chromium web browser.`
```js
const ddElement = document.querySelectorAll('dd')[3];
diff --git a/curriculum/challenges/english/blocks/workshop-media-catalogue/68b816815f13eca63a588b45.md b/curriculum/challenges/english/blocks/workshop-media-catalogue/68b816815f13eca63a588b45.md
index cfeff05201a..6b8d887411c 100644
--- a/curriculum/challenges/english/blocks/workshop-media-catalogue/68b816815f13eca63a588b45.md
+++ b/curriculum/challenges/english/blocks/workshop-media-catalogue/68b816815f13eca63a588b45.md
@@ -15,7 +15,7 @@ def add(x, y):
return x + y
```
-Complete your `Movie` class by adding the following docstring to it: `Parent class representing a movie.`.
+Complete your `Movie` class by adding the following docstring to it: `Parent class representing a movie.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/workshop-media-catalogue/68b942c9b8cce592f1c33d03.md b/curriculum/challenges/english/blocks/workshop-media-catalogue/68b942c9b8cce592f1c33d03.md
index 13aecead933..c54455cc11c 100644
--- a/curriculum/challenges/english/blocks/workshop-media-catalogue/68b942c9b8cce592f1c33d03.md
+++ b/curriculum/challenges/english/blocks/workshop-media-catalogue/68b942c9b8cce592f1c33d03.md
@@ -7,7 +7,7 @@ dashedName: step-26
# --description--
-Now complete the `TVSeries` class by adding the docstring `Child class representing an entire TV series.`.
+Now complete the `TVSeries` class by adding the docstring `Child class representing an entire TV series.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/workshop-musical-instrument-inventory/6895e4940e39950288e406c2.md b/curriculum/challenges/english/blocks/workshop-musical-instrument-inventory/6895e4940e39950288e406c2.md
index 33fdc59a1cf..47ae2436600 100644
--- a/curriculum/challenges/english/blocks/workshop-musical-instrument-inventory/6895e4940e39950288e406c2.md
+++ b/curriculum/challenges/english/blocks/workshop-musical-instrument-inventory/6895e4940e39950288e406c2.md
@@ -9,7 +9,7 @@ dashedName: step-10
Next, add another method to your class named `get_fact` that returns a fact about the instrument.
-This method should have only the `self` parameter and return an f-string that says `The [instrument name] is part of the [instrument type] family of instruments.`.
+This method should have only the `self` parameter and return an f-string that says `The [instrument name] is part of the [instrument type] family of instruments.`
Unlike the `play` method which prints a message directly, this method should return a string that can be used elsewhere in your code.
diff --git a/curriculum/challenges/english/blocks/workshop-parent-teacher-conference-form/68ea7c41f2555e16174e7cfa.md b/curriculum/challenges/english/blocks/workshop-parent-teacher-conference-form/68ea7c41f2555e16174e7cfa.md
index ff8dadb400e..720e7b761e7 100644
--- a/curriculum/challenges/english/blocks/workshop-parent-teacher-conference-form/68ea7c41f2555e16174e7cfa.md
+++ b/curriculum/challenges/english/blocks/workshop-parent-teacher-conference-form/68ea7c41f2555e16174e7cfa.md
@@ -17,7 +17,7 @@ You should have a `p` element.
assert.exists(document.querySelector("p"));
```
-Your `p` element should have the text `Please fill out the form below to help schedule your parent-teacher conference.`.
+Your `p` element should have the text `Please fill out the form below to help schedule your parent-teacher conference.`
```js
assert.strictEqual(document.querySelector("p")?.innerText, "Please fill out the form below to help schedule your parent-teacher conference.");
diff --git a/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734c10a327760a665b7d5b9.md b/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734c10a327760a665b7d5b9.md
index 7406b4980bb..71b70feb04c 100644
--- a/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734c10a327760a665b7d5b9.md
+++ b/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734c10a327760a665b7d5b9.md
@@ -42,7 +42,7 @@ Your `sellPlants` function should take three arguments.
assert.lengthOf(sellPlants, 3);
```
-`sellPlants(ballerina, "small", 25)` should return `Not enough small size pots for Lavandula stoechas 'Ballerina'. Only 20 left.`.
+`sellPlants(ballerina, "small", 25)` should return `Not enough small size pots for Lavandula stoechas 'Ballerina'. Only 20 left.`
```js
assert.equal(sellPlants(ballerina, "small", 25), "Not enough small size pots for Lavandula stoechas 'Ballerina'. Only 20 left.")
diff --git a/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734eee1f9498cd90f9ae340.md b/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734eee1f9498cd90f9ae340.md
index 847b8ad4574..4047dd90e81 100644
--- a/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734eee1f9498cd90f9ae340.md
+++ b/curriculum/challenges/english/blocks/workshop-plant-nursery-catalog/6734eee1f9498cd90f9ae340.md
@@ -7,7 +7,7 @@ dashedName: step-14
# --description--
-When there are enough pots to sell you need to update the catalog by subtracting the pots of the specified size. In that case, return `Catalog successfully updated.`.
+When there are enough pots to sell you need to update the catalog by subtracting the pots of the specified size. In that case, return `Catalog successfully updated.`
Modify your function to achieve that. Then, update your function call by passing `10` as third argument instead of `25`.
@@ -25,7 +25,7 @@ You should have only one `sellPlants` call in your code.
assert.lengthOf(__helpers.removeJSComments(code).match(/(? q'));
```
-Your `q` element should have the text `You can become a developer.`.
+Your `q` element should have the text `You can become a developer.`
```js
assert.equal(document.querySelector('h1 + p > q')?.textContent.trim(), 'You can become a developer.');
diff --git a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68eab6a2b37d2f13602d0c3f.md b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68eab6a2b37d2f13602d0c3f.md
index ed6f00fbc3c..6378347649d 100644
--- a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68eab6a2b37d2f13602d0c3f.md
+++ b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68eab6a2b37d2f13602d0c3f.md
@@ -34,28 +34,28 @@ const pElements = document.querySelectorAll('main > section:nth-of-type(2) > blo
assert.lengthOf(pElements, 4);
```
-Your first `p` element should have the text `So much of getting a job is who you know.`.
+Your first `p` element should have the text `So much of getting a job is who you know.`
```js
const firstPEl = document.querySelector('main > section:nth-of-type(2) > blockquote > p:nth-of-type(1)');
assert.equal(firstPEl?.innerText.trim(), 'So much of getting a job is who you know.');
```
-Your second `p` element should have the text `It's OK to be an introvert, but you do need to push your boundaries.`.
+Your second `p` element should have the text `It's OK to be an introvert, but you do need to push your boundaries.`
```js
const secondPEl = document.querySelector('main > section:nth-of-type(2) > blockquote > p:nth-of-type(2)');
assert.equal(secondPEl?.innerText.trim(), "It's OK to be an introvert, but you do need to push your boundaries.");
```
-Your third `p` element should have the text `Create GitHub, Twitter, LinkedIn, and Discord accounts.`.
+Your third `p` element should have the text `Create GitHub, Twitter, LinkedIn, and Discord accounts.`
```js
const thirdPEl = document.querySelector('main > section:nth-of-type(2) > blockquote > p:nth-of-type(3)');
assert.equal(thirdPEl?.innerText.trim(), 'Create GitHub, Twitter, LinkedIn, and Discord accounts.');
```
-Your forth `p` element should have the text `Go to tech meetups and conferences. Travel if you have to.`.
+Your forth `p` element should have the text `Go to tech meetups and conferences. Travel if you have to.`
```js
const forthPEl = document.querySelector('main > section:nth-of-type(2) > blockquote > p:nth-of-type(4)');
diff --git a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68ebe9cd7523d340c0b343d3.md b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68ebe9cd7523d340c0b343d3.md
index 92dd2a3fe8b..f701cdf2274 100644
--- a/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68ebe9cd7523d340c0b343d3.md
+++ b/curriculum/challenges/english/blocks/workshop-quincys-job-tips/68ebe9cd7523d340c0b343d3.md
@@ -69,21 +69,21 @@ const pElements = document.querySelectorAll('main > section:nth-of-type(3) > blo
assert.lengthOf(pElements, 3);
```
-Your first `p` element should have the text `Share short video demos of your projects.`.
+Your first `p` element should have the text `Share short video demos of your projects.`
```js
const firstPEl = document.querySelector('main > section:nth-of-type(3) > blockquote > p:nth-of-type(1)');
assert.equal(firstPEl?.innerText.trim(), 'Share short video demos of your projects.');
```
-Your second `p` element should have the text `Keep applying to speak at bigger and bigger conferences.`.
+Your second `p` element should have the text `Keep applying to speak at bigger and bigger conferences.`
```js
const secondPEl = document.querySelector('main > section:nth-of-type(3) > blockquote > p:nth-of-type(2)');
assert.equal(secondPEl?.innerText.trim(), "Keep applying to speak at bigger and bigger conferences.");
```
-Your third `p` element should have the text `Hang out at hackerspaces and help people who are even newer to coding than you.`.
+Your third `p` element should have the text `Hang out at hackerspaces and help people who are even newer to coding than you.`
```js
const thirdPEl = document.querySelector('main > section:nth-of-type(3) > blockquote > p:nth-of-type(3)');
diff --git a/curriculum/challenges/english/blocks/workshop-salary-tracker/68c2d31a86d5672ca49d4521.md b/curriculum/challenges/english/blocks/workshop-salary-tracker/68c2d31a86d5672ca49d4521.md
index 280afa308c4..16249fd6a53 100644
--- a/curriculum/challenges/english/blocks/workshop-salary-tracker/68c2d31a86d5672ca49d4521.md
+++ b/curriculum/challenges/english/blocks/workshop-salary-tracker/68c2d31a86d5672ca49d4521.md
@@ -9,7 +9,7 @@ dashedName: step-14
Now it's time to add some validation to the `__init__` method. At the beginning of the method, create an `if` statement that checks if either `name` or `level` are not instances of `str`.
-Inside the `if` statement, raise a `TypeError` with the message `'name' and 'level' attribute must be of type 'str'.`.
+Inside the `if` statement, raise a `TypeError` with the message `'name' and 'level' attribute must be of type 'str'.`
# --hints--
@@ -34,7 +34,7 @@ Your `if` statement should check if either `name` and `level` are not instances
`) })
```
-Your `if` statement should raise a `TypeError` with the message `'name' and 'level' attribute must be of type 'str'.`.
+Your `if` statement should raise a `TypeError` with the message `'name' and 'level' attribute must be of type 'str'.`
```js
({ test: () => assert(runPython(`_Node(_code).find_class("Employee").find_function("__init__").find_ifs()[0].find_bodies()[0].has_stmt('raise TypeError("\\'name\\' and \\'level\\' attribute must be of type \\'str\\'.")')`)) })
diff --git a/curriculum/challenges/english/blocks/workshop-salary-tracker/68ca758f8160b11757f877ae.md b/curriculum/challenges/english/blocks/workshop-salary-tracker/68ca758f8160b11757f877ae.md
index e4dad5c1067..d39c810801c 100644
--- a/curriculum/challenges/english/blocks/workshop-salary-tracker/68ca758f8160b11757f877ae.md
+++ b/curriculum/challenges/english/blocks/workshop-salary-tracker/68ca758f8160b11757f877ae.md
@@ -17,7 +17,7 @@ You should have a third `if` statement inside your `level` setter.
({ test: () => assert(runPython(`_Node(_code).find_class("Employee").find_functions("level")[1].find_ifs()[2]`)) })
```
-When `new_level` is lower than `self.level`, you should raise a `ValueError` with the message `Cannot change to lower level.`.
+When `new_level` is lower than `self.level`, you should raise a `ValueError` with the message `Cannot change to lower level.`
```js
({ test: () => runPython(`
diff --git a/curriculum/challenges/english/blocks/workshop-tailwind-cta-component/685523c05fb41d0848c4b52f.md b/curriculum/challenges/english/blocks/workshop-tailwind-cta-component/685523c05fb41d0848c4b52f.md
index 714c3d95973..4695a42b711 100644
--- a/curriculum/challenges/english/blocks/workshop-tailwind-cta-component/685523c05fb41d0848c4b52f.md
+++ b/curriculum/challenges/english/blocks/workshop-tailwind-cta-component/685523c05fb41d0848c4b52f.md
@@ -7,7 +7,7 @@ dashedName: step-2
# --description--
-Inside the first `div` element, create a `span` element with the text `Soundflow`, a `h1` element with the text `Discover New Music`, and a `p` element with the text `Stream your favorite tracks and discover new artists.`.
+Inside the first `div` element, create a `span` element with the text `Soundflow`, a `h1` element with the text `Discover New Music`, and a `p` element with the text `Stream your favorite tracks and discover new artists.`
# --hints--
diff --git a/curriculum/challenges/english/blocks/workshop-tailwind-pricing-component/686386e76197458b7dfd52ed.md b/curriculum/challenges/english/blocks/workshop-tailwind-pricing-component/686386e76197458b7dfd52ed.md
index 364c0f1fd33..e75c51b021b 100644
--- a/curriculum/challenges/english/blocks/workshop-tailwind-pricing-component/686386e76197458b7dfd52ed.md
+++ b/curriculum/challenges/english/blocks/workshop-tailwind-pricing-component/686386e76197458b7dfd52ed.md
@@ -11,7 +11,7 @@ Under the `p` element you just added, create another `p` element with the text `
# --hints--
-You should create another `p` element with the text `Start exploring millions of songs with basic features and ads.`.
+You should create another `p` element with the text `Start exploring millions of songs with basic features and ads.`
```js
const paragraphs = document.querySelectorAll("p")
diff --git a/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6e80d6c3f0b329c360283.md b/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6e80d6c3f0b329c360283.md
index 1c7d6e2019f..e429f45cf20 100644
--- a/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6e80d6c3f0b329c360283.md
+++ b/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6e80d6c3f0b329c360283.md
@@ -15,7 +15,7 @@ Remember to replace `[subject]` with the `subject` variable and use proper templ
# --hints--
-Your `console` statement should output the message `Here is an example of accessing the first letter in the word [subject].`.
+Your `console` statement should output the message `Here is an example of accessing the first letter in the word [subject].`
```js
assert.match(code, /console\.log\(`Here\s+is\s+an\s+example\s+of\s+accessing\s+the\s+first\s+letter\s+in\s+the\s+word\s+\${subject}\.`\);?/);
diff --git a/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6f586767a1534f3097353.md b/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6f586767a1534f3097353.md
index 8b9f84a1e47..bf8aaa97853 100644
--- a/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6f586767a1534f3097353.md
+++ b/curriculum/challenges/english/blocks/workshop-teacher-chatbot/66b6f586767a1534f3097353.md
@@ -15,7 +15,7 @@ Then add another `console` statement that outputs the second letter of the `subj
# --hints--
-Your `console` statement should output the message `Here is an example of accessing the second letter in the word [subject].`.
+Your `console` statement should output the message `Here is an example of accessing the second letter in the word [subject].`
```js
assert.match(code, /console\.log\(`Here\s+is\s+an\s+example\s+of\s+accessing\s+the\s+second\s+letter\s+in\s+the\s+word\s+\$\{subject\}\.`\);?/);