freeCodeCamp / CurriculumExpansion

Creative Commons Attribution Share Alike 4.0 International
315 stars 105 forks source link

Sudoku Solver (Certification Project) #250

Closed beaucarnes closed 2 years ago

beaucarnes commented 4 years ago

Create project from the quality assurance certification.

scissorsneedfoodtoo commented 4 years ago

Boilerplate: https://glitch.com/edit/#!/fir-ethernet Solution: https://glitch.com/edit/#!/bottlenose-eucalyptus

TevaHenry commented 4 years ago

Seemed quite challenging in the beginning, and not as well documented as the American/British Translation Project.

There is also a reference to a function in the HTML code, on textArea input, that could be predefined in sudoku-solver.js This would not only give an idea on where to begin, but also avoid experiencing a bug pertaining to code not written by the student.

Screen Shot 2020-05-12 at 4 38 52 PM

Still a great addition to the curriculum.

scissorsneedfoodtoo commented 4 years ago

Great, thank you for catching that @TevaHenry. I must have forgotten to remove that when creating the boilerplate. That's something students should implement themselves.

Also, great point about the documentation not being as good as the American/British Translator. I'll make sure to update the solution and boilerplate so it's more clear where the error message should be appended, and so on.

What do you think about the difficulty of this project? Do you think it'll be alright for students at this point in the curriculum if it's the last project in the section?

TevaHenry commented 4 years ago

Glad to help in anyway I can, @scissorsneedfoodtoo.

I would have this as one of the last projects in the section as it is quite challenging (in contrast to other freeCodeCamp projects). The difficulty lies in writing the algorithm to solve the sudoku puzzle. So much so that it overshadows the testing and feels out of place in this section. However, as @gulshansainis suggested, emphasis on writing the tests first will counteract that.

Furthermore, "Get a Hint" could point towards the concept of backtracking and other sudoku solving algorithms (https://en.wikipedia.org/wiki/Sudoku_solving_algorithms).

scissorsneedfoodtoo commented 4 years ago

Thanks for your feedback @TevaHenry. I agree that this challenge will be quite difficult, mostly due to writing the sudoku solver code like you mentioned. We're thinking of increasing the difficulty for some of the current certifications, though we want them to be challenging, not frustrating.

What I'm thinking is that we can include some simple sudoku puzzle strings and their solutions in the public directory, along with the link you provided in the user stories. The provided puzzles will be mostly complete with just 10 to 15 numbers missing, and should make it so even brute force algorithms work.

Those things will hopefully help place more emphasis on writing the tests than figuring out the best algorithm to solve any puzzle.

TevaHenry commented 4 years ago

I think that is a good sentiment, @scissorsneedfoodtoo. Although challenging, this project never felt frustrating.

The additions you mention are great, and I don't think they remove the challenging aspect of the project. It just provides guidance to not linger with the algorithm.

scissorsneedfoodtoo commented 4 years ago

Great, thank you @TevaHenry. Your feedback really puts my mind at ease with this project.

It's certainly daunting to build a sudoku solver, but hopefully those additions will help communicate that we don't expect a perfect solution and that writing tests is more important.

scissorsneedfoodtoo commented 4 years ago

@TevaHenry, I just updated the user stories for the solution and boilerplate. Hopefully they're more clear now. Could you take a look when you have a chance and let us know what you think?

TevaHenry commented 4 years ago

@scissorsneedfoodtoo the user stories are more thorough; however user story 5 is confusing/verbose and undermines user stories 2 and 4. Given the description of the first unit test, I think it would be fine to just describe a valid input as digits 1-9.

scissorsneedfoodtoo commented 4 years ago

Very good point, thank you @TevaHenry. I'll change user story 5 so it reads "The text area should only update the corresponding sudoku grid cell when a whole number between 1 and 9 is entered."