Skip to content

JavaScript ECMAscript Course

enki-hq edited this page May 19, 2020 · 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
5 let-part-2 👶 introduction

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
3 array-copywithin 👶 introduction
💪 workout
✨ new
es6-extensions-standard-library.1: 10
4 typed-arrays 👶 introduction
💪 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 destructuring-part-1 👶 introduction
✨ new
💪 workout
2 destructuring-part-2 👶 introduction
✨ new
💪 workout
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
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

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 set-data-structure 👶 introduction
💪 workout
5 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. set-data-structure
  30. weakmap
  31. tagged-template-literals
  32. string-raw
  33. classes-and-constructor
  34. extends-super-and-static
  35. introducing-modules
  36. multiple-functions-in-single-module
  37. introducing-promises
  38. how-to-create-promises
  39. promises-reject
  40. chaining-promises
  41. promise-api-methods
  42. symbol
  43. symbol-registry
  44. why-use-symbols
  45. why-use-symbols-2
  46. symbol-special-properties
  47. introducing-iterators
  48. iterator-protocol
  49. iterables
  50. iterator-usages
  51. introducing-generators
  52. yield
  53. passing-values-to-generators
  54. generators-and-exceptions
  55. introducing-proxy
  56. 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. set-data-structure
  27. weakmap
  28. tagged-template-literals
  29. tagged-template-literals-2
  30. string-raw
  31. classes-and-constructor
  32. extends-super-and-static
  33. introducing-modules
  34. multiple-functions-in-single-module
  35. introducing-promises
  36. how-to-create-promises
  37. promises-reject
  38. chaining-promises
  39. promise-api-methods
  40. error-first-callbacks
  41. name-your-callback-functions-to-avoid-callback-hell
  42. transform-values-into-promises
  43. using-timers-with-extra-arguments
  44. inversion-of-control
  45. symbol
  46. symbol-registry
  47. why-use-symbols
  48. why-use-symbols-2
  49. symbol-special-properties
  50. introducing-iterators
  51. iterator-protocol
  52. iterables
  53. iterator-usages
  54. introducing-generators
  55. yield
  56. passing-values-to-generators
  57. generators-and-exceptions
  58. introducing-proxy
  59. 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. tagged-template-literals-2
  4. error-first-callbacks
  5. name-your-callback-functions-to-avoid-callback-hell
  6. transform-values-into-promises
  7. using-timers-with-extra-arguments
  8. inversion-of-control
  9. symbol
  10. symbol-registry
  11. why-use-symbols
  12. why-use-symbols-2
  13. 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. weakmap
  24. tagged-template-literals
  25. classes-and-constructor
  26. extends-super-and-static
  27. introducing-modules
  28. multiple-functions-in-single-module
  29. symbol
  30. symbol-registry
  31. why-use-symbols
  32. why-use-symbols-2
  33. symbol-special-properties
  34. introducing-iterators
  35. iterator-protocol
  36. iterables
  37. iterator-usages
  38. introducing-generators
  39. introducing-proxy
  40. 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