From c99575aeb72940a8dca18835dc3de7860d6eafd7 Mon Sep 17 00:00:00 2001 From: jdmedlock Date: Mon, 22 Apr 2019 19:11:04 -0500 Subject: [PATCH] Feature: Add Shuffle Deck app specification Add Shuffle Deck app specification Resolves: N/a See also: N/a --- Projects/Shuffle-Deck-App.md | 60 ++++++++++++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 61 insertions(+) create mode 100644 Projects/Shuffle-Deck-App.md diff --git a/Projects/Shuffle-Deck-App.md b/Projects/Shuffle-Deck-App.md new file mode 100644 index 00000000..4b106686 --- /dev/null +++ b/Projects/Shuffle-Deck-App.md @@ -0,0 +1,60 @@ +# Shuffle Card Deck + +**Tier:** 3-Advanced + +As a Web Developer you'll be asked to come up with innovative applications that +solve real world problems for real people. But something you'll quickly learn +is that no matter how many wonderful features you pack into an app users won't +use it if it isn't performant. In other words, there is a direct link between +how an app performs and whether users percieve it as usable. + +The objective of the Shuffle Card Deck app is to find the fastest technique for +shuffling a deck of cards you can use in game apps you create. But, more +important it will provide you with experience at measuring and evaluating app +performance. + +Your task is to implement the performance evaluation algorithm, the Xorshift +pseudorandom number generator, as well as the WELL512a.c algorithm if you +choose to attempt the bonus feature. + +## User Stories + +- [ ] User can see a panel containing a text box the user can enter the +number of rounds into, three output text boxes to contain the starting time, +ending time, and total time of the test, and two buttons - 'JS Random', +'Xorshift'. +- [ ] User can enter a number from 1 to 10,000 to specify the number of +times (or rounds) the selected random number is to be executed. +- [ ] User can click one of the three buttons to start the evaluation of the +selected random number algorithm. The random number algorithm will be executed +for the number of rounds entered by the user above. +- [ ] User can see a warning message if number of rounds has not been entered, +if it is not within the range 1 to 10,000, or if it is not a valid integer. +- [ ] User can see a tabular output area where the results of each algorithm +are displayed - algorithm name, time started, time ended, and total time. +- [ ] User can see a warning dialog with a 'Cancel' and a 'OK' button if the +number of rounds is changed before all three tests have been run. +- [ ] User can click the 'Cancel' button in the warning dialog to dismiss +the dialog with no changes. +- [ ] User can click the 'OK' button in the warning dialog to clear the +output area and close the warning dialog. + +## Bonus features + +- [ ] User can see a third algorithm button - 'WELL512a.c'. +- [ ] Developer should review the output and determine why the fastest +algorithm is faster than the slowest algorithm. + +## Useful links and resources + +- [Random Number Generation (Wikipedia)](https://en.wikipedia.org/wiki/Random_number_generation) +- [Math.random (MDN)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) +- [Xorshift (Wikipedia)](https://en.wikipedia.org/wiki/Xorshift) +- [WELL512a.c](http://www.iro.umontreal.ca/~panneton/well/WELL512a.c) +- [console.time (MDN)](https://developer.mozilla.org/en-US/docs/Web/API/Console/time) +- [Using the Chrome DevTools Audit Feature to Measure and Optimize Performance (Part 1)](https://medium.com/chingu/using-the-chrome-devtools-audit-feature-to-measure-and-optimize-performance-part-1-868a20bbfde8) +- [Using the Chrome DevTools Audit Feature to Measure and Optimize Performance (Part 2)](https://medium.com/chingu/using-the-chrome-devtools-audit-feature-to-measure-and-optimize-performance-part-2-af4a78bc6cf0) + +## Example projects + +Add one or more examples of projects that have similar functionalities to this application. This will act as a guide for the developer. diff --git a/README.md b/README.md index f76d842f..e2dac608 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,7 @@ required to complete them. | [Kudos Slackbot](./Projects/Kudos-Slackbot.md) | Give recognition to a deserving peer | 3-Advanced | | [🌟MyPodcast Library](./Projects/MyPodcast-Library-app.md) | Create a library of favorite podcasts | 3-Advanced | | [🌟Shell Game](./Projects/Shell-Game.md) | Animated shell game | 3-Advanced | +| [🌟Shuffle Deck](./Projects/Shuffle-Deck-App.md) | Evaluate different algorithms for shuffling a card deck |3-Advanced | | [Slack Archiver](./Projects/Slack-Archiver.md) | Archive Slack Messages | 3-Advanced | | [Spell-It App](./Projects/SpellIt-App.md) | A twist on the classic Speak N Spell game | 3-Advanced | | [Survey App](./Projects/Survey-App.md) | Define, conduct, and view a survey | 3-Advanced |