{"stages":[{"number":1,"slug":"stage-01-straight-line-code","title":"Reading Straight-Line Code","one_new_move":"follow a program one line at a time, and say for each line which names exist afterward and what they point at.","item_count":22,"exercise_count":16,"checkpoint_count":6,"xp_available":740,"file":"stages/stage-01.json"},{"number":2,"slug":"stage-02-change-vs-replace","title":"Changing a Thing vs. Replacing a Name","one_new_move":"decide, for each line, whether it *changed an object* or *moved a name*. These look alike on the page and are completely different events.","item_count":23,"exercise_count":17,"checkpoint_count":6,"xp_available":941,"file":"stages/stage-02.json"},{"number":3,"slug":"stage-03-structured-access","title":"Reading Brackets and Keys Precisely","one_new_move":"read an access expression exactly \u2014 which container, which position or key, and whether the line is *reading out of* it or *writing into* it.","item_count":24,"exercise_count":18,"checkpoint_count":6,"xp_available":1027,"file":"stages/stage-03.json"},{"number":4,"slug":"stage-04-sharing-and-copies","title":"Sharing, Shallow Copies, and Deep Copies","one_new_move":"track the outer object and the inner objects as *separate* things, and say for any copy exactly which level was duplicated.","item_count":24,"exercise_count":18,"checkpoint_count":6,"xp_available":1192,"file":"stages/stage-04.json"},{"number":5,"slug":"stage-05-following-one-block","title":"Following One Block","one_new_move":"decide which lines run repeatedly, which run once afterward, and what each name points at on every pass.","item_count":25,"exercise_count":19,"checkpoint_count":6,"xp_available":1296,"file":"stages/stage-05.json"},{"number":6,"slug":"stage-06-iterating-collections","title":"Iterating Different Collections","one_new_move":"for any collection, say what a `for` loop hands you on each pass, in what order, and how many times it can be walked.","item_count":26,"exercise_count":20,"checkpoint_count":6,"xp_available":1538,"file":"stages/stage-06.json"},{"number":7,"slug":"stage-07-nested-structure","title":"Following Nested Structure","one_new_move":"at any line, say which indentation level is active \u2014 which loop that line belongs to, and therefore how many times it runs.","item_count":25,"exercise_count":19,"checkpoint_count":6,"xp_available":1558,"file":"stages/stage-07.json"},{"number":8,"slug":"stage-08-function-boundary","title":"Crossing a Function Boundary","one_new_move":"follow execution into a call and back out, tracking which names are local, which objects are shared with the caller, and what the return hands back.","item_count":27,"exercise_count":21,"checkpoint_count":6,"xp_available":1699,"file":"stages/stage-08.json"},{"number":9,"slug":"stage-09-integration-capstone","title":"Integration and Capstone","one_new_move":"none. Every construct is now on the table. This stage asks you to use them together on programs long enough that you cannot hold them in your head \u2014 which is the situation reading real code always is.","item_count":18,"exercise_count":10,"checkpoint_count":0,"xp_available":2420,"file":"stages/stage-09.json"}],"concepts":[{"slug":"a-copy-all-the-way-down","kind":"glossary","plain_phrase":"a copy all the way down","formal_term":"**deep copy**","meaning":"`copy.deepcopy(x)` \u2014 nothing shared at any level","first_met":"4.5","section":"collections-and-access","items":["4.12","4.15","4.17","4.5","4.9","8.12","9.9","9.C8","C4.4"],"forms":["find_and_fix","predict_the_result","state_the_rule","write_a_small_program"],"trackable":true},{"slug":"a-copy-of-the-outer-container-only","kind":"glossary","plain_phrase":"a copy of the outer container only","formal_term":"**shallow copy**","meaning":"`xs[:]`, `list(xs)`, `dict(d)`, `copy.copy(x)` \u2014 inner objects stay shared","first_met":"4.2","section":"collections-and-access","items":["3.18","4.10","4.11","4.16","4.2","4.3","4.4","9.2"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","predict_the_result"],"trackable":true},{"slug":"a-function-recipe","kind":"glossary","plain_phrase":"a function recipe","formal_term":"a **function definition**","meaning":"`def` builds a function object and binds a name to it","first_met":"8.1","section":"functions","items":["2.7","3.12","4.12","5.16","6.10","6.18","6.2","8.1","8.11","8.12","8.13","8.15","8.16","8.17","8.18","8.19","8.21","8.3","8.8","9.1","9.10","9.3","9.4","9.7","9.C3","9.C5","9.C6","9.C7","9.C8","C4.4","C8.3","C8.4","C8.5"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","mark_the_block","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"a-name-pointing-at-an-object","kind":"glossary","plain_phrase":"a name pointing at an object","formal_term":"a **binding**","meaning":"the name is a label attached to an object, not a box holding a value","first_met":"1.1","section":"names-and-objects","items":["1.1","1.10","1.11","1.12","1.16","1.2","1.3","1.4","1.5","1.7","1.8","1.9","2.10","2.13","2.5","3.10","3.13","3.15","3.16","3.17","3.2","3.3","3.5","4.1","4.15","4.3","4.4","4.7","5.10","5.15","5.16","5.19","5.3","5.5","5.8","5.9","6.17","6.4","6.8","7.11","7.12","7.13","7.2","7.3","7.4","7.5","7.6","7.8","7.9","8.1","8.10","8.13","8.18","8.21","8.4","8.5","8.6","8.8","8.9","9.1","9.5","9.9","9.C2","9.C3","C1.1","C1.3","C1.4","C1.5","C3.1","C3.6","C4.5","C5.2","C6.1","C8.1","C8.3","C8.6"],"forms":["build_a_trace_table","compare_near_matches","draw_names_and_objects","find_and_fix","label_the_code","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"a-one-pass-position-marker-over-an-iterable","kind":"glossary","plain_phrase":"a one-pass position marker over an iterable","formal_term":"an **iterator**","meaning":"what `for` makes for you invisibly; `next()` advances it","first_met":"6.19","section":"iteration","items":["6.19","6.20"],"forms":["predict_the_result","state_the_rule"],"trackable":true},{"slug":"a-recipe-that-produces-values-on-demand","kind":"glossary","plain_phrase":"a recipe that produces values on demand","formal_term":"a **generator**","meaning":"holds no items; one pass only","first_met":"6.6","section":"iteration","items":["6.14","6.19","6.20","6.6","6.7","6.8","C6.3"],"forms":["compare_near_matches","find_and_fix","predict_the_result","state_the_rule"],"trackable":true},{"slug":"a-stand-in-default-meaning-nothing-was-given","kind":"glossary","plain_phrase":"a stand-in default meaning \"nothing was given\"","formal_term":"a **sentinel**","meaning":"usually `None`, because it cannot be changed","first_met":"8.17","section":"functions","items":["8.16","8.17","8.19","8.21","9.3","9.7","9.C6","9.C7"],"forms":["find_and_fix","predict_the_result","predict_then_diagnose","state_the_rule","write_a_small_program"],"trackable":true},{"slug":"an-inner-name-hiding-an-outer-one-of-the-same-spelling","kind":"glossary","plain_phrase":"an inner name hiding an outer one of the same spelling","formal_term":"**shadowing**","meaning":"they are different names; assigning to one does not touch the other","first_met":"8.9","section":"functions","items":["8.9"],"forms":["predict_the_result"],"trackable":false},{"slug":"anything-a-for-loop-can-walk","kind":"glossary","plain_phrase":"anything a `for` loop can walk","formal_term":"an **iterable**","meaning":"list, tuple, string, range, dict, set, file, generator","first_met":"6.1","section":"iteration","items":["6.1","6.10","6.13","6.20","6.4","6.5","7.14","7.19","C6.4","C6.6"],"forms":["find_and_fix","label_the_code","predict_the_result","state_the_rule"],"trackable":true},{"slug":"building-a-list-in-one-expression","kind":"glossary","plain_phrase":"building a list in one expression","formal_term":"a **list comprehension**","meaning":"`[expr for x in it if cond]`; produces a new object","first_met":"6.14","section":"iteration","items":["5.9","6.14","6.15","6.16","6.17","6.18","6.20","7.12","7.17","9.10","9.8","9.C7","C6.5","C7.4","C7.6"],"forms":["compare_near_matches","find_and_fix","predict_the_result","state_the_rule","write_a_small_program"],"trackable":true},{"slug":"changeable","kind":"glossary","plain_phrase":"changeable","formal_term":"**mutable**","meaning":"list, dictionary, set \u2014 can be altered while every name stays put","first_met":"2.1","section":"names-and-objects","items":["2.1","2.10","2.15","2.7","4.15","4.8","8.12","8.16","9.10","9.9","9.C6","9.C8","C2.4"],"forms":["compare_near_matches","find_and_fix","label_the_code","predict_the_result","predict_then_diagnose","write_a_small_program"],"trackable":true},{"slug":"changing-the-object","kind":"glossary","plain_phrase":"changing the object","formal_term":"**mutation**","meaning":"e.g. `.append()`, `xs[0] = 1`, `d[k] = v` \u2014 no name moves","first_met":"2.2","section":"names-and-objects","items":["1.6","2.1","2.10","2.13","2.14","2.17","2.2","2.4","2.5","2.6","3.15","4.10","4.15","4.2","4.3","5.12","5.13","5.14","5.15","5.17","5.19","5.8","6.17","7.12","7.13","7.14","7.8","7.9","8.11","8.12","8.16","8.17","8.5","8.6","8.7","9.1","9.10","9.2","9.4","9.5","9.8","9.9","9.C1","9.C2","9.C7","C2.1","C2.2","C2.4","C3.2","C4.1","C4.5","C5.5","C8.1","C8.4"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","label_the_code","mark_the_block","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"giving-a-name-a-new-object","kind":"glossary","plain_phrase":"giving a name a new object","formal_term":"**rebinding**","meaning":"the label moves; nothing about the old object changes","first_met":"1.2","section":"names-and-objects","items":["1.10","1.14","1.15","1.2","1.4","1.5","1.7","1.8","2.13","2.15","2.6","2.7","2.8","2.9","3.1","3.17","5.1","5.12","5.14","5.15","5.17","5.19","5.2","5.6","5.7","5.8","5.9","6.17","7.15","7.4","7.8","7.9","8.21","8.4","8.6","8.7","9.5","9.6","9.C4","C2.6","C3.1","C5.3","C6.6","C8.3"],"forms":["build_a_trace_table","compare_near_matches","draw_names_and_objects","find_and_fix","label_the_code","mark_the_block","predict_the_result","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"indented-lines-belonging-together","kind":"glossary","plain_phrase":"indented lines belonging together","formal_term":"a **block**","meaning":"membership is decided by indentation alone","first_met":"5.1","section":"blocks-and-flow","items":["5.1","5.19","5.4","6.4","7.1","7.13","7.19","7.3","8.15","8.3","9.C1"],"forms":["compare_near_matches","find_and_fix","label_the_code","mark_the_block","state_the_rule"],"trackable":true},{"slug":"local-names-in-the-recipe","kind":"glossary","plain_phrase":"local names in the recipe","formal_term":"**parameters**","meaning":"bound in a fresh set of names for each call","first_met":"8.4","section":"functions","items":["8.13","8.21","8.4","8.6","9.3","9.5","C8.1","C8.3","C8.6"],"forms":["compare_near_matches","find_and_fix","predict_the_result","state_the_rule"],"trackable":true},{"slug":"may-be-used-as-a-dictionary-key-or-set-item","kind":"glossary","plain_phrase":"may be used as a dictionary key or set item","formal_term":"**hashable**","meaning":"the object can be filed by what it looks like and will not change afterward","first_met":"3.9","section":"collections-and-access","items":["3.9","6.20","C3.3","C6.6"],"forms":["predict_the_result","state_the_rule"],"trackable":true},{"slug":"mc:a-new-outer-container-means-new-inner-objects","kind":"misconception","plain_phrase":"A new outer container means new inner objects","formal_term":"","meaning":"The exercise set attacks this belief: A new outer container means new inner objects.","first_met":"4.2","section":"misconceptions","items":["4.11","4.16","4.2","4.3","9.2"],"forms":["draw_names_and_objects","predict_the_result"],"trackable":true},{"slug":"mc:assignment-copies-a-value","kind":"misconception","plain_phrase":"Assignment copies a value","formal_term":"","meaning":"The exercise set attacks this belief: Assignment copies a value.","first_met":"1.2","section":"misconceptions","items":["1.16","1.2","2.11","3.18","3.3"],"forms":["compare_near_matches","find_and_fix","predict_the_result","state_the_rule"],"trackable":true},{"slug":"mc:break-ends-all-surrounding-loops","kind":"misconception","plain_phrase":"`break` ends all surrounding loops","formal_term":"","meaning":"The exercise set attacks this belief: `break` ends all surrounding loops.","first_met":"7.6","section":"misconceptions","items":["7.16","7.6","8.15","9.C5"],"forms":["find_and_fix","predict_then_diagnose","what_runs_next"],"trackable":true},{"slug":"mc:def-runs-the-body-immediately","kind":"misconception","plain_phrase":"`def` runs the body immediately","formal_term":"","meaning":"The exercise set attacks this belief: `def` runs the body immediately.","first_met":"8.1","section":"misconceptions","items":["8.1","8.18","8.2"],"forms":["predict_the_result","what_runs_next"],"trackable":true},{"slug":"mc:defaults-are-created-per-call","kind":"misconception","plain_phrase":"Defaults are created per call","formal_term":"","meaning":"The exercise set attacks this belief: Defaults are created per call.","first_met":"8.16","section":"misconceptions","items":["8.16","8.17","9.3","9.C6"],"forms":["find_and_fix","predict_the_result","predict_then_diagnose"],"trackable":true},{"slug":"mc:for-means-only-counting","kind":"misconception","plain_phrase":"`for` means only counting","formal_term":"","meaning":"The exercise set attacks this belief: `for` means only counting.","first_met":"6.1","section":"misconceptions","items":["6.1","6.13","6.2","6.6","6.9"],"forms":["predict_the_result"],"trackable":false},{"slug":"mc:function-parameters-are-copies","kind":"misconception","plain_phrase":"Function parameters are copies","formal_term":"","meaning":"The exercise set attacks this belief: Function parameters are copies.","first_met":"8.4","section":"misconceptions","items":["8.4","8.5","8.6","8.7","C8.3"],"forms":["compare_near_matches","draw_names_and_objects","predict_the_result","state_the_rule"],"trackable":true},{"slug":"mc:immutable-values-cannot-be-shared","kind":"misconception","plain_phrase":"Immutable values cannot be shared","formal_term":"","meaning":"The exercise set attacks this belief: Immutable values cannot be shared.","first_met":"1.6","section":"misconceptions","items":["1.14","1.6","2.6","2.9"],"forms":["predict_the_result"],"trackable":false},{"slug":"mc:indentation-is-cosmetic","kind":"misconception","plain_phrase":"Indentation is cosmetic","formal_term":"","meaning":"The exercise set attacks this belief: Indentation is cosmetic.","first_met":"5.1","section":"misconceptions","items":["5.1","5.4","7.1","7.13","7.3","9.C1"],"forms":["compare_near_matches","mark_the_block"],"trackable":true},{"slug":"mc:makes-independent-inner-lists","kind":"misconception","plain_phrase":"`*` makes independent inner lists","formal_term":"","meaning":"The exercise set attacks this belief: `*` makes independent inner lists.","first_met":"4.6","section":"misconceptions","items":["4.6","4.7","4.9","5.18","6.15","7.18","9.C3"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","predict_the_result"],"trackable":true},{"slug":"mc:methods-that-change-also-return-the-changed-object","kind":"misconception","plain_phrase":"Methods that change also return the changed object","formal_term":"","meaning":"The exercise set attacks this belief: Methods that change also return the changed object.","first_met":"2.5","section":"misconceptions","items":["2.12","2.5","8.20","9.1","9.8"],"forms":["compare_near_matches","find_and_fix","predict_the_result","predict_then_diagnose"],"trackable":true},{"slug":"mc:set-order-is-reliable","kind":"misconception","plain_phrase":"Set order is reliable","formal_term":"","meaning":"The exercise set attacks this belief: Set order is reliable.","first_met":"6.9","section":"misconceptions","items":["6.10","6.9"],"forms":["find_and_fix","predict_the_result"],"trackable":true},{"slug":"nothing-here","kind":"glossary","plain_phrase":"nothing here","formal_term":"**`None`**","meaning":"the object a function hands back when it has nothing to return","first_met":"1.9","section":"names-and-objects","items":["1.1","1.9","2.5","3.12","5.11","5.4","6.10","7.1","7.16","7.19","7.7","8.10","8.15","8.17","8.20","9.8","9.C7","C2.3","C4.6","C8.2"],"forms":["compare_near_matches","find_and_fix","label_the_code","mark_the_block","predict_the_result","state_the_rule","what_runs_next"],"trackable":true},{"slug":"one-trip-through-the-body","kind":"glossary","plain_phrase":"one trip through the body","formal_term":"an **iteration** or **pass**","meaning":"the loop variable is rebound at the start of each","first_met":"5.2","section":"blocks-and-flow","items":["1.4","5.1","5.10","5.11","5.12","5.13","5.14","5.15","5.16","5.17","5.18","5.2","5.3","5.4","5.6","5.7","5.8","6.1","6.10","6.11","6.12","6.13","6.15","6.16","6.17","6.18","6.19","6.2","6.20","6.4","6.5","6.6","6.7","7.1","7.10","7.11","7.12","7.13","7.14","7.15","7.17","7.19","7.2","7.3","7.4","7.5","7.7","7.8","7.9","8.16","8.17","8.3","8.6","9.2","9.3","9.6","9.8","9.C1","C5.4","C5.5","C6.2","C6.6","C7.4","C7.5","C8.3","C8.5"],"forms":["build_a_trace_table","compare_near_matches","find_and_fix","label_the_code","mark_the_block","predict_the_result","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"position-in-a-list","kind":"glossary","plain_phrase":"position in a list","formal_term":"**index**","meaning":"counted from 0; negative counts from the end","first_met":"3.2","section":"collections-and-access","items":["2.15","3.2","3.4","3.5","3.7","5.9","6.1","6.12","7.10","7.11","9.10","C3.4","C3.5"],"forms":["compare_near_matches","find_and_fix","label_the_code","predict_the_result","state_the_rule","write_a_small_program"],"trackable":true},{"slug":"producing-values-only-as-asked","kind":"glossary","plain_phrase":"producing values only as asked","formal_term":"**lazy**","meaning":"`range` and generators; contrast the **eager** list comprehension","first_met":"6.14","section":"iteration","items":["5.5","6.14","6.20","6.7"],"forms":["compare_near_matches","predict_the_result","state_the_rule"],"trackable":true},{"slug":"pulling-several-names-out-of-one-item","kind":"glossary","plain_phrase":"pulling several names out of one item","formal_term":"**unpacking**","meaning":"`k, v = pair` \u2014 the same thing `for k, v in ...` does per pass","first_met":"6.4","section":"iteration","items":["6.11","6.13","6.3","6.4","6.5","7.11","8.14","C6.4"],"forms":["compare_near_matches","label_the_code","predict_the_result","state_the_rule"],"trackable":true},{"slug":"running-it","kind":"glossary","plain_phrase":"running it","formal_term":"a **call**","meaning":"`f()` \u2014 the parentheses are the call, and nothing else is","first_met":"8.2","section":"functions","items":["1.12","1.9","8.1","8.13","8.2","8.20","8.21","8.6","8.7","8.8","9.1","9.4","9.5","9.C7","C4.4"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","label_the_code","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next"],"trackable":true},{"slug":"taking-a-run-of-positions","kind":"glossary","plain_phrase":"taking a run of positions","formal_term":"**slice**","meaning":"`xs[a:b]`, stopping before `b`; always produces a new list","first_met":"3.2","section":"collections-and-access","items":["2.11","3.16","3.2","3.3"],"forms":["compare_near_matches","find_and_fix","predict_the_result"],"trackable":true},{"slug":"the-fresh-set-of-names-a-call-gets","kind":"glossary","plain_phrase":"the fresh set of names a call gets","formal_term":"the **local scope**","meaning":"created on entry, gone on return","first_met":"8.8","section":"functions","items":["7.19","8.8"],"forms":["predict_the_result","state_the_rule"],"trackable":true},{"slug":"the-lines-inside-a-loop","kind":"glossary","plain_phrase":"the lines inside a loop","formal_term":"the loop **body**","meaning":"runs once per pass","first_met":"5.1","section":"blocks-and-flow","items":["5.1","5.15","5.17","5.19","8.3","8.8","9.3","9.C1"],"forms":["find_and_fix","mark_the_block","predict_the_result","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"the-name-that-builds-up-a-result","kind":"glossary","plain_phrase":"the name that builds up a result","formal_term":"an **accumulator**","meaning":"must be bound *before* the loop","first_met":"5.6","section":"blocks-and-flow","items":["5.12","5.14","5.15","5.16","5.17","5.2","5.6","7.12","7.13","7.15","7.4","8.19","9.7","9.C1"],"forms":["build_a_trace_table","compare_near_matches","find_and_fix","mark_the_block","predict_the_result","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"the-object-itself-as-opposed-to-what-it-looks-like","kind":"glossary","plain_phrase":"the object itself, as opposed to what it looks like","formal_term":"**identity**","meaning":"tested with `is` or `id()`; distinct from `==`, which compares appearance","first_met":"1.11","section":"names-and-objects","items":["1.11","1.13","3.14","4.13","7.13","9.6","C7.4"],"forms":["compare_near_matches","find_and_fix","predict_the_result","write_a_small_program"],"trackable":true},{"slug":"the-order-in-which-lines-run","kind":"glossary","plain_phrase":"the order in which lines run","formal_term":"**control flow**","meaning":"top to bottom, except where loops and calls redirect it","first_met":"5.2","section":"blocks-and-flow","items":["2.14","3.13","5.15","5.2","7.16","7.2","8.1","9.4","9.C2","C1.6"],"forms":["what_runs_next"],"trackable":false},{"slug":"the-running-name-a-loop-keeps-updating","kind":"glossary","plain_phrase":"the running name a loop keeps updating","formal_term":"**loop variable**","meaning":"an ordinary name; it survives after the loop ends","first_met":"5.3","section":"blocks-and-flow","items":["5.3","6.15","6.3","6.4","6.5","7.14","7.3","7.5","7.8","7.9","C6.1","C6.6"],"forms":["build_a_trace_table","compare_near_matches","find_and_fix","label_the_code","predict_the_result","state_the_rule"],"trackable":true},{"slug":"the-value-sent-back","kind":"glossary","plain_phrase":"the value sent back","formal_term":"the **return value**","meaning":"an object, not a copy of one","first_met":"8.11","section":"functions","items":["2.12","5.19","8.11","8.12","8.14","8.18","8.19","8.20","8.8","9.1","9.10","9.4","9.5","9.C2","9.C4","9.C7","9.C8","C8.5"],"forms":["compare_near_matches","find_and_fix","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"two-names-for-one-object","kind":"glossary","plain_phrase":"two names for one object","formal_term":"**aliasing**","meaning":"both names reach the same object, so a change through one is visible through the other","first_met":"1.3","section":"names-and-objects","items":["1.11","1.13","1.16","1.3","1.5","2.11","2.13","2.17","2.7","2.8","3.13","3.17","3.18","3.3","4.1","4.3","5.18","7.8","8.11","8.12","9.1","C1.5","C3.2","C4.4","C8.3"],"forms":["compare_near_matches","draw_names_and_objects","find_and_fix","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true},{"slug":"unchangeable","kind":"glossary","plain_phrase":"unchangeable","formal_term":"**immutable**","meaning":"number, string, tuple, `True`/`False`, `None` \u2014 can only be replaced","first_met":"2.1","section":"names-and-objects","items":["1.6","2.1","2.10","2.6","2.7","2.9","3.18","3.9","4.8","6.20"],"forms":["compare_near_matches","find_and_fix","label_the_code","predict_the_result","state_the_rule"],"trackable":true},{"slug":"used-up-nothing-left","kind":"glossary","plain_phrase":"used up, nothing left","formal_term":"**exhausted**","meaning":"a generator or iterator that has produced its last value","first_met":"6.6","section":"iteration","items":["6.19","6.20","6.6","6.8"],"forms":["find_and_fix","predict_the_result","state_the_rule"],"trackable":true},{"slug":"values-sent-into-the-function","kind":"glossary","plain_phrase":"values sent into the function","formal_term":"**arguments**","meaning":"the objects the caller's expressions produced","first_met":"8.4","section":"functions","items":["1.12","3.12","5.17","5.5","6.11","8.11","8.13","8.16","8.19","8.21","8.4","8.5","8.6","9.3","9.4","9.6","9.7","9.C5","9.C6","C8.3"],"forms":["compare_near_matches","find_and_fix","label_the_code","predict_the_result","predict_then_diagnose","state_the_rule","what_runs_next","write_a_small_program"],"trackable":true}],"misconceptions":[{"slug":"assignment-copies-a-value","statement":"Assignment copies a value","item_ids":["1.2","1.16","2.11","3.3","3.18"]},{"slug":"immutable-values-cannot-be-shared","statement":"Immutable values cannot be shared","item_ids":["1.6","1.14","2.6","2.9"]},{"slug":"a-new-outer-container-means-new-inner-objects","statement":"A new outer container means new inner objects","item_ids":["4.2","4.3","4.11","4.16","9.2"]},{"slug":"makes-independent-inner-lists","statement":"`*` makes independent inner lists","item_ids":["4.6","4.7","4.9","5.18","6.15","7.18","9.C3"]},{"slug":"function-parameters-are-copies","statement":"Function parameters are copies","item_ids":["8.4","8.5","8.6","8.7","C8.3"]},{"slug":"for-means-only-counting","statement":"`for` means only counting","item_ids":["6.1","6.2","6.6","6.9","6.13"]},{"slug":"indentation-is-cosmetic","statement":"Indentation is cosmetic","item_ids":["5.1","5.4","7.1","7.3","7.13","9.C1"]},{"slug":"def-runs-the-body-immediately","statement":"`def` runs the body immediately","item_ids":["8.1","8.2","8.18"]},{"slug":"break-ends-all-surrounding-loops","statement":"`break` ends all surrounding loops","item_ids":["7.6","7.16","8.15","9.C5"]},{"slug":"set-order-is-reliable","statement":"Set order is reliable","item_ids":["6.9","6.10"]},{"slug":"methods-that-change-also-return-the-changed-object","statement":"Methods that change also return the changed object","item_ids":["2.5","2.12","8.20","9.1","9.8"]},{"slug":"defaults-are-created-per-call","statement":"Defaults are created per call","item_ids":["8.16","8.17","9.3","9.C6"]}],"forms":{"label_the_code":"Say the plain-language role of each piece of a line","mark_the_block":"Say which lines belong to a loop or a function body","what_runs_next":"Number lines in execution order, repeating numbers when a loop repeats","draw_names_and_objects":"Show which names point to which objects at a stated moment","predict_the_result":"State the printed output or the final contents","compare_near_matches":"Explain the difference between two almost identical snippets","find_and_fix":"Make the *smallest* correction to a bug","write_a_small_program":"Produce code with a specified binding or iteration behavior","state_the_rule":"Generalize from an example, in plain words"},"error_types":{"syntax-reading-error":"You misidentified a block boundary, an index, a key, a call, or which side of an\n`=` something was on. The code's structure was misread before any reasoning began.\n\n*Remedy:* the \"Label the code\" and \"Mark the block\" exercises of the relevant\nstage. Read the line aloud, one piece at a time, before predicting anything.","flow-error":"You misjudged *when* or *how often* a line runs \u2014 a loop's pass count, what\n`break` leaves, whether a body runs at all, whether `def` runs its body.\n\n*Remedy:* execution-order numbering (Stage 5) and the nested counts of Stage 7.\nNumber the lines; do not estimate.","object-model-error":"You confused binding with mutation, or missed a shared object, or assumed a copy\nwhere there was none.\n\n*Remedy:* draw the names and objects. Stage 2 for bind-versus-change, Stage 4 for\nlevels of sharing. This is the most common type in the collection and the one that\nmost rewards drawing.","vocabulary-only-error":"Your explanation was correct and you used the wrong word, or could not produce the\nformal term.\n\n*Remedy:* `glossary.md`. Nothing else. This is the cheapest error type and should\nnever be treated as a gap in understanding.\n\n---"},"form_difficulty":{"label_the_code":1,"mark_the_block":1,"predict_the_result":2,"what_runs_next":2,"state_the_rule":3,"draw_names_and_objects":3,"compare_near_matches":3,"write_a_small_program":4,"find_and_fix":4,"build_a_trace_table":4,"predict_then_diagnose":5}}