Section 8.6

Randomness

Algorithm Efficiency

Undecidable Problems

Learning Goals


AAP-4.A: For determining the efficiency of an algorithm:


AAP-4.A.1: A problem is a general description of a task that can (or cannot) be solved algorithmically. An instance of a problem also includes specific input. For example, sorting is a problem; sorting the list (2,3,1,7) is an instance of the problem. 


AAP-4.A.2: A decision problem is a problem with a yes/no answer  (e.g., is there a path from A to B?). An optimization problem is a problem with the goal of finding the "best" solution among many (e.g., what is the shortest path from A to B?). 


AAP-4.A.3: Efficiency is an estimation of the amount of computational resources used by an algorithm. Efficiency is typically expressed as a function of the size of the input. 


AAP-4.A.4: An algorithm’s efficiency is determined through formal or mathematical reasoning. 


AAP-4.A.5: An algorithm's efficiency can be informally measured by determining the number of times a statement or group of statements executes. 


AAP-4.A.6: Different correct algorithms for the same problem can have different efficiencies. 


AAP-4.A.7: Algorithms with a polynomial efficiency or slower (constant, linear, square, cube, etc.) are said to run in a reasonable amount of time. Algorithms with exponential or factorial efficiencies are examples of algorithms that run in an unreasonable amount of time. 


AAP-4.A.8: Some problems cannot be solved in a reasonable amount of time because there is no efficient algorithm for solving them. In these cases, approximate solutions are sought. 


AAP-4.B.1: A decidable problem is a decision problem for which an algorithm can be written to produce a correct output for all inputs (e.g., “Is the number even?”). 


AAP-4.B.2: An undecidable problem is one for which no algorithm can be constructed that is always capable of providing a correct yes-or-no answer. 


AAP-4.B.3: An undecidable problem may have some instances that have an algorithmic solution, but there is no algorithmic solution that could solve all instances of the problem. 



Objectives and Description

The objective of this lesson is to introduce students to the concept of randomness, both in computer science and in music, in order to give them an additional tool for composing their songs for the unit task. Students will apply shuffleString() to randomize drum beats and learn about composition techniques that can be used to incorporate randomized elements into their songs more cleanly. They will also be given an overview of the pseudocode for random number generation used in the AP exam.

Activities

Activity 8.6.1 (10 minutes)

Activity 8.6.2 (40 minutes)

Activity 8.6.3 (30 minutes)

Activity 8.6.4 (15 Minutes)