Unit 3: Data Structures

Lab 1: Dealing with Complexity


Calling a procedure from inside itself is called recursion.

3.1.4: Abstraction  
AAP-3.B.1, AAP-3.B.5

As you learned in Unit 1 Lab 2 Page 2: Making Programs Talk, procedural abstraction is the process of developing a program by breaking up a large problem into smaller sub-problems.

Creating a draw brick block lets you think in terms of a procedure with a name related to the problem you are solving. This makes your code easier to read, and once you've coded and debugged the block, you don't need to think about how it works each time you use it. That's the beauty of procedural abstraction.

AAP-3.B.2, AAP-3.B.3

Modularity is the process of breaking a problem into smaller pieces. Modularity is a form of procedural abstraction.


A clone is a copy of a sprite that shares information with its parent sprite (the original sprite). For example, clones have copies of any scripts from the parent, and if the parent's script is changed, then the clones' scripts change too. However, changes you make to a clone are not shared with the parent, so you can do things like move each clone to a different position.


Debugging is the art of identifying errors in computer programs and fixing them.

Lab 2: Contact List

3.2.2: Input and Output  
CRD-2.C.1, CRD-2.C.4, CRD-2.C.6, CRD-2.D.1, CRD-2.D.2

We use "input" loosely to mean the empty boxes in a block that get filled with values. But input also means information entered into a program by the user, as in the ask and wait block. Program input can also come from data tables, sounds, pictures, video, or other programs.

Similarly, program output means any data sent from your program to the user or to any device. Typically, the output depends on the input.

AAP-3.B.2, AAP-3.B.3

Modularity is the process of breaking a programming project up into separate sub-problems. For example on page 2 of this lab, you built code to add a contact to your app, and on this page, you built code to find contacts.


A higher-order function is a function that takes a function as input (or reports a function as output).

Lab 3: Tic-Tac-Toe

3.3.1: Sprite Variable  

A sprite variable is like a global variable in that it doesn't belong to a particular script, but it does belong to a particular sprite.

Lab 4: Robots and Artificial Intelligence


Artificial intelligence (AI) is a field of computer science loosely defined as "trying to get computers to think."