-
Notifications
You must be signed in to change notification settings - Fork 1.2k
JavaScript ECMAscript Course
ECMAscript Course Overview
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:
Game:
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:
Game:
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:
Game:
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:
Game:
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:
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:
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:
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:
10. promises
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:
11. async-tips
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:
Game:
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:
Game:
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:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
iterators-for-of-spreads | fillTheGap | 👶 introduction 💪 workout |
❌ | ❌ |
14. generators-proxy
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:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
generators-and-promises | fillTheGap | 👶 introduction 💪 workout |
❌ | ❌ |
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ❌ Use let for block-scoped variables
- ✅ Use const for variables that will not change
- ❌ Use new Object static methods
- ✅ Use new Array static and prototype methods
- ✅ Use new String static and prototype methods and properties
- ❌ Use new Number static and prototype methods and properties
- ❌ Use new Math methods
- ❌ Use new RegExp syntax extensions
- ❌ Use Arrow Functions
- ❌ Use Generator Functions
- ❌ Use parameter defaults
- ❌ Use the rest operator ... to capture additional parameters
- ❌ Use Set and it's methods to effectively store and retrieve data
- ❌ Use Map and it's methods to effectively store and retrieve data
- ❌ Use WeakSet and it's methods to effectively store and retrieve data
- ❌ Use WeakMap and it's methods to effectively store and retrieve data
- ❌ Use Typed Arrays and their methods to effectively store and retrieve data
- ❌ Use DataViews and their methods to effectively store and retrieve data
- ❌ Use Symbol and it's methods to effectively store and retrieve data
- ❌ Use the spread operator (...) to spread a collection
- ✅ Use destructuring syntax with arrays
- ❌ Use destructuring syntax with objects
- ✅ Use destructuring syntax to assign default values in objects
- ❌ Use destructuring syntax with strings
- ❌ Use destructuring syntax with computed property names
- ❌ Use destructuring syntax to unpack field names from objects passed as a function parameter
- ❌ Use destructuring syntax to iterate over collections
- ❌ Use the class keyword to declare a class, using the constructor function
- ❌ Use the extends keyword to inherit from another class, and use super in the constructor function
- ❌ Use the Promise constructor to create a new promise
- ❌ Use .then to await promise resolution
- ❌ Use .catch to catch errors
- ❌ Use .all to await multiple promises
- ❌ Use .resolve to resolve a promise
- ❌ Use .reject to reject a promise
- ❌ Use .race to race promises
- ❌ Write an async function that performs an asynchronous task
- ❌ Use the await keyword to pause execution in an async function until a promise resolves
- ❌ Use for..of loops to iterate over a collection by value
- ❌ Use generator functions to yield a sequence
- ❌ Use a generator to invert control
- ❌ Use a generator to manage asynchronous activity by suspending execution until after a promise has resolved
- ❌ Use a Proxy to handle property lookup and assignment
- ❌ Use a Proxy to handle function invocation
- ❌ Use Reflect to use the internal default behavior of proxy methods
- ❌ Import a module
- ❌ Import named components of a module
- ❌ Export a module
- ❌ Export multiple named components of a module
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
If you are being introduced to the topic for the first time
Insights:
- ecmascript
- const-part-1
- const-part-2
- let-part-1
- let-part-2
- arrow-functions-part-1
- arrow-functions-part-2
- default-function-parameters
- method-shorthand
- property-value-shorthand
- math-extensions
- binary-and-octal-notation
- number-extensions-part-1
- number-extensions-part-2
- searching-array-methods
- array-copywithin
- typed-arrays
- destructuring-part-1
- destructuring-part-2
- destructuring-part-3
- argument-destructuring-with-defaults
- defaults-values-apply-only-to-undefined-and-not-to-null
- template-literals
- string-extensions
- unicode-in-javascript
- spread-part-1
- spread-part-2
- map-data-structure
- set-data-structure
- weakmap
- tagged-template-literals
- string-raw
- classes-and-constructor
- extends-super-and-static
- introducing-modules
- multiple-functions-in-single-module
- introducing-promises
- how-to-create-promises
- promises-reject
- chaining-promises
- promise-api-methods
- symbol
- symbol-registry
- why-use-symbols
- why-use-symbols-2
- symbol-special-properties
- introducing-iterators
- iterator-protocol
- iterables
- iterator-usages
- introducing-generators
- yield
- passing-values-to-generators
- generators-and-exceptions
- introducing-proxy
- proxy-interception-points
Exercises:
- js-practice-spreads
- js-practice-classes-i
- js-practice-class-inheritance-i
- js-practice-getters
- js-practice-setters
- js-practice-class-inheritance-ii
- js-practice-classes-ii
- js-practice-promises
- js-practice-async-await
Games:
- destructuring-assignments
- ecmascript-time-travel
- map-set-weakmap-weakset
- stringing-it-all-together
- iterators-for-of-spreads
- generators-and-promises
Theory put into practice/that’s how you achieve X points
Insights:
- arrow-functions-part-1
- arrow-functions-part-2
- default-function-parameters
- method-shorthand
- property-value-shorthand
- math-extensions
- binary-and-octal-notation
- number-extensions-part-1
- number-extensions-part-2
- searching-array-methods
- array-extensions
- array-copywithin
- typed-arrays
- destructuring-part-1
- destructuring-part-2
- destructuring-part-3
- argument-destructuring-with-defaults
- defaults-values-apply-only-to-undefined-and-not-to-null
- template-literals
- string-extensions
- unicode-in-javascript
- internationalization-localization
- spread-part-1
- spread-part-2
- map-data-structure
- set-data-structure
- weakmap
- tagged-template-literals
- tagged-template-literals-2
- string-raw
- classes-and-constructor
- extends-super-and-static
- introducing-modules
- multiple-functions-in-single-module
- introducing-promises
- how-to-create-promises
- promises-reject
- chaining-promises
- promise-api-methods
- error-first-callbacks
- name-your-callback-functions-to-avoid-callback-hell
- transform-values-into-promises
- using-timers-with-extra-arguments
- inversion-of-control
- symbol
- symbol-registry
- why-use-symbols
- why-use-symbols-2
- symbol-special-properties
- introducing-iterators
- iterator-protocol
- iterables
- iterator-usages
- introducing-generators
- yield
- passing-values-to-generators
- generators-and-exceptions
- introducing-proxy
- proxy-interception-points
Exercises:
- js-practice-spreads
- js-practice-classes-i
- js-practice-class-inheritance-i
- js-practice-getters
- js-practice-setters
- js-practice-class-inheritance-ii
- js-practice-classes-ii
- js-practice-promises
- js-practice-async-await
Games:
- destructuring-assignments
- ecmascript-time-travel
- map-set-weakmap-weakset
- stringing-it-all-together
- iterators-for-of-spreads
- generators-and-promises
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- unicode-in-javascript
- internationalization-localization
- tagged-template-literals-2
- error-first-callbacks
- name-your-callback-functions-to-avoid-callback-hell
- transform-values-into-promises
- using-timers-with-extra-arguments
- inversion-of-control
- symbol
- symbol-registry
- why-use-symbols
- why-use-symbols-2
- symbol-special-properties
Recently added/gained traction feature
Insights:
- ecmascript
- arrow-functions-part-1
- arrow-functions-part-2
- default-function-parameters
- method-shorthand
- property-value-shorthand
- binary-and-octal-notation
- number-extensions-part-1
- number-extensions-part-2
- searching-array-methods
- array-copywithin
- destructuring-part-1
- destructuring-part-2
- destructuring-part-3
- argument-destructuring-with-defaults
- defaults-values-apply-only-to-undefined-and-not-to-null
- template-literals
- string-extensions
- unicode-in-javascript
- internationalization-localization
- spread-part-1
- spread-part-2
- weakmap
- tagged-template-literals
- classes-and-constructor
- extends-super-and-static
- introducing-modules
- multiple-functions-in-single-module
- symbol
- symbol-registry
- why-use-symbols
- why-use-symbols-2
- symbol-special-properties
- introducing-iterators
- iterator-protocol
- iterables
- iterator-usages
- introducing-generators
- introducing-proxy
- proxy-interception-points
Exercises:
- js-practice-classes-i
- js-practice-class-inheritance-i
- js-practice-getters
- js-practice-setters
- js-practice-class-inheritance-ii
- js-practice-classes-ii
- js-practice-async-await
Games:
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
- error-first-callbacks
- name-your-callback-functions-to-avoid-callback-hell
- transform-values-into-promises
- using-timers-with-extra-arguments
- inversion-of-control
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: