Describe exercises minimally so that they can be understood and solved.
- Concrete - Concurrency Abort
- Concrete - Concurrency Enqueue
- Concrete - Concurrency Override
- Concrete - Extracting Resolvers
- Concrete - Parallel Chain
- Concrete - Parallel Chunks
- Concrete - Parallel Collect Errors
- Concrete - Parallel Collect Retry
- Concrete - Parallel Max Concurrency
- Concrete - Retry
- Concrete - Retry With Backoff
- Concrete - Retry With Timeout
- Concrete - Serial
- Concrete - Serial Collect Errors
- Foundation - Promise
- Foundation - Promise All
- Foundation - Promise All Settled
- Foundation - Promise Any
- Foundation - Promise Race
- Foundation - Promise Reject
- Foundation - Promise Resolve
- Foundation - Promisify
- Foundation - Promisify Read File
- Foundation - Promisify Wait
Exercise order is:
- Exercises with OR
- Exercises with Errors
UPDATE: It doesn't make sense to add more graph exercises as they become so complex that from that point on it's better to implement a more sofisticated abstraction, like a graph-based solver.
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Document:
- What it is
- How to run it
- How to use it
Make it look decent.
Some concrete exercise tests are not up to the standard (e.g. concurrencyEnqueue), in the sense that there is way too much stuff being done in a single it, which would usually be ok for these cases, but, as we want to make it absolutely clear to the user where the problems with their implementations are, we need to describe things thoroughly.
- Parallel Chunks
- Parallel Collect Retry
- Parallel Max Concurrency
- Serial
We need to document how to run tests and etc.
Complete Description For Exercises In A Standardized Way And Including Motivation And Possibly Some Concrete Example
We need to give a motivation for each exercise, as well as a concrete example of what we want to achieve.
(Eventually I'll improve this description)
- Concrete - Concurrency Abort
- Concrete - Concurrency Enqueue
- Concrete - Concurrency Override
- Concrete - Extracting Resolvers
- Concrete - Parallel Chain
- Concrete - Parallel Chunks
- Concrete - Parallel Collect Errors
- Concrete - Parallel Collect Retry
- Concrete - Parallel Max Concurrency
- Concrete - Retry
- Concrete - Retry With Backoff
- Concrete - Retry With Timeout
- Concrete - Serial
- Concrete - Serial Collect Errors
- Foundation - Promise
- Foundation - Promise All
- Foundation - Promise All Settled
- Foundation - Promise Any
- Foundation - Promise Race
- Foundation - Promise Reject
- Foundation - Promise Resolve
- Foundation - Promisify
- Foundation - Promisify Read File
- Foundation - Promisify Wait
TBD
We'll know better after we have more graph exercises.
We need to divide exercises into levels and also come up with explanations for each level as well as the rationale behind this division.
We need to implement a script that will allow users to upgrade to newer versions of the exercises without having to copy and paste anything.
The main idea is just to do a very basic file diff and then add new files to the user's folder.
Currently, the setup process is very crude.
- Discriminate each of the steps
- Error handling
- Retryability
- Allow user to choose the folder to install and warn if it's not empty
I'd like to include event loop simulation exercises, but I need to think this through first.
- Promise All Equivalent
- Promise Any Equivalent
- Serial Equivalent
- Promise Race Equivalent
- Parallel Max Concurrency Equivalent
- Concurrency Rollback
- Parallel Max Concurrency Priority
- Scheduler
Maybe it's worth to include generators, maybe it's not.
We need to provide a script that will remove tests from the user's folder so that the users can implement it themselves.
TBD