{"version":1,"pages":[{"id":"y5pGM8T9uuFVQ8oZNXIh","title":"Hello, World!","pathname":"/cs61a-guidebook","siteSpaceId":"sitesp_JKivO","emoji":"1f30d","description":"A gentle introduction to CS61A."},{"id":"KDAlHeVVuG7usA2TYK6k","title":"Learn to Think Like Your Computer","pathname":"/cs61a-guidebook/learn-to-think-like-your-computer","siteSpaceId":"sitesp_JKivO","emoji":"1f4ad","description":"What CS61A is all about."},{"id":"oKdP8DsmYjY8T9Cq0mzL","title":"Expressions in Python","pathname":"/cs61a-guidebook/building-blocks/expressions-in-python","siteSpaceId":"sitesp_JKivO","emoji":"2757","description":"The smallest possible.","breadcrumbs":[{"label":"Building Blocks"}]},{"id":"fROvFo2JHMms94K3oegX","title":"Mathematical Statements","pathname":"/cs61a-guidebook/building-blocks/expressions-in-python/mathematical-statements","siteSpaceId":"sitesp_JKivO","emoji":"2139","description":"Let's do some MATH!","breadcrumbs":[{"label":"Building Blocks"},{"label":"Expressions in Python","emoji":"2757"}]},{"id":"8H7TMdCXzSxHjXeHDD8f","title":"Variables","pathname":"/cs61a-guidebook/building-blocks/expressions-in-python/variables","siteSpaceId":"sitesp_JKivO","emoji":"1f92b","description":"Pseudonymous","breadcrumbs":[{"label":"Building Blocks"},{"label":"Expressions in Python","emoji":"2757"}]},{"id":"kprxke6KsYjqL2KYUZfO","title":"Data Types in Python","pathname":"/cs61a-guidebook/building-blocks/expressions-in-python/data-types-in-python","siteSpaceId":"sitesp_JKivO","emoji":"1f351","description":"Data types! The types of data!","breadcrumbs":[{"label":"Building Blocks"},{"label":"Expressions in Python","emoji":"2757"}]},{"id":"tbUSMLDDECc7qc01DP9n","title":"Introduction to Functions","pathname":"/cs61a-guidebook/building-blocks/introduction-to-functions","siteSpaceId":"sitesp_JKivO","emoji":"1f6a7","description":"The power of modularity.","breadcrumbs":[{"label":"Building Blocks"}]},{"id":"TY4BmsMQo903LwRbyQ78","title":"How Python Executes a Function Call","pathname":"/cs61a-guidebook/building-blocks/introduction-to-functions/how-python-executes-a-function-call","siteSpaceId":"sitesp_JKivO","emoji":"1f3c3-2640","description":"Running through what Python does!","breadcrumbs":[{"label":"Building Blocks"},{"label":"Introduction to Functions","emoji":"1f6a7"}]},{"id":"EigZQ4DohfBH1qNzC6JD","title":"Functions that Don't Return Anything","pathname":"/cs61a-guidebook/building-blocks/introduction-to-functions/functions-that-dont-return-anything","siteSpaceId":"sitesp_JKivO","emoji":"1f6b1","description":"A curious sub-category of functions in Python.","breadcrumbs":[{"label":"Building Blocks"},{"label":"Introduction to Functions","emoji":"1f6a7"}]},{"id":"isvshHbnGScWVUq1RJlT","title":"Control Flow","pathname":"/cs61a-guidebook/building-blocks/control-flow","siteSpaceId":"sitesp_JKivO","emoji":"1f30a","description":"","breadcrumbs":[{"label":"Building Blocks"}]},{"id":"ArJ6ocQmSGXdtsL56KyG","title":"What is an if statement?","pathname":"/cs61a-guidebook/building-blocks/control-flow/what-is-an-if-statement","siteSpaceId":"sitesp_JKivO","emoji":"2049","description":"Conditional execution.","breadcrumbs":[{"label":"Building Blocks"},{"label":"Control Flow","emoji":"1f30a"}]},{"id":"ayDgrkOnZ6qVe3ozzLEr","title":"What is a Loop?","pathname":"/cs61a-guidebook/building-blocks/control-flow/what-is-a-loop","siteSpaceId":"sitesp_JKivO","emoji":"1f4be","description":"While and For, among other things.","breadcrumbs":[{"label":"Building Blocks"},{"label":"Control Flow","emoji":"1f30a"}]},{"id":"f6ZheXR9RYxj3dshjrft","title":"What are Logical Operators?","pathname":"/cs61a-guidebook/building-blocks/control-flow/what-are-logical-operators","siteSpaceId":"sitesp_JKivO","emoji":"1f6a8","description":"and and or or not","breadcrumbs":[{"label":"Building Blocks"},{"label":"Control Flow","emoji":"1f30a"}]},{"id":"z1Uj8G6izROZEWxgkqjJ","title":"Logical Operators, Seemingly Illogical Behavior","pathname":"/cs61a-guidebook/building-blocks/control-flow/what-are-logical-operators/logical-operators-seemingly-illogical-behavior","siteSpaceId":"sitesp_JKivO","emoji":"1f616","description":"?!?!","breadcrumbs":[{"label":"Building Blocks"},{"label":"Control Flow","emoji":"1f30a"},{"label":"What are Logical Operators?","emoji":"1f6a8"}]},{"id":"yytg4Pm8IdjVuBaViyP4","title":"How Does Control Flow?","pathname":"/cs61a-guidebook/building-blocks/control-flow/how-does-control-flow","siteSpaceId":"sitesp_JKivO","emoji":"1f6b0","description":"Control flows downwards... mostly.","breadcrumbs":[{"label":"Building Blocks"},{"label":"Control Flow","emoji":"1f30a"}]},{"id":"a23FM6k8hfjzdgCptx3E","title":"Higher-Order Functions","pathname":"/cs61a-guidebook/building-blocks/higher-order-functions","siteSpaceId":"sitesp_JKivO","emoji":"26a1","description":"Travelling First-Class.","breadcrumbs":[{"label":"Building Blocks"}]},{"id":"o6pHEaZaYePSq3LpgKgF","title":"What are Higher-Order Functions Used For?","pathname":"/cs61a-guidebook/building-blocks/higher-order-functions/what-are-higher-order-functions-used-for","siteSpaceId":"sitesp_JKivO","emoji":"23f8","description":"What's the point?","breadcrumbs":[{"label":"Building Blocks"},{"label":"Higher-Order Functions","emoji":"26a1"}]},{"id":"PuztJ6b3ShXRl9sK4Av6","title":"Self-Reference","pathname":"/cs61a-guidebook/building-blocks/higher-order-functions/self-reference","siteSpaceId":"sitesp_JKivO","emoji":"1f446","description":"A function that refers to itself.","breadcrumbs":[{"label":"Building Blocks"},{"label":"Higher-Order Functions","emoji":"26a1"}]},{"id":"cVDSZgp7tKwQyFx8WN1L","title":"Environments and Scope","pathname":"/cs61a-guidebook/building-blocks/environments-and-scope","siteSpaceId":"sitesp_JKivO","emoji":"1f47e","description":"Frames?","breadcrumbs":[{"label":"Building Blocks"}]},{"id":"Yf6TpLvA9czAd3gMrm3F","title":"How to Make Environment Diagrams","pathname":"/cs61a-guidebook/building-blocks/environments-and-scope/how-to-make-environment-diagrams","siteSpaceId":"sitesp_JKivO","emoji":"1f58a","description":"Draw!","breadcrumbs":[{"label":"Building Blocks"},{"label":"Environments and Scope","emoji":"1f47e"}]},{"id":"ep9kG7M3YOvarCfmhLlp","title":"Recursion","pathname":"/cs61a-guidebook/structures-of-data/recursion","siteSpaceId":"sitesp_JKivO","emoji":"27b0","description":"Explained with boba.","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"kCVpNytiCYcmATnNA1Ma","title":"Anatomy of Recursion","pathname":"/cs61a-guidebook/structures-of-data/recursion/anatomy-of-recursion","siteSpaceId":"sitesp_JKivO","emoji":"1fac0","description":"What it looks like.","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Recursion","emoji":"27b0"}]},{"id":"jCvUtFDwEYdiLCTf4Zvk","title":"Recursive Leap of Faith","pathname":"/cs61a-guidebook/structures-of-data/recursion/recursive-leap-of-faith","siteSpaceId":"sitesp_JKivO","emoji":"26fd","description":"Jump Jump Jump!","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Recursion","emoji":"27b0"}]},{"id":"0bZj5R9SDPRD9BOJ1BFd","title":"Tree Recursion","pathname":"/cs61a-guidebook/structures-of-data/tree-recursion","siteSpaceId":"sitesp_JKivO","emoji":"1f384","description":"Many, many function calls.","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"GA1nAbHbZIcCud6mVzoY","title":"The Use It/Lose It Principle","pathname":"/cs61a-guidebook/structures-of-data/tree-recursion/the-use-it-lose-it-principle","siteSpaceId":"sitesp_JKivO","emoji":"2b07","description":"Making tree recursion intuitive.","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Tree Recursion","emoji":"1f384"}]},{"id":"K4W7Zn5IAIIMH1JGRYnw","title":"Iterables","pathname":"/cs61a-guidebook/structures-of-data/iterables","siteSpaceId":"sitesp_JKivO","emoji":"1f4e4","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"ARm5Fy3ijh4bQEIiqan0","title":"List Slicing","pathname":"/cs61a-guidebook/structures-of-data/iterables/list-slicing","siteSpaceId":"sitesp_JKivO","emoji":"2702","description":"Snip snip","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Iterables","emoji":"1f4e4"}]},{"id":"cYJu2BD66Gx4EPWhfZwP","title":"Deep Lists","pathname":"/cs61a-guidebook/structures-of-data/iterables/deep-lists","siteSpaceId":"sitesp_JKivO","emoji":"1f4a4","description":"Visualizing lists.","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Iterables","emoji":"1f4e4"}]},{"id":"IPyoBDeWwdz2uKhX9Ic7","title":"Iterable Functions","pathname":"/cs61a-guidebook/structures-of-data/iterables/iterable-functions","siteSpaceId":"sitesp_JKivO","emoji":"1f30b","description":"What can you do with lists?","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Iterables","emoji":"1f4e4"}]},{"id":"Y5kXxqnBeLPqjbYqm3Qx","title":"List Comprehensions","pathname":"/cs61a-guidebook/structures-of-data/iterables/list-comprehensions","siteSpaceId":"sitesp_JKivO","emoji":"1f4bd","description":"Loops over lists!","breadcrumbs":[{"label":"STRUCTURES OF DATA"},{"label":"Iterables","emoji":"1f4e4"}]},{"id":"b159WvQVrRGYN3zqcRfp","title":"Abstraction","pathname":"/cs61a-guidebook/structures-of-data/abstraction","siteSpaceId":"sitesp_JKivO","emoji":"1f648","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"jfWGceTWywXDmf1GU8bg","title":"Trees","pathname":"/cs61a-guidebook/structures-of-data/trees","siteSpaceId":"sitesp_JKivO","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"IgzdtklJ3Nm3qry5fQfq","title":"Linked Lists","pathname":"/cs61a-guidebook/structures-of-data/linked-lists","siteSpaceId":"sitesp_JKivO","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"qLhunP1W5bV8ztbxQtpJ","title":"Iterators and Generators","pathname":"/cs61a-guidebook/structures-of-data/iterators-and-generators","siteSpaceId":"sitesp_JKivO","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"8O25YXgKD7AotP8S3sdu","title":"Efficiency","pathname":"/cs61a-guidebook/structures-of-data/efficiency","siteSpaceId":"sitesp_JKivO","description":"","breadcrumbs":[{"label":"STRUCTURES OF DATA"}]},{"id":"7EPUO5PX50S2Bmvp2w6f","title":"Errors and their Types","pathname":"/cs61a-guidebook/extra-topics/errors-and-their-types","siteSpaceId":"sitesp_JKivO","emoji":"1f3ad","description":"","breadcrumbs":[{"label":"Extra Topics"}]},{"id":"jNCBIGOQgxqVzfdbMiuF","title":"Error vs Exception","pathname":"/cs61a-guidebook/extra-topics/errors-and-their-types/error-vs-exception","siteSpaceId":"sitesp_JKivO","emoji":"1f3f9","description":"","breadcrumbs":[{"label":"Extra Topics"},{"label":"Errors and their Types","emoji":"1f3ad"}]},{"id":"SzPq5tpp6yqMPP1fiU3W","title":"What is Backtracing?","pathname":"/cs61a-guidebook/extra-topics/errors-and-their-types/what-is-backtracing","siteSpaceId":"sitesp_JKivO","emoji":"1f519","description":"","breadcrumbs":[{"label":"Extra Topics"},{"label":"Errors and their Types","emoji":"1f3ad"}]},{"id":"woGBvgXZ0rb4oXoxT8wt","title":"How the Terminal and the File are Different","pathname":"/cs61a-guidebook/extra-topics/how-the-terminal-and-the-file-are-different","siteSpaceId":"sitesp_JKivO","emoji":"1f6a1","description":"","breadcrumbs":[{"label":"Extra Topics"}]},{"id":"DgdcHNBSOFaLlg07fkZP","title":"Decorators","pathname":"/cs61a-guidebook/extra-topics/decorators","siteSpaceId":"sitesp_JKivO","emoji":"1f36c","description":"","breadcrumbs":[{"label":"Extra Topics"}]},{"id":"QFfiM878jIX0MxzCrlkr","title":"Debugging with Print Statements","pathname":"/cs61a-guidebook/debugging-tools/debugging-with-print-statements","siteSpaceId":"sitesp_JKivO","emoji":"1f5a8","description":"","breadcrumbs":[{"label":"Debugging Tools"}]},{"id":"607yY4s8QEo6iMguryV6","title":"Debugging with the Debugger","pathname":"/cs61a-guidebook/debugging-tools/debugging-with-the-debugger","siteSpaceId":"sitesp_JKivO","emoji":"1f41b","description":"The Proper(TM) way to debug.","breadcrumbs":[{"label":"Debugging Tools"}]}]}