## Unit 1

### Section 1 (Getting Started)

• Understand the function of the commands “go”, “left”, “right”, “get”, “put” by pressing buttons
• Plan ahead before implementing a solution
• Practice logic while solving puzzles

### Section 2 (Typing Code)

• Type basic commands
• Understand basic syntax rules:
• Type one command per line
• All commands must start at the beginning of the line
• Syntax similarity to Python
• Understand error messages
• Multiple programs can solve a given task

### Section 3 (Counting Loop I)

• Keyword “repeat”
• Repeat one command
• Body of the loop, indentation
• Identify the number of repetitions
• Repeat multiple commands

### Section 4 (Counting Loop II)

• Identify repeating patterns that include sequences of commands
• Use additional operations before the repeat loop
• Use additional operations after a repeat loop
• Use additional operations before and after a repeat loop
• Use multiple consecutive repeat loops

### Section 5 (Counting Loop III)

• Identify repeating patterns that combine sequences of commands with multiple repeat loops
• Use nested loops

## Unit 2

### Section 6 (Conditions I)

• The if-statement, indentation
• Combine if-statement and repeat loops in simple settings

### Section 7 (Conditions II)

• Combine if-statement and repeat loops in complex settings
• Detect various obstacles, collectible objects and containers
• Check if robot faces North
• Keyword “else”
• Keyword “not”
• Keyword “pass”

### Section 8 (Conditions III)

• Combine multiple conditions
• Combine conditions and nested loops
• Sensor “empty”
• Keywords “and” and “or”

### Section 9 (Conditional Loop I)

• Keyword “while”
• Body of the loop, indentation
• Use keyword “not” in while loops
• Use conditions in while loops
• Use additional commands before and after the while loop
• Use multiple sequential while loops

### Section 10 (Conditional Loop II)

• Solve complex tasks that combine while loops, repeat loop and conditions
• First maze algorithm (follow a path that only leads straight, turns left or turns right)
• Solve simple tasks using the First maze algorithm

## Unit 3

### Section 11 (Custom Commands I)

• Keyword “def”
• Keyword “return”
• Defining and using custom commands
• Reuse existing custom commands to solve new tasks
• Use multiple custom commands to solve a task

### Section 12 (Custom Commands II)

• Solve complex tasks by splitting them into simpler ones
• Reuse existing custom commands to solve new tasks
• Second maze algorithm (follow an arbitrary wall that is on your right)
• Solve simple tasks using the Second maze algorithm

### Section 13 (Custom Commands III)

• Solve complex problems that require the Second maze algorithm
• Number of operations and program efficiency
• Shorter program is not necessarily more efficient
• Reuse existing custom commands to solve new tasks

### Section 14 (Variables)

• Understand the role of variables
• Various ways to initialize a new variable
• Keywords “inc”, “dec”
• Display values of variables using “print”
• Use variables to count objects
• Use variables to count other features in the maze

### Section 15 (Functions)

• Returning values
• Measure the dimensions of objects
• Understand the difference between global and local variables
• Importance of using local variables

## Unit 4

### Section 16 (Comparison Symbols)

• GPS device: keywords “gpsx”, “gpsy”
• Using symbols ==, !=, <, > in conditions and while loops
• Combining comparison symbols with keywords “and”, “or”

### Section 17 (Boolean Values “True”, “False”)

• Keywords “True” and “False”
• Understand that sensors are functions that return either True or False
• Use functions that return True or False
• Combine True and False values with keywords “and”, “or”

### Section 18 (Random Numbers)

• Keyword “randint”
• Model rolling one die
• Model rolling two dice
• Create random objects
• Calculate minimum of a sequence of numbers
• Calculate maximum of a sequence of numbers
• Break complex tasks into simpler ones

### Section 19 (Lists I)

• Create empty and non-empty lists
• Append items to a list
• Display lists
• Use a list to store horizontal and vertical positions of objects in the maze
• Store full GPS positions as [gpsx, gpsy] pairs
• Keyword “for”
• Use the “for” loop to parse lists
• Check if an item is present in a list
• Measure length of lists using the keyword “len”
• Use a list to store the robot’s path in the maze

### Section 20 (Lists II)

• Keyword “pop”
• Remove items from the end, beginning, and arbitrary position in a list
• Use lists that contain Boolean values
• Merge lists

## Unit 5

### Section 21 (Probability)

• Keyword “rand” that returns randomly True or False
• Use keyword “rand” to model coin toss
• Understand that equal probability leads to a similar number of events
• Understand that lower probability leads to a smaller number of events
• Understand that higher probability leads to a larger number of events
• Understand that the First and Second maze algorithm will not solve all mazes
• Use coin toss for random walks in the maze
• Solve mazes which cannot be solved using the First and Second Maze algorithms
• Simulate the Binomial Distribution

### Section 22 (Recursion I)

• Understand what recursion is and when it should be used
• Understand the importance of stopping condition
• Always make the recursive call in a stopping condition
• Typical mistakes in recursive algorithms
• Solve problems using recursion
• Use multiple recursive commands to solve a task