Unit 3: Data Structures

Lab 1: Dealing with Complexity

Lab 1, Page 3: Recursion

Calling a procedure from inside itself is called recursion.

Lab 1, Page 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.

Lab 1, Page 4: Modularity
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.

Lab 1, Page 5: Clone

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.

Lab 1, Page 6: Debugging

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

Lab 2: Contact List

Lab 2, Page 1: Abstract Data Type (ADT)

An abstract data type (ADT) is a custom data type that's meaningful to your program. You learned about data types and ADTs on Unit 2 Lab 2 Page 2: Planning a Quiz App.

Lab 2, Page 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.

Lab 2, Page 4: Modularity
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.

Lab 2, Page 5: Higher-Order Function

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

Lab 3: Tic-Tac-Toe

Lab 3, Page 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

Lab 4, Page 1: Artificial Intelligence (AI)

The field of computer science known as artificial intelligence (AI) is loosely defined as "trying to get computers to think."