Coding foundations

Year 1 Coding

Link to Coding Foundations 1 Syllabus
Link to Coding Foundations 2 Syllabus
Python Programming

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