š„ Three Audiences: You can explain how a single file of code is used to communicate with 3 different audiences:
[x] Developers: You can explain how code formatting, comments, logs and variable names make it easier (or harder!) for a developer to understand a program.
[x] Computers: You can explain how a computer follows your instructions to store, read and modify data in program memory.
[x] Users: You can explain how the computer creates a dynamic user experience by following different executions paths depending on user input.
š„ Listening and Reading:
[x] You can read code out loud, and understand your classmates when they read code to you. You don't need to understand how a program works to master these learning objectives!
[x] Listening You can exactly re-write a program that a classmate has read
[x] Reading You can read a program out loud and guide your classmates to re-write exactly the same code without them seeing the program. (every indentation, semi-colon, comment and spelling must be identical) to you, without seeing the program they are reading.
š„ Static vs. Dynamic Analysis: You can explain and use these two ways of studying a program, each can help you understand different aspects of your code. To help understand this concept, the options panel in Study Lenses is organized into static and dynamic study options:
[x] Static: Studying the text in a code file without running it. Some static study methods are creating a flowchart, analyzing variables, filling out a trace table, and drawing on code.
[x] Dynamic: Running code and studying the computer's behavior. Some dynamic study methods are running code and reading console logs, using the trace button, and stepping through in the debugger or JS Tutor.
š„ Analyzing Variables: You can list all the variables in a program, and answer these 5 questions for each variable:
[x] Where is the variable declared?
[x] What is the variable's scope?
[x] Is the variable initialized with a value?
[x] How many times is it's value used (read) in the program?
[x] How many times is the variable assigned a new value?
[x] What types are assigned to this variable during the program's execution?
[ ] š£ Imperative Programming: You can explain what the Imperative Programming paradigm is, and can explain how you know the programs in Welcome to JS are Imperative.
[x] š£ Tracing Execution: You can complete a "steps" trace table and correct your table using console output from the "trace" button.
[x] š£ Logging: You can tracing specific aspects of a program's execution and log them to the console.
[x] š£ Completing Programs: You can successfully fill in blanks for a program when the missing words are provided, including distractors.
[x] š£ Describing Programs: You can read a program and describe it with comments using to the methodology from /describing-programs: zooming out -> zooming in -> connections -> goals
š£ Naming Variables: You can analyze how a variable is used in a program and give it two names:
[x] Generic: You can give a generic name to a variable based on how it is used in the program.
[x] Specific: You can give a specific name to a variable based on how it's used and the program's domain (the program's specific data and use-case).
[x] š„ Constructing Programs: You can reconstruct a program's lines and indentation, successfully ignoring distractor lines.
[x] š„ Modifying Programs: You can make small changes in a program to change it's behavior without breaking it.
[ ] š Stepping Through: You can pause a script in a step debugger, arrange the debugger, collapse extra panels, and step through a script written with Just Enough JS. At each point in execution you can make a prediction of the next line before executing, and can check your prediction using the scopes panel.
[ ] š Authoring Programs: Given starter code with labeled goals, you can write a small program to match specs (user stories + test cases).
Learning Objectives