Skip to content

JavaScript ECMAscript Course

enki-hq edited this page Aug 28, 2019 · 7 revisions

ECMAscript Course Overview

Table of Contents

Content

Below you can find the ordered content of the topic, in a linear progression

The linear progression of content aims to cover all content, course by course, workout by workout as follows:

  • first course is the only core one, denoted by its manifest
  • the next course is denoted by the first item of the next array in each course manifest
  • each course has its order of workouts designated by the sections field in the same aforementioned manifest

Insights:

no name content aspects standards PQ RQ Quiz done
1 ecmascript 👶 introduction
✨ new
2 const-part-1 👶 introduction new-declaration-keywords.1: 10
3 const-part-2 👶 introduction new-declaration-keywords.1: 10
4 let-part-1 👶 introduction new-declaration-keywords.0: 10
5 let-part-2 👶 introduction new-declaration-keywords.0: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 arrow-functions-part-1 👶 introduction
✨ new
💪 workout
2 arrow-functions-part-2 👶 introduction
💪 workout
✨ new
3 default-function-parameters 👶 introduction
✨ new
💪 workout
4 method-shorthand 👶 introduction
✨ new
💪 workout
5 property-value-shorthand 👶 introduction
✨ new
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 math-extensions 👶 introduction
💪 workout
2 binary-and-octal-notation 👶 introduction
✨ new
💪 workout
3 number-extensions-part-1 👶 introduction
✨ new
💪 workout
4 number-extensions-part-2 👶 introduction
✨ new
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 searching-array-methods 👶 introduction
✨ new
💪 workout
es6-extensions-standard-library.1: 10
2 array-extensions 💪 workout es6-extensions-standard-library.1: 10
3 array-copywithin 👶 introduction
💪 workout
✨ new
es6-extensions-standard-library.1: 10
4 typed-arrays 👶 introduction
💪 workout
es6-extensions-standard-library.1: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 destructuring-part-1 👶 introduction
✨ new
💪 workout
destructuring.0: 10
2 destructuring-part-2 👶 introduction
✨ new
💪 workout
destructuring.1: 10
3 destructuring-part-3 👶 introduction
✨ new
💪 workout
destructuring.0: 10
4 argument-destructuring-with-defaults 👶 introduction
✨ new
💪 workout
destructuring.2: 10
5 defaults-values-apply-only-to-undefined-and-not-to-null 👶 introduction
✨ new
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
destructuring-assignments fillTheGap 👶 introduction
✨ new
💪 workout
destructuring.0: 1000
destructuring.1: 1000

Insights:

no name content aspects standards PQ RQ Quiz done
1 template-literals 👶 introduction
✨ new
💪 workout
es6-extensions-standard-library.2: 10
2 string-extensions 👶 introduction
✨ new
💪 workout
es6-extensions-standard-library.2: 10
3 unicode-in-javascript 👶 introduction
✨ new
💪 workout
🦑 deep
es6-extensions-standard-library.2: 10
4 internationalization-localization ✨ new
💪 workout
🦑 deep
es6-extensions-standard-library.2: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
ecmascript-time-travel fillTheGap 👶 introduction
✨ new
💪 workout
🦑 deep
es6-extensions-standard-library.2: 10

Insights:

no name content aspects standards PQ RQ Quiz done
1 spread-part-1 👶 introduction
✨ new
💪 workout
2 spread-part-2 👶 introduction
✨ new
💪 workout
3 map-data-structure 👶 introduction
💪 workout
4 reflect-api 👶 introduction
✨ new
💪 workout
🦑 deep
5 set-data-structure 👶 introduction
💪 workout
6 weakmap 👶 introduction
✨ new
💪 workout

Exercises:

no name type aspects standards done
1 js-practice-spreads codewars 👶 introduction
💪 workout
execution-context.1: 1000

Game:

name type aspects standards done
map-set-weakmap-weakset fillTheGap 👶 introduction
💪 workout

Insights:

no name content aspects standards PQ RQ Quiz done
1 tagged-template-literals ✨ new
💪 workout
👶 introduction
2 tagged-template-literals-2 💪 workout
🦑 deep
3 string-raw 👶 introduction
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
stringing-it-all-together fillTheGap 👶 introduction
✨ new
💪 workout

Insights:

no name content aspects standards PQ RQ Quiz done
1 classes-and-constructor 👶 introduction
✨ new
💪 workout
2 extends-super-and-static 👶 introduction
✨ new
💪 workout
3 introducing-modules 👶 introduction
✨ new
💪 workout
4 multiple-functions-in-single-module 👶 introduction
✨ new
💪 workout

Exercises:

no name type aspects standards done
1 js-practice-classes-i codewars 👶 introduction
✨ new
💪 workout
prototype-class.0: 1000
prototype-class.1: 1000
2 js-practice-class-inheritance-i codewars 👶 introduction
✨ new
💪 workout
prototype-inherit.0: 1000
prototype-inherit.1: 1000
3 js-practice-getters codewars 👶 introduction
✨ new
💪 workout
prototype-class.0: 1000
prototype-class.1: 1000
prototype-class.2: 1000
4 js-practice-setters codewars 👶 introduction
✨ new
💪 workout
prototype-class.0: 1000
prototype-class.1: 1000
prototype-class.2: 1000
5 js-practice-class-inheritance-ii codewars 👶 introduction
✨ new
💪 workout
prototype-class.0: 1000
prototype-class.1: 1000
prototype-class.2: 1000
prototype-inherit.0: 1000
6 js-practice-classes-ii codewars 👶 introduction
✨ new
💪 workout
prototype-class.0: 1000
prototype-class.1: 1000
prototype-class.2: 1000

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 introducing-promises 👶 introduction
💪 workout
2 how-to-create-promises 👶 introduction
💪 workout
3 promises-reject 👶 introduction
💪 workout
4 chaining-promises 👶 introduction
💪 workout
5 promise-api-methods 👶 introduction
💪 workout

Exercises:

no name type aspects standards done
1 js-practice-promises codewars 👶 introduction
💪 workout
async.2: 1000
2 js-practice-async-await codewars 👶 introduction
✨ new
💪 workout
async.3: 1000

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 error-first-callbacks 🔮 obscura
💪 workout
🦑 deep
async.0: 10
identify-common-design-patterns.3: 10
2 name-your-callback-functions-to-avoid-callback-hell 💪 workout
🦑 deep
🔮 obscura
async.0: 10
functions.3: 10
control-flow.5: 10
3 transform-values-into-promises 💪 workout
🦑 deep
🔮 obscura
async.2: 10
4 using-timers-with-extra-arguments 🔮 obscura
💪 workout
🦑 deep
async.0: 10
5 inversion-of-control 💪 workout
🦑 deep
🔮 obscura
async.2: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

12. symbol

Insights:

no name content aspects standards PQ RQ Quiz done
1 symbol 👶 introduction
✨ new
💪 workout
🦑 deep
2 symbol-registry 👶 introduction
✨ new
💪 workout
🦑 deep
3 why-use-symbols 👶 introduction
✨ new
💪 workout
🦑 deep
4 why-use-symbols-2 👶 introduction
✨ new
💪 workout
🦑 deep
5 symbol-special-properties 👶 introduction
✨ new
💪 workout
🦑 deep

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 introducing-iterators 👶 introduction
✨ new
💪 workout
2 iterator-protocol 👶 introduction
✨ new
💪 workout
3 iterables 👶 introduction
✨ new
💪 workout
4 iterator-usages 👶 introduction
✨ new
💪 workout
5 introducing-generators 👶 introduction
✨ new
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
iterators-for-of-spreads fillTheGap 👶 introduction
💪 workout

Insights:

no name content aspects standards PQ RQ Quiz done
1 yield 👶 introduction
💪 workout
2 passing-values-to-generators 👶 introduction
💪 workout
3 generators-and-exceptions 👶 introduction
💪 workout
4 introducing-proxy 👶 introduction
✨ new
💪 workout
5 proxy-interception-points 👶 introduction
✨ new
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
generators-and-promises fillTheGap 👶 introduction
💪 workout

Standards

✅ - At least one insight covers this

❌ - Nothing covers this

🛠️ - This standard has no objectives yet

✅ Use new variable declaration keywords to communicate more effectively with other developers

  1. ✅ Use let for block-scoped variables
  2. ✅ Use const for variables that will not change

❌ Use extensions to JavaScript’s standard library to perform data analysis and manipulation

  1. ❌ Use new Object static methods
  2. ✅ Use new Array static and prototype methods
  3. ✅ Use new String static and prototype methods and properties
  4. ❌ Use new Number static and prototype methods and properties
  5. ❌ Use new Math methods
  6. ❌ Use new RegExp syntax extensions

❌ Use updates to functions to create more expressive functions

  1. ❌ Use Arrow Functions
  2. ❌ Use Generator Functions
  3. ❌ Use parameter defaults
  4. ❌ Use the rest operator ... to capture additional parameters

❌ Use new data structures and their features to store data

  1. ❌ Use Set and it's methods to effectively store and retrieve data
  2. ❌ Use Map and it's methods to effectively store and retrieve data
  3. ❌ Use WeakSet and it's methods to effectively store and retrieve data
  4. ❌ Use WeakMap and it's methods to effectively store and retrieve data
  5. ❌ Use Typed Arrays and their methods to effectively store and retrieve data
  6. ❌ Use DataViews and their methods to effectively store and retrieve data
  7. ❌ Use Symbol and it's methods to effectively store and retrieve data
  8. ❌ Use the spread operator (...) to spread a collection

❌ Use destructuring syntax to operate on data in collection

  1. ✅ Use destructuring syntax with arrays
  2. ✅ Use destructuring syntax with objects
  3. ✅ Use destructuring syntax to assign default values in objects
  4. ❌ Use destructuring syntax with strings
  5. ❌ Use destructuring syntax with computed property names
  6. ❌ Use destructuring syntax to unpack field names from objects passed as a function parameter
  7. ❌ Use destructuring syntax to iterate over collections

❌ Use prototypes to create class-like objects in JavaScript

  1. ❌ Use the class keyword to declare a class, using the constructor function
  2. ❌ Use the extends keyword to inherit from another class, and use super in the constructor function

❌ Use native Promises to manage asynchronous operations

  1. ❌ Use the Promise constructor to create a new promise
  2. ❌ Use .then to await promise resolution
  3. ❌ Use .catch to catch errors
  4. ❌ Use .all to await multiple promises
  5. ❌ Use .resolve to resolve a promise
  6. ❌ Use .reject to reject a promise
  7. ❌ Use .race to race promises

❌ Use async await to manage asynchronous operations

  1. ❌ Write an async function that performs an asynchronous task
  2. ❌ Use the await keyword to pause execution in an async function until a promise resolves

❌ Use iterators and generators to process collections

  1. ❌ Use for..of loops to iterate over a collection by value
  2. ❌ Use generator functions to yield a sequence
  3. ❌ Use a generator to invert control
  4. ❌ Use a generator to manage asynchronous activity by suspending execution until after a promise has resolved

❌ Use Proxies to define custom behavior for fundamental operations in JavaScript

  1. ❌ Use a Proxy to handle property lookup and assignment
  2. ❌ Use a Proxy to handle function invocation
  3. ❌ Use Reflect to use the internal default behavior of proxy methods

❌ Use native ES6 Modules to import code

  1. ❌ Import a module
  2. ❌ Import named components of a module
  3. ❌ Export a module
  4. ❌ Export multiple named components of a module

Aspects

Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.

These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.

For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration

👶 Introduction

If you are being introduced to the topic for the first time

Insights:

  1. ecmascript
  2. const-part-1
  3. const-part-2
  4. let-part-1
  5. let-part-2
  6. arrow-functions-part-1
  7. arrow-functions-part-2
  8. default-function-parameters
  9. method-shorthand
  10. property-value-shorthand
  11. math-extensions
  12. binary-and-octal-notation
  13. number-extensions-part-1
  14. number-extensions-part-2
  15. searching-array-methods
  16. array-copywithin
  17. typed-arrays
  18. destructuring-part-1
  19. destructuring-part-2
  20. destructuring-part-3
  21. argument-destructuring-with-defaults
  22. defaults-values-apply-only-to-undefined-and-not-to-null
  23. template-literals
  24. string-extensions
  25. unicode-in-javascript
  26. spread-part-1
  27. spread-part-2
  28. map-data-structure
  29. reflect-api
  30. set-data-structure
  31. weakmap
  32. tagged-template-literals
  33. string-raw
  34. classes-and-constructor
  35. extends-super-and-static
  36. introducing-modules
  37. multiple-functions-in-single-module
  38. introducing-promises
  39. how-to-create-promises
  40. promises-reject
  41. chaining-promises
  42. promise-api-methods
  43. symbol
  44. symbol-registry
  45. why-use-symbols
  46. why-use-symbols-2
  47. symbol-special-properties
  48. introducing-iterators
  49. iterator-protocol
  50. iterables
  51. iterator-usages
  52. introducing-generators
  53. yield
  54. passing-values-to-generators
  55. generators-and-exceptions
  56. introducing-proxy
  57. proxy-interception-points

Exercises:

  1. js-practice-spreads
  2. js-practice-classes-i
  3. js-practice-class-inheritance-i
  4. js-practice-getters
  5. js-practice-setters
  6. js-practice-class-inheritance-ii
  7. js-practice-classes-ii
  8. js-practice-promises
  9. js-practice-async-await

Games:

  1. destructuring-assignments
  2. ecmascript-time-travel
  3. map-set-weakmap-weakset
  4. stringing-it-all-together
  5. iterators-for-of-spreads
  6. generators-and-promises

💪 Workout

Theory put into practice/that’s how you achieve X points

Insights:

  1. arrow-functions-part-1
  2. arrow-functions-part-2
  3. default-function-parameters
  4. method-shorthand
  5. property-value-shorthand
  6. math-extensions
  7. binary-and-octal-notation
  8. number-extensions-part-1
  9. number-extensions-part-2
  10. searching-array-methods
  11. array-extensions
  12. array-copywithin
  13. typed-arrays
  14. destructuring-part-1
  15. destructuring-part-2
  16. destructuring-part-3
  17. argument-destructuring-with-defaults
  18. defaults-values-apply-only-to-undefined-and-not-to-null
  19. template-literals
  20. string-extensions
  21. unicode-in-javascript
  22. internationalization-localization
  23. spread-part-1
  24. spread-part-2
  25. map-data-structure
  26. reflect-api
  27. set-data-structure
  28. weakmap
  29. tagged-template-literals
  30. tagged-template-literals-2
  31. string-raw
  32. classes-and-constructor
  33. extends-super-and-static
  34. introducing-modules
  35. multiple-functions-in-single-module
  36. introducing-promises
  37. how-to-create-promises
  38. promises-reject
  39. chaining-promises
  40. promise-api-methods
  41. error-first-callbacks
  42. name-your-callback-functions-to-avoid-callback-hell
  43. transform-values-into-promises
  44. using-timers-with-extra-arguments
  45. inversion-of-control
  46. symbol
  47. symbol-registry
  48. why-use-symbols
  49. why-use-symbols-2
  50. symbol-special-properties
  51. introducing-iterators
  52. iterator-protocol
  53. iterables
  54. iterator-usages
  55. introducing-generators
  56. yield
  57. passing-values-to-generators
  58. generators-and-exceptions
  59. introducing-proxy
  60. proxy-interception-points

Exercises:

  1. js-practice-spreads
  2. js-practice-classes-i
  3. js-practice-class-inheritance-i
  4. js-practice-getters
  5. js-practice-setters
  6. js-practice-class-inheritance-ii
  7. js-practice-classes-ii
  8. js-practice-promises
  9. js-practice-async-await

Games:

  1. destructuring-assignments
  2. ecmascript-time-travel
  3. map-set-weakmap-weakset
  4. stringing-it-all-together
  5. iterators-for-of-spreads
  6. generators-and-promises

🦑 Deep

Prerequisite knowledge consisting of 2 or more 👶/💪 workouts

Insights:

  1. unicode-in-javascript
  2. internationalization-localization
  3. reflect-api
  4. tagged-template-literals-2
  5. error-first-callbacks
  6. name-your-callback-functions-to-avoid-callback-hell
  7. transform-values-into-promises
  8. using-timers-with-extra-arguments
  9. inversion-of-control
  10. symbol
  11. symbol-registry
  12. why-use-symbols
  13. why-use-symbols-2
  14. symbol-special-properties

⚠️ There are no exercises tagged with this aspect in ecmascript-2015. Games:

  1. ecmascript-time-travel

✨ New

Recently added/gained traction feature

Insights:

  1. ecmascript
  2. arrow-functions-part-1
  3. arrow-functions-part-2
  4. default-function-parameters
  5. method-shorthand
  6. property-value-shorthand
  7. binary-and-octal-notation
  8. number-extensions-part-1
  9. number-extensions-part-2
  10. searching-array-methods
  11. array-copywithin
  12. destructuring-part-1
  13. destructuring-part-2
  14. destructuring-part-3
  15. argument-destructuring-with-defaults
  16. defaults-values-apply-only-to-undefined-and-not-to-null
  17. template-literals
  18. string-extensions
  19. unicode-in-javascript
  20. internationalization-localization
  21. spread-part-1
  22. spread-part-2
  23. reflect-api
  24. weakmap
  25. tagged-template-literals
  26. classes-and-constructor
  27. extends-super-and-static
  28. introducing-modules
  29. multiple-functions-in-single-module
  30. symbol
  31. symbol-registry
  32. why-use-symbols
  33. why-use-symbols-2
  34. symbol-special-properties
  35. introducing-iterators
  36. iterator-protocol
  37. iterables
  38. iterator-usages
  39. introducing-generators
  40. introducing-proxy
  41. proxy-interception-points

Exercises:

  1. js-practice-classes-i
  2. js-practice-class-inheritance-i
  3. js-practice-getters
  4. js-practice-setters
  5. js-practice-class-inheritance-ii
  6. js-practice-classes-ii
  7. js-practice-async-await

Games:

  1. destructuring-assignments
  2. ecmascript-time-travel
  3. stringing-it-all-together

🔮 Obscura

Stories, obscure details that don’t specifically relate to a learning objective

Insights:

  1. error-first-callbacks
  2. name-your-callback-functions-to-avoid-callback-hell
  3. transform-values-into-promises
  4. using-timers-with-extra-arguments
  5. inversion-of-control

⚠️ There are no exercises tagged with this aspect in ecmascript-2015. :warning: There are no games tagged with this aspect in ecmascript-2015.

✅ All content has been tagged with aspects.

Clone this wiki locally