freeCodeCamp/CurriculumExpansion

Sudoku Solver (Certification Project)

Closed this issue ยท 10 comments

Create project from the quality assurance certification.

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.

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?

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).

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.

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.

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.

@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?

@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.

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."