Year 1 Coding
Link to Coding Foundations 1 Syllabus
Link to Coding Foundations 2 Syllabus

Semester 1 (Subject to Change)
Unit 1
- 1.1 Statements & Variables
- Define the lesson terms
- Describe how a computer executes code
- Identify input and output in a program
- Identify variables and their values
- Identify, describe, and differentiate between
- camelCase notation and underscore_notation for variable names
- 1.2 Libraries
- Define the lesson terms
- Describe what happens in the flow of code when a function is called
- Identify function calls in code
- Identify the arguments sent to a function
- Explain why arguments may be necessary for
- functions Use documentation to identify what arguments are necessary for a given function
- 1.3 Values
- Define the lesson terms
- Identify which data type is most appropriate for a given situation
- Distinguish between literals and variables
- Identify the data type of a given value
- Identify when a basic mathematical operator will produce an integer and when it will produce a float
- Give the order of operations for basic mathematical operators
- 1.4 Expression
- Define the lesson terms
- Given a statement that uses a compound assignment operator, give the full version of the statement with separate assignment and math operators and vice-versa
- List the benefits of using compound assignment operators
- Identify an expression within a line of code
- Distinguish between a statement (performs a complete action) and an expression (produces a value, but does nothing with it)
- Identify when a command (such as input) is both an expression and a statement
- Identify when a function may be treated as an expression (e.g. when it returns a value)
- Describe what happens in the flow of code when a function with a return value is called
- Use documentation to identify whether a function returns a value that may be stored
- Identify ‘None’ as the value returned by any function that does not have an explicit return value
Unit 2
- 2.1 Conditionals (If statements)
- Define the lesson terms
- Identify if statements in code
- Identify the condition within an if statement
- Describe how an if statement makes a decision
- Identify which comparison operator is most appropriate in a given context
- Describe where comparison operators fall in the order of operations for Python
- Differentiate between the “=” and “==” operators and describe the function of each
- Explain how whitespace is used to delineate the beginning and end of conditional sections
- 2.2 Conditionals (elif and else)
- Define the lesson terms
- Describe the flow of a conditional with elif- and else-clauses
- Describe the general format of a clause (i.e. begins with a keyword and ends with a ‘:’)
- Identify when a conditional structure is nested
- Identify the range described by the ‘min < num < max’ chained comparison format
- 2.3 Built-in Libraries
- Define the lesson terms
- Identify and describe the random and math libraries
- Give examples of commands found in the random and math libraries
- Explain how to use documentation to find a full list of available commands in a library
- Give examples of how randomness may be used in a program
- Explain the relationship between randomness and Artificial Intelligence
- List common programming uses for the modulus operator
- 2.4 Booleans
- Define the lesson terms
- Contrast between the logical operators
- Identify boolean expressions in code
- Recognize comparison operators as operators that produce booleans
- Explain that booleans can be stored in variables like other data types
- Differentiate between well-formatted boolean variable conditions and redundant (bad boolean zen) versions
Unit 3
- 3.1 While Loops
- Define the lesson terms
- Describe the logical flow of a loop
- Explain the importance of changing the loop
- condition inside the loop (e.g. avoiding infinite loops)
- List benefits of using loops (simplify code, run until signalled to stop, etc.)
- 3.2 Controlling Loops
- Define the lesson terms
- List and describe different variations on while loops (while, loop else clause)
- Differentiate between loops that end normally and loops that end with break
- Differentiate between the effect of ‘break’ and ‘continue’ within a loop block
- Describe alternatives to using a ‘continue’ statement (e.g. using conditionals to decide whether to do part of the loop block)
- Identify situations where it would be reasonable to use break
- 3.3 Classes
- Define the lesson terms
- Describe how an instance is related to a class
- Describe how methods and attributes are related to a class
- Give examples of classes
- 3.4 Graphics
- Define the lesson terms
- Identify the arguments required to create various visual objects (window, sprite, etc.)
- Describe how the main loop is used to keep a program open
- Describe the conditions necessary to open, update, and close a window (e.g. the main loop using the is_running field, and the window.finish_frame command)
- Identify what happens when you forget the window.finish_frame command (e.g. infinite loop)
- Describe how coordinates are used to represent a position on-screen
- List and describe different text alignments (left, center, right)
- Contrast the programming coordinate space with the math coordinate space
- Explain the value of labeling constants
- Contrast variables and constants
- Identify a constant based on the style conventions of its name (e.g. in ALL_CAPS)
- 3.5 Animation
- Define the lesson terms
- Describe how animation occurs because of rapid change in each iteration of a loop
- Describe a sprite’s speed as the number of pixels it moves in one second
- Compare and contrast x vs y speeds
- Compare and contrast positive vs negative speeds
- Describe how a spritesheet is transformed into an animated image
- Contrast between movement-based animation and image-based animation
- 3.6 Interaction
- Define the lesson terms
- Explain the difference between states (e.g. whether a button is down) and events (e.g whether a button was pressed on this frame)
- 3.7 For-Range Loops
- Define the lesson terms
- Differentiate between while and for loops
- Describe how the value of the loop variable changes as the loop continues
- Describe how any for-range loop could be written as a while loop
- Give the default ‘range’ values when not overridden (e.g. ‘0’ for start and ‘1’ for step)
Semester 2 (Subject to Change)
Unit 4
- 4.1 Lists and For-each Loops
- Define a list as a changeable collection of ordered information
- Identify the valid and invalid indexes in a list
- Describe the properties of elements contained in a list
- Describe how the loop variable of a for-each loop changes when iterating over a list
- Compare and contrast different types of loops
- 4.2 List Operations
- Give examples of problems that can be solved by querying a list
- Give examples of how a list can change during the execution of a program
- Determine the most appropriate method to add or remove elements from a list
- Describe how a new list can be created by analyzing the elements of an existing list
- Describe problems caused by adding or removing an item from a list while iterating over that list
- 4.3 Advanced List Operations
- Give examples of when to use a sorted list over an unsorted list
- Describe the benefits of using randomness with collections
- Explain the difference between equality and identity in lists
- Compare and contrast the use of + and *
- operators on lists with their use on other data types
- 4.4 Strings as Operations
- Compare and contrast strings, as a collection of characters, to lists
- Identify which collection operations can and cannot be used on strings
- Identify which elements of an existing collection will be selected by a slice operation
- Identify the default values for collection slicing when no values are given
- Recognize that slicing a collection with a negative step value results in a new reversed collection
- 4.5 String Operations
- Identify and differentiate between spaces, tabs and newlines
- Describe how an escape sequence makes it easier to display certain characters
- Identify when a list of substrings is preferred over a string of the same characters and vice versa
- Choose which string operation is most appropriate for a given task
- Explain why an intermediate step is needed to swap two existing values
Unit 5
- 5.1 Tuples
- ● Define a tuple as an unchangeable collection of ordered information
- Explain why it can be useful to use a tuple instead of a list
- Identify which collection operations can and cannot be used on tuples
- Identify which data types a collection can be casted to or from
- Predict which values will be assigned to each variable when unpacking a tuple
- 5.2 Dictionaries
- Define a dictionary as a changeable collection of unordered key-value pairs
- Describe the properties of key-value pairs in dictionaries
- Given a set of data, choose which collection type would be most appropriate for storing it
- Identify which dictionary operation is most appropriate to solve a given problem
- 5.3 Nested Collections
- Differentiate between the way lists and dictionaries organize nested collections of data
- Identify that collections can be nested to any depth
- Determine which nested collections would best model a given set of data
- Describe how sequential bracket notation is used to reference data in a nested collection
- Identify the most effective strategy to reference data within a nested collection
- 5.4 Web APIs
- Explain the essential requirements and workflow for HTTP client-server communication
- Explain the tradeoffs between hard-coding
- Compare and contrast requesting information from a server to calling a function in a program
- Explain additional requirements and complications that may occur with HTTP client-server communication information into a program versus requesting it from a server
Unit 6
- 6.1 User-Defined Functions
- Explain the benefits of organizing code inside a function
- Trace the code execution from a function call to the function’s code and back
- Identify what arguments a function requires based on its signature
- Identify the rules for how a function finishes and returns to the code that called it
- 6.2 Scope and References
- Create and call user-defined functions
- Use a user-defined function as or within an expression
- Identify and refactor appropriate sections of code by abstracting them into functions
- Validate input arguments at the start of a function
- 6.3 Advanced Parameters
- Predict the initial value of all function parameters when the function is called
- Differentiate between function parameters that do and do not have default values
- Identify function parameters that can be assigned a collection of zero or more arguments
- Define functions with parameters that have default values
- Choose whether to call a function with an argument for a parameter that has a default value
- Call functions with arguments in non-positional order by referencing parameter names
- Define functions with a parameter that collects variable-length arguments
- Call functions that assigns zero or more arguments to a parameter as a collection