-
Notifications
You must be signed in to change notification settings - Fork 1.2k
JavaScript Core Course
Core 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
1. intro-js
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | why-learn-javascript | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
2 | javascript-basics-part-1 | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
3 | javascript-basics-part-2 | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ✅ | ❌ |
4 | console-in-javascript | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
2. types
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | types-introduction | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
2 | weak-vs-strict-equality-operator | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ✅ | ❌ |
3 | types-undefined-and-null | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | types-boolean-and-number | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | the-difference-between-null-undefined-and-nan | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
taking-precedence | fillTheGap | 💪 workout | javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.0: 1000 |
✅ |
3. flow-control
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | if-statement | ✅ | 👶 introduction | ❌ | ✅ | ❌ | ❌ | ❌ |
2 | js-switch-statement | ✅ | 👶 introduction | ❌ | ❌ | ✅ | ❌ | ❌ |
3 | loops-part-1 | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | loops-part-2 | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | data-type-comparison-in-switch-statements | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-glitch-if | glitch | 👶 introduction | javascript-syntax.2: 1000 control-flow.1: 1000 |
✅ |
2 | js-practice-if-else | codewars | 👶 introduction 💪 workout |
control-flow.0: 1000 control-flow.1: 1000 control-flow.5: 1000 write-expressions.0: 1000 |
✅ |
3 | js-practice-switch-case | codewars | 👶 introduction | control-flow.0: 1000 control-flow.2: 1000 control-flow.5: 1000 write-expressions.0: 1000 |
✅ |
4 | js-practice-for-loops | glitch | 👶 introduction | control-flow.0: 1000 control-flow.3: 1000 control-flow.5: 1000 write-expressions.0: 1000 |
✅ |
5 | js-practice-while-loops | codewars | 👶 introduction | control-flow.0: 1000 control-flow.4: 1000 control-flow.5: 1000 write-expressions.0: 1000 |
✅ |
Game:
4. functions-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | declaring-functions | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
2 | function-arguments | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | access-a-function-s-arguments-as-an-array | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | functions-can-be-declared-after-use | ✅ | 👶 introduction 💪 workout |
functions.8: 10 | ✅ | ✅ | ❌ | ✅ |
5 | setting-default-values-with-short-circuiting | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-glitch-functions | glitch | 👶 introduction 💪 workout |
data-types-structures.3: 1000 data-types-structures.4: 1000 evaluate-expressions.6: 1000 standard-library.4: 1000 |
✅ |
2 | js-practice-functions | codewars | 👶 introduction 💪 workout |
data-types-structures.0: 1000 data-types-structures.1: 1000 write-expressions.0: 1000 evaluate-expressions.0: 1000 |
✅ |
Game:
5. js-history
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | javascript-history | ✅ | 👶 introduction 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | javascript-or-ecmascript | ✅ | 👶 introduction 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | infix-operators-are-left-associative | ✅ | 🔮 obscura | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | strict-mode | ✅ | 👶 introduction 🔮 obscura |
javascript-syntax.2: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
6. arrays
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | arrays | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
2 | setting-the-length-of-an-array | ✅ | 👶 introduction 💪 workout 🔮 obscura |
data-types-structures.3: 10 data-types-structures.4: 10 |
✅ | ✅ | ❌ | ✅ |
3 | splice | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | arrays-can-be-used-as-stack | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-glitch-array | glitch | 👶 introduction 💪 workout |
data-types-structures.3: 1000 data-types-structures.4: 1000 evaluate-expressions.6: 1000 |
✅ |
2 | js-practice-glitch-array-access | glitch | 👶 introduction 💪 workout |
data-types-structures.3: 1000 data-types-structures.4: 1000 evaluate-expressions.6: 1000 |
✅ |
3 | js-practice-glitch-array-for-loop | glitch | 👶 introduction 💪 workout |
data-types-structures.3: 1000 data-types-structures.4: 1000 evaluate-expressions.6: 1000 control-flow.3: 1000 |
✅ |
4 | js-practice-arrays | glitch | 👶 introduction 💪 workout |
evaluate-expressions.6: 1000 evaluate-expressions.7: 1000 data-types-structures.2: 1000 data-types-structures.3: 5000 data-types-structures.4: 5000 data-types-structures.6: 3000 write-expressions.0: 5000 |
✅ |
5 | js-practice-array-isarray | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 evaluate-expressions.10: 1000 |
✅ |
6 | js-practice-array-push | codewars | 👶 introduction 💪 workout |
evaluate-expressions.6: 1000 evaluate-expressions.7: 1000 standard-library.4: 1000 write-expressions.0: 1000 |
✅ |
7 | js-practice-array-splice | codewars | 👶 introduction 💪 workout |
evaluate-expressions.6: 1000 evaluate-expressions.7: 1000 standard-library.4: 1000 write-expressions.0: 1000 |
✅ |
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
foo-features-and-fun-facts | fillTheGap | 👶 introduction 💪 workout |
evaluate-expressions.1: 1000 evaluate-expressions.3: 1000 evaluate-expressions.5: 1000 evaluate-expressions.7: 1000 evaluate-expressions.8: 1000 evaluate-expressions.9: 1000 |
✅ |
7. objects
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | object-part-1 | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | object-part-2 | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | deleting-properties | ✅ | 👶 introduction | data-types-structures.3: 10 data-types-structures.4: 10 evaluate-expressions.6: 10 evaluate-expressions.7: 10 |
✅ | ✅ | ❌ | ✅ |
4 | hasownproperty-method | ✅ | 👶 introduction | data-types-structures.3: 10 data-types-structures.4: 10 evaluate-expressions.6: 10 evaluate-expressions.7: 10 |
✅ | ✅ | ❌ | ✅ |
5 | converting-to-and-from-json | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-objects | codewars | 👶 introduction 💪 workout |
data-types-structures.2: 1000 data-types-structures.3: 1000 data-types-structures.4: 1000 write-expressions.0: 1000 evaluate-expressions.6: 10 evaluate-expressions.7: 10 |
✅ |
Game:
8. types-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | truthy-falsy | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | truthy-falsy-gotchas | ✅ | 👶 introduction 💪 workout |
javascript-syntax.2: 10 evaluate-expressions.3: 10 evaluate-expressions.10: 10 evaluate-expressions.5: 10 evaluate-expressions.4: 10 |
✅ | ✅ | ❌ | ✅ |
3 | be-careful-when-using-typeof | ✅ | 👶 introduction 💪 workout |
evaluate-expressions.10: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
you-can-t-handle-the-truth | tetris | 👶 introduction 💪 workout |
javascript-syntax.2: 1000 evaluate-expressions.3: 1000 evaluate-expressions.5: 1000 evaluate-expressions.4: 1000 evaluate-expressions.10: 1000 |
✅ |
9. strings
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | double-and-single-quotes | ✅ | 🔮 obscura 👶 introduction |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | types-string | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
3 | string-replace | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-glitch-length | glitch | ❌ | javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.2: 1000 standard-library.0: 1000 |
❌ |
2 | js-practice-glitch-log-variable | glitch | ❌ | javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.2: 1000 |
❌ |
3 | js-practice-glitch-strings | glitch | ❌ | javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.2: 1000 standard-library.0: 1000 |
❌ |
4 | js-practice-strings-2 | glitch | ❌ | javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.2: 1000 standard-library.0: 1000 |
❌ |
5 | js-practice-string-methods-replace | glitch | ❌ | standard-library.0: 1000 javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 |
❌ |
6 | js-practice-double-and-single-quotes | glitch | ❌ | javascript-syntax.1: 1000 javascript-syntax.2: 1000 write-expressions.0: 1000 evaluate-expressions.2: 1000 |
❌ |
Game:
10. strings-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | multi-line-string-variables | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | most-efficient-way-to-build-html-strings | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | using-test-with-regexp | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-string-slice | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
2 | js-practice-string-indexof | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
3 | js-practice-string-concat | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
4 | js-practice-string-touppercase | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
5 | js-practice-string-charat | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
6 | js-practice-string-trim | codewars | 👶 introduction 💪 workout |
standard-library.0: 1000 write-expressions.0: 1000 |
✅ |
Game:
11. numbers
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | base-conversion | ✅ | 👶 introduction 💪 workout 🔮 obscura |
data-types-structures.0: 10 standard-library.2: 10 |
✅ | ✅ | ❌ | ✅ |
2 | inaccuracy-of-binary-floating-point-format | ✅ | 💪 workout 🦑 deep 🔮 obscura |
data-types-structures.0: 10 standard-library.2: 10 evaluate-expressions.1: 10 |
✅ | ✅ | ✅ | ✅ |
3 | parsing-numbers-and-ieee-754 | ✅ | 💪 workout 🦑 deep 🔮 obscura |
data-types-structures.0: 10 standard-library.2: 10 evaluate-expressions.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | nan-is-a-number | ✅ | 👶 introduction 🦑 deep 🔮 obscura |
evaluate-expressions.1: 10 | ✅ | ✅ | ✅ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-number-tostring | glitch | 👶 introduction 💪 workout |
standard-library.1: 1000 standard-library.2: 1000 write-expressions.0: 1000 evaluate-expressions.0: 1000 |
✅ |
2 | js-practice-math-max | codewars | 👶 introduction 💪 workout |
standard-library.1: 1000 write-expressions.0: 1000 |
✅ |
3 | js-practice-math-pow | codewars | 👶 introduction 💪 workout |
standard-library.1: 1000 write-expressions.0: 1000 |
✅ |
4 | js-practice-math-log | codewars | 👶 introduction 💪 workout |
standard-library.1: 1000 write-expressions.0: 1000 |
✅ |
5 | js-practice-math-random | codewars | 👶 introduction 💪 workout |
standard-library.1: 1000 write-expressions.0: 1000 |
✅ |
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
infinity-game | fillTheGap | 👶 introduction 💪 workout |
data-types-structures.0: 1000 standard-library.2: 1000 evaluate-expressions.1: 1000 |
✅ |
12. array-methods
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | get-a-random-item-from-an-array | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | apply-map-function-to-array-items | ✅ | 👶 introduction 💪 workout 🦑 deep |
data-types-structures.2: 10 data-types-structures.3: 10 data-types-structures.6: 10 functions.4: 10 |
✅ | ✅ | ❌ | ✅ |
3 | filtering-items-out-of-an-array | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | how-to-merge-two-arrays | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
5 | shuffle-an-array-using-sort-and-random | ✅ | 👶 introduction 💪 workout |
data-types-structures.2: 10 data-types-structures.3: 10 data-types-structures.6: 10 standard-library.1: 10 standard-library.4: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-glitch-array-filter | glitch | 👶 introduction 💪 workout |
data-types-structures.3: 1000 data-types-structures.4: 1000 data-types-structures.6: 1000 evaluate-expressions.6: 1000 standard-library.4: 1000 |
✅ |
2 | js-practice-sort-i | codewars | 👶 introduction 💪 workout |
functions.0: 1000 functions.1: 1000 functions.3: 1000 data-types-structures.4: 1000 |
✅ |
3 | js-practice-sort-ii | codewars | 👶 introduction 💪 workout |
data-types-structures.4: 1000 functions.0: 1000 functions.1: 1000 functions.3: 1000 |
✅ |
4 | js-practice-array-every | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 data-types-structures.6: 1000 |
✅ |
5 | js-practice-array-reverse | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 data-types-structures.6: 1000 |
✅ |
6 | js-practice-array-map | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 data-types-structures.6: 1000 |
✅ |
7 | js-practice-array-filter | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 data-types-structures.6: 1000 |
✅ |
8 | js-practice-array-concat | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 |
✅ |
9 | js-practice-array-reduce | codewars | 👶 introduction 💪 workout |
standard-library.4: 1000 write-expressions.0: 1000 data-types-structures.6: 1000 |
✅ |
Game:
13. functions-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | functions-return-undefined-by-default | ✅ | 👶 introduction 💪 workout |
functions.1: 10 | ✅ | ✅ | ❌ | ✅ |
2 | check-if-a-function-exists | ✅ | 👶 introduction 💪 workout |
evaluate-expressions.9: 10 functions.8: 10 control-flow.5: 10 control-flow.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | function-constructor-vs-function-expression | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | anonymous-functions | ✅ | 👶 introduction 💪 workout |
functions.4: 10 functions.8: 10 |
✅ | ✅ | ❌ | ✅ |
5 | iife-pattern | ✅ | 👶 introduction 🦑 deep 💪 workout |
functions.4: 10 functions.5: 10 functions.6: 10 functions.7: 10 |
✅ | ✅ | ❌ | ✅ |
6 | functions-are-objects | ✅ | 👶 introduction 💪 workout 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-this | codewars | 👶 introduction 💪 workout |
execution-context.2: 1000 execution-context.3: 1000 execution-context.4: 1000 |
✅ |
2 | js-practice-default-parameters | codewars | 👶 introduction 💪 workout |
functions.0: 1000 functions.1: 1000 functions.2: 1000 functions.3: 1000 |
✅ |
Game:
14. scope
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | hoisting | ✅ | 👶 introduction 💪 workout |
functions.5: 10 | ✅ | ✅ | ❌ | ✅ |
2 | hoisting-applies-only-to-variable-declarations-not-initializations | ✅ | 💪 workout 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | no-block-scope | ✅ | 💪 workout 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | scope-and-strict-mode | ✅ | 💪 workout 🦑 deep 🔮 obscura |
functions.5: 10 | ✅ | ✅ | ❌ | ✅ |
5 | closures | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-hoisting | codewars | 👶 introduction 💪 workout |
❌ | ❌ |
2 | js-practice-closures | codewars | 👶 introduction 💪 workout |
functions.0: 1000 functions.1: 1000 functions.3: 1000 functions.4: 1000 functions.6: 1000 |
✅ |
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
think-you-know-javascript | fillTheGap | 👶 introduction 💪 workout |
functions.5: 1000 | ✅ |
15. errors
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | exceptions | ✅ | 👶 introduction 💪 workout |
control-flow.6: 10 exceptions.2: 10 exceptions.3: 10 |
✅ | ✅ | ❌ | ✅ |
2 | debugging | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | detect-an-error-type | ✅ | 👶 introduction 💪 workout |
exceptions.0: 10 exceptions.1: 10 exceptions.2: 10 |
✅ | ✅ | ❌ | ✅ |
4 | catch-is-block-scoped | ✅ | 💪 workout 🦑 deep 🔮 obscura |
exceptions.2: 10 | ✅ | ✅ | ❌ | ✅ |
5 | online-debugging-options | ✅ | 👶 introduction 🔮 obscura |
❌ | ✅ | ❌ | ❌ | ❌ |
Exercises:
Game:
16. functions-iii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | context-in-javascript | ✅ | 🦑 deep 👶 introduction 💪 workout |
execution-context.4: 10 execution-context.3: 10 |
✅ | ✅ | ❌ | ✅ |
2 | changing-a-functions-context-with-fn-call-object | ✅ | 🦑 deep 💪 workout |
functions.1: 10 execution-context.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | function-call-method | ✅ | 🦑 deep 💪 workout |
functions.1: 10 execution-context.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | difference-between-call-and-apply-methods | ✅ | 🔮 obscura 🦑 deep 💪 workout |
functions.1: 10 execution-context.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | bind | ✅ | 🦑 deep 💪 workout |
functions.5: 10 execution-context.0: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-bind | codewars | ❌ | execution-context.0: 1000 | ❌ |
2 | js-practice-call | codewars | ❌ | execution-context.1: 1000 | ❌ |
Game:
17. recipes-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | format-currency-in-javascript | ✅ | 👶 introduction 💪 workout |
write-expressions.0: 10 evaluate-expressions.3: 10 standard-library.1: 10 |
✅ | ✅ | ❌ | ✅ |
2 | easily-generate-a-random-hex-color | ✅ | 💪 workout 🦑 deep 🔮 obscura |
write-expressions.0: 10 evaluate-expressions.3: 10 standard-library.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | round-numbers-to-n-decimals | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | using-the-double-tilde | ✅ | 👶 introduction 💪 workout |
write-expressions.0: 10 evaluate-expressions.3: 10 data-types-structures.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | quick-way-to-format-integers-with-a-fixed-number-of-digits | ✅ | 👶 introduction 💪 workout 🔮 obscura |
write-expressions.0: 10 evaluate-expressions.3: 10 standard-library.1: 10 data-types-structures.3: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-number-tostring | codewars | 👶 introduction 💪 workout |
standard-library.2: 1000 write-expressions.0: 1000 |
✅ |
2 | js-practice-number-tofixed | codewars | 👶 introduction 💪 workout |
standard-library.2: 1000 write-expressions.0: 1000 |
✅ |
3 | js-practice-math-round | codewars | 👶 introduction | standard-library.1: 1000 write-expressions.0: 1000 |
✅ |
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
using-the-double-tilde-game | fillTheGap | 👶 introduction 💪 workout |
write-expressions.0: 1000 evaluate-expressions.3: 1000 data-types-structures.1: 1000 |
✅ |
18. in-depth-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | method-chaining | ✅ | 👶 introduction 💪 workout |
functions.1: 10 functions.6: 10 execution-context.2: 10 |
✅ | ✅ | ❌ | ✅ |
2 | javascript-compilation | ✅ | 🦑 deep 💪 workout 🔮 obscura |
functions.1: 10 functions.5: 10 functions.6: 10 execution-context.4: 10 |
✅ | ✅ | ❌ | ✅ |
3 | prototype-methods | ✅ | 👶 introduction 💪 workout 🦑 deep |
prototype-inherit.0: 10 | ✅ | ✅ | ❌ | ✅ |
4 | meaning-of-polyfill | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | using-eval | ✅ | 🔮 obscura 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
19. recipes-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | milliseconds-since-epoch | ✅ | 👶 introduction 💪 workout |
standard-library.5: 10 | ✅ | ✅ | ❌ | ✅ |
2 | counting-the-months-from-zero | ✅ | 👶 introduction 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ✅ | ❌ |
3 | performing-a-function-at-timed-intervals | ✅ | 💪 workout 👶 introduction 🦑 deep |
async.0: 10 | ✅ | ✅ | ❌ | ✅ |
4 | avoid-using-with | ✅ | 💪 workout 🔮 obscura |
javascript-syntax.0: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-date | codewars | 👶 introduction 💪 workout |
standard-library.5: 1000 write-expressions.0: 1000 |
✅ |
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ✅ Identify JavaScript control structures
- ❌ Identify JavaScript statements
- ✅ Evaluate the validity of JavaScript syntax
- ✅ Identify primitive types in JavaScript
- ✅ Use primitive operators to operate on primitive types
- ✅ Identify data structures in JavaScript
- ✅ Use built-in data structures in JavaScript
- ✅ Perform primitive operations on data structures in JavaScript
- ❌ Access deeply nested data structures
- ✅ Functionally iterate over a data structure
- ✅ Write simple expressions in JavaScript using each data type
- ❌ Compose simple expressions into complex expressions
- ❌ Decompose complex expressions into simple expressions
- ❌ Accurately predict the return value of simple numeric JavaScript expressions
- ✅ Accurately predict the return value of complex numeric JavaScript expressions
- ❌ Accurately predict the return value of simple string JavaScript expressions
- ✅ Accurately predict the return value of complex string JavaScript expressions
- ✅ Accurately predict the return value of simple boolean JavaScript expressions
- ✅ Accurately predict the return value of complex boolean JavaScript expressions
- ✅ Accurately predict the result of simple JavaScript expressions operating on a data structure
- ✅ Accurately predict the result of complex JavaScript expressions operating on a data structure
- ❌ Accurately predict the result of complex data structure access operations
- ✅ Accurately predict the return value of function or constructor
- ✅ Accurately predict the type of a given expression
- ❌ Make a decision about which control flow structure to use in order to execute statements in the correct logical sequence
- ✅ Demonstrate the use of if statements
- ❌ Demonstrate the use of switch statements
- ❌ Demonstrate the use of for, for of, for in loops
- ❌ Demonstrate the use of while loops
- ✅ Demonstrate the use of creating and calling functions
- ✅ Demonstrate the use of using a try..catch block to handle exceptions programmatically
- ❌ Write a function
- ✅ Write a parameterized function
- ❌ Write a parameterized function with defaults
- ❌ Write a named function
- ✅ Write an anonymous function
- ✅ Recognize the rules of variable scope with respect to functions
- ✅ Use variable scope to effectively encapsulate code by function
- ✅ Use variable scope to effectively constrain the memory use of a parameterized function
- ✅ Distinguish between function expressions and named functions
- ❌ Perform common string manipulation tasks
- ✅ Perform math operations, use the Math built-in library
- ✅ Accurately perform type-casting operations
- ❌ Use Console methods to output data
- ✅ Perform collection manipulation with Array methods (map, filter, reduce, etc)
- ✅ Perform Date manipulation operations, use the Date built-in library
- ✅ Use callbacks to asynchronously execute code
- ❌ Explain the event loop in JavaScript
- ❌ Use Promises to perform sequential asynchronous operations
- ❌ Use async and await to create asynchronously resolving generator functions
- ✅ Use bind to produce a bound function
- ✅ Use call and apply to call a function with an explicit this value
- ✅ Use this to store properties on an execution context
- ✅ Use this to modify an instance's properties
- ✅ Identify what the value of this is given a line in a code snippet
- ❌ Use a constructor function and the execution context of that function to produce an instance with particular properties
- ❌ Use the prototype of the constructor function to set methods on instances produced by the constructor function
- ❌ Modify the instance using a prototype method
- ✅ Set the prototype of a constructor function to inherit methods from another object
- ❌ Modify an instance using an inherited prototype's method
- ✅ Distinguish JavaScript error types
- ✅ Identify the type of exception thrown from a JavaScript stack trace
- ✅ Use a try..catch block to handle an exception
- ✅ Create and throw a custom error type
- ❌ Use the debugger statement with a JavaScript debugger
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:
- why-learn-javascript
- javascript-basics-part-1
- javascript-basics-part-2
- console-in-javascript
- types-introduction
- weak-vs-strict-equality-operator
- types-undefined-and-null
- types-boolean-and-number
- the-difference-between-null-undefined-and-nan
- if-statement
- js-switch-statement
- loops-part-1
- loops-part-2
- data-type-comparison-in-switch-statements
- declaring-functions
- function-arguments
- access-a-function-s-arguments-as-an-array
- functions-can-be-declared-after-use
- setting-default-values-with-short-circuiting
- javascript-history
- javascript-or-ecmascript
- strict-mode
- arrays
- setting-the-length-of-an-array
- splice
- arrays-can-be-used-as-stack
- object-part-1
- object-part-2
- deleting-properties
- hasownproperty-method
- converting-to-and-from-json
- truthy-falsy
- truthy-falsy-gotchas
- be-careful-when-using-typeof
- double-and-single-quotes
- types-string
- string-replace
- multi-line-string-variables
- most-efficient-way-to-build-html-strings
- using-test-with-regexp
- base-conversion
- nan-is-a-number
- get-a-random-item-from-an-array
- apply-map-function-to-array-items
- filtering-items-out-of-an-array
- how-to-merge-two-arrays
- shuffle-an-array-using-sort-and-random
- functions-return-undefined-by-default
- check-if-a-function-exists
- function-constructor-vs-function-expression
- anonymous-functions
- iife-pattern
- functions-are-objects
- hoisting
- closures
- exceptions
- debugging
- detect-an-error-type
- online-debugging-options
- context-in-javascript
- format-currency-in-javascript
- round-numbers-to-n-decimals
- using-the-double-tilde
- quick-way-to-format-integers-with-a-fixed-number-of-digits
- method-chaining
- prototype-methods
- milliseconds-since-epoch
- counting-the-months-from-zero
- performing-a-function-at-timed-intervals
Exercises:
- js-practice-glitch-if
- js-practice-if-else
- js-practice-switch-case
- js-practice-for-loops
- js-practice-while-loops
- js-practice-glitch-functions
- js-practice-functions
- js-practice-glitch-array
- js-practice-glitch-array-access
- js-practice-glitch-array-for-loop
- js-practice-arrays
- js-practice-array-isarray
- js-practice-array-push
- js-practice-array-splice
- js-practice-objects
- js-practice-string-slice
- js-practice-string-indexof
- js-practice-string-concat
- js-practice-string-touppercase
- js-practice-string-charat
- js-practice-string-trim
- js-practice-number-tostring
- js-practice-math-max
- js-practice-math-pow
- js-practice-math-log
- js-practice-math-random
- js-practice-glitch-array-filter
- js-practice-sort-i
- js-practice-sort-ii
- js-practice-array-every
- js-practice-array-reverse
- js-practice-array-map
- js-practice-array-filter
- js-practice-array-concat
- js-practice-array-reduce
- js-practice-this
- js-practice-default-parameters
- js-practice-hoisting
- js-practice-closures
- js-practice-number-tostring
- js-practice-number-tofixed
- js-practice-math-round
- js-practice-date
Games:
- foo-features-and-fun-facts
- you-can-t-handle-the-truth
- infinity-game
- think-you-know-javascript
- using-the-double-tilde-game
Theory put into practice/that’s how you achieve X points
Insights:
- weak-vs-strict-equality-operator
- types-undefined-and-null
- types-boolean-and-number
- the-difference-between-null-undefined-and-nan
- loops-part-2
- data-type-comparison-in-switch-statements
- function-arguments
- access-a-function-s-arguments-as-an-array
- functions-can-be-declared-after-use
- setting-default-values-with-short-circuiting
- arrays
- setting-the-length-of-an-array
- splice
- arrays-can-be-used-as-stack
- object-part-1
- object-part-2
- converting-to-and-from-json
- truthy-falsy
- truthy-falsy-gotchas
- be-careful-when-using-typeof
- string-replace
- multi-line-string-variables
- most-efficient-way-to-build-html-strings
- using-test-with-regexp
- base-conversion
- inaccuracy-of-binary-floating-point-format
- parsing-numbers-and-ieee-754
- get-a-random-item-from-an-array
- apply-map-function-to-array-items
- filtering-items-out-of-an-array
- how-to-merge-two-arrays
- shuffle-an-array-using-sort-and-random
- functions-return-undefined-by-default
- check-if-a-function-exists
- anonymous-functions
- iife-pattern
- functions-are-objects
- hoisting
- hoisting-applies-only-to-variable-declarations-not-initializations
- no-block-scope
- scope-and-strict-mode
- closures
- exceptions
- debugging
- detect-an-error-type
- catch-is-block-scoped
- context-in-javascript
- changing-a-functions-context-with-fn-call-object
- function-call-method
- difference-between-call-and-apply-methods
- bind
- format-currency-in-javascript
- easily-generate-a-random-hex-color
- round-numbers-to-n-decimals
- using-the-double-tilde
- quick-way-to-format-integers-with-a-fixed-number-of-digits
- method-chaining
- javascript-compilation
- prototype-methods
- meaning-of-polyfill
- using-eval
- milliseconds-since-epoch
- counting-the-months-from-zero
- performing-a-function-at-timed-intervals
- avoid-using-with
Exercises:
- js-practice-if-else
- js-practice-glitch-functions
- js-practice-functions
- js-practice-glitch-array
- js-practice-glitch-array-access
- js-practice-glitch-array-for-loop
- js-practice-arrays
- js-practice-array-isarray
- js-practice-array-push
- js-practice-array-splice
- js-practice-objects
- js-practice-string-slice
- js-practice-string-indexof
- js-practice-string-concat
- js-practice-string-touppercase
- js-practice-string-charat
- js-practice-string-trim
- js-practice-number-tostring
- js-practice-math-max
- js-practice-math-pow
- js-practice-math-log
- js-practice-math-random
- js-practice-glitch-array-filter
- js-practice-sort-i
- js-practice-sort-ii
- js-practice-array-every
- js-practice-array-reverse
- js-practice-array-map
- js-practice-array-filter
- js-practice-array-concat
- js-practice-array-reduce
- js-practice-this
- js-practice-default-parameters
- js-practice-hoisting
- js-practice-closures
- js-practice-number-tostring
- js-practice-number-tofixed
- js-practice-date
Games:
- taking-precedence
- foo-features-and-fun-facts
- you-can-t-handle-the-truth
- infinity-game
- think-you-know-javascript
- using-the-double-tilde-game
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- inaccuracy-of-binary-floating-point-format
- parsing-numbers-and-ieee-754
- nan-is-a-number
- apply-map-function-to-array-items
- iife-pattern
- functions-are-objects
- hoisting-applies-only-to-variable-declarations-not-initializations
- no-block-scope
- scope-and-strict-mode
- catch-is-block-scoped
- context-in-javascript
- changing-a-functions-context-with-fn-call-object
- function-call-method
- difference-between-call-and-apply-methods
- bind
- easily-generate-a-random-hex-color
- javascript-compilation
- prototype-methods
- meaning-of-polyfill
- performing-a-function-at-timed-intervals
Recently added/gained traction feature
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
- weak-vs-strict-equality-operator
- types-undefined-and-null
- types-boolean-and-number
- the-difference-between-null-undefined-and-nan
- javascript-history
- javascript-or-ecmascript
- infix-operators-are-left-associative
- strict-mode
- setting-the-length-of-an-array
- splice
- double-and-single-quotes
- most-efficient-way-to-build-html-strings
- base-conversion
- inaccuracy-of-binary-floating-point-format
- parsing-numbers-and-ieee-754
- nan-is-a-number
- functions-are-objects
- hoisting-applies-only-to-variable-declarations-not-initializations
- no-block-scope
- scope-and-strict-mode
- debugging
- catch-is-block-scoped
- online-debugging-options
- difference-between-call-and-apply-methods
- easily-generate-a-random-hex-color
- quick-way-to-format-integers-with-a-fixed-number-of-digits
- javascript-compilation
- using-eval
- counting-the-months-from-zero
- avoid-using-with
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: