Skip to content

feat: add prototype for Proofreading Tool lab#1140

Open
BilalGhazal wants to merge 8 commits intofreeCodeCamp:mainfrom
BilalGhazal:prototype-signal-pattern-detector
Open

feat: add prototype for Proofreading Tool lab#1140
BilalGhazal wants to merge 8 commits intofreeCodeCamp:mainfrom
BilalGhazal:prototype-signal-pattern-detector

Conversation

@BilalGhazal
Copy link

@BilalGhazal BilalGhazal commented Jan 30, 2026

Checklist:

relates to #64125

@BilalGhazal BilalGhazal changed the title Prototype signal pattern detector feat: add prototype for Signal Pattern Detector lab Jan 30, 2026
@jdwilkin4 jdwilkin4 added full stack cert lab This work is for the labs team only awaiting update labels Feb 2, 2026
@jdwilkin4 jdwilkin4 requested a review from naomi-lgbt February 2, 2026 14:54
@jdwilkin4
Copy link
Contributor

Please update your PR to include the link for the issue this relates to. that makes it easier for reviewers to have context.

Right now it just says Closes #64125
Also, you don't want to close the issue. Instead it should say relates to issue-goes-here. The issue only gets closed once it is merged into the main repo.

Also, I have tagged Naomi for review here. I am not sure where this is supposed to go in the curriculum order but reading through the user stories, it comes across and maybe to advanced? is this lab supposed to be later on in the curriculum?

@jdwilkin4
Copy link
Contributor

The solution itself is not crazy complicated. but my gut is saying the user stories will probably need to be simplified a bit depending on where this goes in the curriculum.

@BilalGhazal
Copy link
Author

BilalGhazal commented Feb 3, 2026

Thanks for the notes! I did search about signal pattern detection on the website, but couldn't find anything. I do agree that the user stories are not definitive and somewhat vague, which is why I included definitions in my user stories file. However, I'm not sure where the source material or lesson related to this are to obtain more detailed information about the problems to solve.

@jdwilkin4
Copy link
Contributor

@BilalGhazal

I would suggest reaching out to Naomi in discord. She should be able to provide more context behind the user stories. 👍🏾

Because the learning objects for all of these workshops and labs should be rooted in learning and practicing the core programming concepts like loops, arrays, object. etc. We want campers to walk away feeling more confident in these areas. And right now, I fear that the current description and user stories are focused to much on trying to understand signal patterns then practicing the core concepts of programming fundamentals.

@BilalGhazal BilalGhazal reopened this Feb 10, 2026
@BilalGhazal
Copy link
Author

@jdwilkin4 I reached out to Naomi before the pull request and she did provide examples of the three functions to be written, so not sure what the next step is now.

@jdwilkin4
Copy link
Contributor

she did provide examples of the three functions to be written

The code itself is fine.

I have an issue with the user stories. So we will need Naomi's input on how to best restructure them and better understand the core learning objectives behind this lab. 👍🏾

So this is blocked for now. You can try reaching out to Naomi on discord and we will wait for her input 👍🏾

@jdwilkin4
Copy link
Contributor

@BilalGhazal

It looks like a new project idea was proposed on discord.

Can you post an update here on the new project so we can keep everything all in one place and keep track of the progress?
Thanks 👍🏾

@jdwilkin4 jdwilkin4 moved this from Backlog to In progress in Naomi's Contribution Sprints Feb 26, 2026
@BilalGhazal
Copy link
Author

@jdwilkin4 I made the update. Should I wait for Naomi to update the lab, then start working on the code to fit the new user stories and requirements?

@majestic-owl448
Copy link
Contributor

if there is a new project idea approved, post here what's the new idea, and we can update the issue accordingly if needed

@BilalGhazal
Copy link
Author

The lab is being turned from a Signal Pattern Detector into a Proofreading Tool.

Three functions will still need to be written:

findRepeatedPhrases(words, phraseLength) — given an array of words and a phrase length, find the starting indices of any repeated word sequences. This would cover nested loops with an early exit flag.

findPalindromeBreaks(words) — given an array of words, find the indices where the word-level palindrome is broken. This would cover mirrored index traversal.

analyseTexts(texts, phraseLength) — run both checks on each text in an array and return an array of result objects. This would cover iterating over an array

@majestic-owl448
Copy link
Contributor

yes pleast start creating the new prototype

@majestic-owl448
Copy link
Contributor

hi @BilalGhazal , how is it going with the new prototype?

@BilalGhazal
Copy link
Author

hi @BilalGhazal , how is it going with the new prototype?

hello, sorry for being late! I'm finishing it up.

@BilalGhazal BilalGhazal force-pushed the prototype-signal-pattern-detector branch from f27a25c to 9e56fb2 Compare March 16, 2026 05:28
@BilalGhazal BilalGhazal changed the title feat: add prototype for Signal Pattern Detector lab feat: add prototype for Proofreading Tool lab Mar 16, 2026
@BilalGhazal BilalGhazal deleted the prototype-signal-pattern-detector branch March 16, 2026 05:32
@github-project-automation github-project-automation bot moved this from In progress to Done in Naomi's Contribution Sprints Mar 16, 2026
@BilalGhazal BilalGhazal restored the prototype-signal-pattern-detector branch March 16, 2026 05:33
@BilalGhazal BilalGhazal reopened this Mar 16, 2026
@BilalGhazal
Copy link
Author

Hello, I have updated the PR.

Copy link
Contributor

@majestic-owl448 majestic-owl448 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are still working in lab-signal-pattern-detector folder, so you should maybe update that

Please use USA spelling, use analyzeTexts

there are two things that are used in the new labs that are not practiced in a workshop before, it's worth to bring up with Naomi: nested loops and break and continue

this is not the only lab that uses these, and there isn't a workshop to allow to practice them beforehand

return palindromesBroken
}

function analyseTexts(texts, phraseLength) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
function analyseTexts(texts, phraseLength) {
function analyzeTexts(texts, phraseLength) {


1. You should implement `findRepeatedPhrases(words, phraseLength)` - given an array of words and a phrase length, find the starting indices of any repeated word sequences. Use nested loops with early exit `break` flags.
2. You should implement `findPalindromeBreaks(words)` — given an array of words, find the indices where the word-level palindrome is broken.
3. You should implement `analyseTexts(texts, phraseLength)` — run both checks on each text in an array and return an array of result objects.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. You should implement `analyseTexts(texts, phraseLength)` — run both checks on each text in an array and return an array of result objects.
3. You should implement `analyzeTexts(texts, phraseLength)` — run both checks on each text in an array and return an array of result objects.


**User Stories**:

1. You should implement `findRepeatedPhrases(words, phraseLength)` - given an array of words and a phrase length, find the starting indices of any repeated word sequences. Use nested loops with early exit `break` flags.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with break there may be the issue that was not practiced in a workshop before now, it's worth to bring up with Naomi as this is not the only lab that uses break (or continue)

anyway, the user story does not give enough infos to know what the function should do

@@ -0,0 +1,9 @@
In this lab, you will create a proofreading tool, a tool that checks text for repeated phrases and palindrome breaks.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In this lab, you will create a proofreading tool, a tool that checks text for repeated phrases and palindrome breaks.
In this lab, you will create a proofreading tool, a tool that checks text for repeated words and palindrome breaks.

what is a palidrome break?

**User Stories**:

1. You should implement `findRepeatedPhrases(words, phraseLength)` - given an array of words and a phrase length, find the starting indices of any repeated word sequences. Use nested loops with early exit `break` flags.
2. You should implement `findPalindromeBreaks(words)` — given an array of words, find the indices where the word-level palindrome is broken.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are not enough details of what the function should do


1. You should implement `findRepeatedPhrases(words, phraseLength)` - given an array of words and a phrase length, find the starting indices of any repeated word sequences. Use nested loops with early exit `break` flags.
2. You should implement `findPalindromeBreaks(words)` — given an array of words, find the indices where the word-level palindrome is broken.
3. You should implement `analyseTexts(texts, phraseLength)` — run both checks on each text in an array and return an array of result objects.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what do you mean with an array of result objects? does the order matter? please add details

Copy link
Contributor

@majestic-owl448 majestic-owl448 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please also add example function calls in the prototype, this does not mean that they will be requested by the user stories, but they are useful for revieweing this

@@ -0,0 +1,49 @@
function findRepeatedPhrases(words, phraseLength) {
const repeatedWordsIndecies = []
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const repeatedWordsIndecies = []
const repeatedWordsIndices = []

}

if (match) {
repeatedWordsIndecies.push(i)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
repeatedWordsIndecies.push(i)
repeatedWordsIndices.push(i)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting update full stack cert lab This work is for the labs team only

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants