And+Assignments2

=**App Inventor 2 Website**=

12 Jan
 * Persistant Data
 * [|Persistant Web Data]Please use my server instead of the one listed in the directions http://awoodbridgeappdev.appspot.com
 * [|Lists]
 * Lists of Lists


 * 05 Jan**
 * Pong App

> ==Search Experiment== >> If you are using the emulator, you can download the aia file and import it into App Inventor. > ==Analyzing Sort Algorithms== > ==Sort Experiment== >> If you are using the emulator, you can download the aia file and import it into App Inventor.
 * 17 Dec**
 * ==Analyzing Search Algorithms==
 * [[image:https://ram8647.appspot.com/mobileCSP/assets/img/searchappscreen.png width="200"]] || **//Empirical Search Analysis.//** In this activity you are going to use an App Inventor app to experiment with and analyze the binary and sequential search algorithms.
 * 1) Create portfolio page named //Search Experiment//.
 * 2) Use the Barcode Scanner app -- you can download it from the Play Store if you don't have it — to download the Search Experiment app (APK) from the QR code:
 * 1) You will be performing a **worst case** analysis of the algorithms. Whenever you press the search button, the app will search for a number that is //not// in the list.
 * 2) Test each search algorithm on lists of size 1000, 2000, ..., 10,000 numbers. **NOTE:** Because these algorithms involve loops, you may see an ANR (App Not Responding) popup informing you that the app is not responding and giving you the option to "wait" or stop the app. Choose "wait".
 * 3) Create a table on your portfolio and write the search time in milliseconds (ms) for each test case. You should have a total of 20 test cases, 10 for each algorithm.
 * 4) Use excel) to record and graph your results.
 * 5) Analyze your results to determine which algorithm is which. Which is the //binary// and which is the //sequential// search. Provide a clear description, referring to your graph and your tabulated data, to explain how you arrived at your conclusion. ||
 * [[image:https://ram8647.appspot.com/mobileCSP/assets/img/sortappscreen.png width="200"]] || **//Empirical Sort Analysis.//** In this activity you are going to use an App Inventor app to experiment with and analyze the bubble, merge, and bucket sort algorithms.
 * 1) Create a portfolio page named //Sort Experiment//.
 * 2) Use the Barcode Scanner app -- you can download it from the Play Store if you don't have it -- to download the  SortExperiment app (APK) from the QR code:
 * 1) Test each sort algorithm on lists of size 10, 20, ..., 100 numbers. **NOTE:** Because these algorithms involve loops, you may see an ANR (App Not Responding) popup informing you that the app is not responding and giving you the option to "wait" or stop the app. Choose "wait".
 * 2) Create a table on your portfolio and write the search time in milliseconds (ms) for each test case. You should have a total of 30 test cases, 10 for each algorithm.
 * 3) Use Excel to graph your results. Take a picture of your graph and upload it to your portfolio.
 * 4) Analyze your results to determine which algorithm is which. Which is the //bubble//, and which is the //merge//, and which is the //bucket// sort. Provide a clear description, referring to your graph and your tabulated data, to explain how you arrived at your conclusion. ||


 * 09 Dec**
 * Logo 1
 * Exercises. You can answer these on the reflection page.
 * Design an algorithm to draw a 20-by-20 (pixels) square. Note: **Designing** an algorithm is not the same as **programming** it. You may first want to write it out by hand or write it on the board while working with a partner. Part of designing it is also figuring out what your design would do -- that is, mentally thinking of yourself as the Android and going through the steps of the algorithm and seeing what the result is. This is also an exercise you could do with your partner, taking turns being the turtle. After you have designed a good algorithm, implement it in App Inventor by modifying the draw procedure to draw a 20-by-20 square.
 * Let’s use a little **abstraction** here. Instead of just putting the steps of your algorithm into the //draw// procedure, define a procedure named //**square20**// that draws a 20-by-20 square and then modify the draw procedure so that it calls the //square20//procedure
 * **Procedural Abstraction**: Defining procedures is a form of **procedural abstraction**. The procedure you define hides the details of the algorithm, replacing the details with a name (//draw20//) that you can simply call when you want to do that procedure.
 * One good reason for doing so is that you’ll be able to use your procedures to solve other problems -- e.g., in this lesson, when you want to draw a face. In Logo, as in other languages, defining a procedure is a way of **extending the language**. For example, now that you have a draw20 procedure, you can use it just like any of the primitive commands -- forward, turn -- you started with.
 * Design an algorithm for drawing a 40-by-40 square. Then implement your algorithm by defining a procedure named //square40//that draws a 40-by-40 square. Then modify the //draw// procedure so that it calls the //square40// procedure.
 * Design an algorithm for drawing a face with a large square for the head, 2 small squares for eyes, and a line for the mouth (nose optional). Design and define any other procedures you need to help simplify this problem.
 * Create a new page named //**Logo 1** // under the //Reflections // category of your portfolio and write brief answers to the following questions.
 * Can you draw a triangle with this set of Logo commands? Discuss how or why not.
 * What weaknesses do you find in using the procedures (the abstractions) we gave you -- forward, turn -- for drawing simple shapes? How would you change the definitions of these procedures to make it easier to draw shapes? Give a specific example that illustrates how a more powerful set of procedures would improve things.


 * 25 Nov**
 * Coin Flip Experiment
 * Create a page named **//App Inventor's PRNG//** under the //Reflections// category of your portfolio and answer the following questions.
 * 1) Do you notice any kind of trend as the number of trials (coin flips) increases? Discuss what you expected to happen and what you observed?
 * 2) What does this experiment tell you about App Inventor’s PRNG? Is it ‘good’?
 * 3) How many trials should be performed in order to draw a conclusion one way or the other about our hypothesis?
 * 4) Because we are using a coin flip app, this experiment really tests only that App Inventor's //random integer// block generates a 1 around half the time. Is this a sufficient test for App Inventor's PRNG? How might you improve this experiment to increase your confidence in App Inventor’s PRNG?


 * 20 Nov**
 * Coin Flip App Tutorial
 * Create a page named **//Coin Flip Simulation//** under the //Reflections// category of your portfolio and answer the following questions.
 * 1) Write an //if/else statement// to express the following real life situation. Mary likes ice cream and always chooses chocolate unless there is no chocolate in which case she chooses strawberry. But if there’s no strawberry either then she settles for vanilla, which, for some reason, is always available. (HINT: You may need to put together more than 1 if/else statement to do this.)
 * 2) Give another example from real life where you use if/else logic to make a decision.
 * 3) What enables us to simulate coin flipping in this app is App Inventor’s random-integer block. This blocks constitute a //**model of randomness**// -- an abstraction of real randomness such as //really// flipping a coin. How might we use the CoinFlip app test whether this is a good model of randomness?


 * 19 Nov**
 * Random.org worksheet


 * 18 Nov**
 * Coin Flips Worksheet


 * 14 Nov**
 * Mole Mash Projects
 * Create a page named **//Android Mash Projects//** under the //Creative Projects// category of your portfolio and answer the following questions.
 * 1) Give brief descriptions of the enhancements you added to your app. Provide screen shots of important blocks and describe how you used them to solve certain programming problems.
 * 2) When the user touches an ImageSprite, both the Canvas.Touched and ImageSprite.Touched events are triggered. This is important for more complex games. For instance, suppose there are two "Androids" in your game. If you hit one, you earn a point. If you hit the other, you lose two points. If you hit the Canvas and don't hit any Android, you lose 1 point. How would you code this?
 * 3) How do you speed up the movement of the mole? What is the fastest it could move?


 * 13 Nov**
 * Mole Mash Tutorial
 * Create a page named **//Android Mash//** under the //Reflections// category of your portfolio and answer the following questions.
 * 1) AndroidMash presents a new type of event which you haven't encountered before. What is that new event? How often is it triggered?
 * 2) Consider the apps you've developed so far. Can you list all the different events your apps have responded to? What other events do you think an app can respond to? Explore some of the components in App Inventor and see what event handlers they have.
 * 3) What are the advantages of writing procedures in programming? Consider the procedures you wrote for your MoleMash app.


 * 14 Oct**
 * Map Tour Tutorial
 * Create a page named //**Map Tour**// under the //Reflections// category of your portfolio and answer the following questions:
 * 1) What is the list picker component? How was it used in this app?
 * 2) What is the activity starter component? How was it used in this app?
 * 3) If you were on a real tour, would the Map Tour app be a good app to have and use? Why or why not?

>>
 * 09 Oct**
 * You'll have two QR Codes, and two APK files on the same page for this one
 * Magic 8 Ball Basic
 * Magic 8 Ball Projects
 * Create a page named //**Magic 8 Ball** // under the //Reflections // category of your portfolio and answer the following questions:
 * 1) This app is an **//abstraction//** of the real Magic 8 Ball game. You’ve created a **//model//** of the real Magic 8 Ball game. In the real game you shake a real ball that contains messages that somehow float into view when the shaking stops. Describe how the various features of your model represent features of the the real game.
 * 2) This app makes use of //**randomness**// -- it picks a random message from a list of options. Suppose you were going to create an app to model a coin flip. How might you use randomness in that case?
 * 08 Oct**
 * Create a page named //**Error Detection**// under the //Reflections// category of your portfolio and answer the following questions:
 * 1) Explain in your own words how the card "trick" was able to determine which card was flipped.
 * 2) The card "trick" shows that it is always possible to identify the card that was flipped as long as only one card was flipped. Would it be possible always to determine if an error occurred if two cards were flipped? Explain, giving examples if possible


 * 07 Oct**
 * Group Code - Paint Pot 2 Starter
 * Create a page named //**Paint Pot 2**// under the //Reflections// category of your portfolio and answer the following questions:
 * 1) One advantage of abstraction is that it allows us to make our apps more general. Describe how the use of the variable //dotsize// in this app is an example of abstraction in that sense.
 * 2) Abstraction is sometimes defined as "reducing information and detail to focus on what's relevant". In your opinion, does the use of the //dotsize// variable fit this definition? Why or why not?

> **Short answer:** > **Free Response:**
 * 30 Sept**
 * B2B Chapter 3: Ghosts in the Machine
 * Create a page called **//Blown to Bits Chapter 3//** under the //Homework// category of your Portfolio and write answers using complete sentences to the following questions on that page.
 * 1) What is metadata? Give an example.
 * 2) What is a model?
 * 3) What's the difference between a raster image and an ASCII representation of a text document?
 * 4) What are filename extensions? What are they used for?
 * 5) What is lossless representation? What is lossy representation? What are the trade-offs in using each representation?
 * 6) What is steganography and what is it used for?
 * 7) What would you have to do to delete a document from your computer so that it could not possibly be read by anyone else
 * 1) How has retouching become a controversial issue? Give an example.
 * 2) Would you rather own a camera (or camera phone) with a higher number of megapixels or lower? Explain.
 * 3) Other than digital images, what might be an example of a computer model? Explain your answer based on the definition of a model.


 * 29 Sept**
 * RLE & Bits Video Link
 * Create a new page named //Representing Images// under the //Reflections// category of your portfolio and answer the following questions:
 * 1) Decode this message by converting it from binary to ASCII: 1000001 1110000 1110000 0100000 1001001 1101110 1110110 1100101 1101110 1110100 1101111 1110010 0100000 1010010 1001111 1000011 1001011 1010011 0100001
 * 2) Describe what it means to say that [|JPEG] is a lossy compression technique and whether or not it affects the quality of camera pictures.
 * 3) Give a specific example of a binary sequence that can represent more than one type of data -- e.g., a number, a color, a character -- and describe how to interpret its different values.


 * 22 Sept**
 * PaintPot Projects
 * Create a new page under the //Creative Projects// category of your portfolio named //**Paint Pot Projects**// and write brief answers to the following questions.
 * 1) Describe each enhancement you made to the //Paint Pot// app and include in your description some of the key technical features of the enhancement.
 * 2) For the current version of the app, changing the size of the dot that's drawn requires us to change the code. Do you have any ideas about how changing the dot size could be something that the user controls rather than the programmer?


 * 18 Sept**
 * PaintPot Tutorial
 * Teacher Tube Video
 * Create a new page named //**Paint Pot 1**// under the //Reflections// category of your portfolio and write brief answers to the following questions.
 * 1) How many different types of //events// does this app respond to? Name each type of event.
 * 2) Describe the difference between the two Canvas events, //Touched// and //Dragged//.
 * 3) What do the //X// and //Y// properties represent in the //Touched// event handler?
 * 4) Describe the difference between the //Start// and //Previous// properties in the //Dragged// event handler.


 * 15 Sept**
 * [[file:IHaveaDreamProjects.pdf|I Have a Dream Projects]]
 * Create a page called //**I Have A Dream Projects**// in the //Creative Projects// section of your portfolio site
 * 1) In this lesson, you created your own //sound board app//. Give a brief description of it here. Describe its theme, if it has one, and what particular sounds (music or speeches) it plays.
 * 2) Describe how you designed your app's UI. What components does it use?
 * 3) Now that you've had some experience building apps in App Inventor, what do you think about //**programming**//. Is it a creative activity? In what ways does it allow you to express yourself?


 * 12 Sept**
 * Read Blown to Bits Chapter 1
 * Create a page called **//Blown to Bits Chapter 1//** under the //Homework// category of your Portfolio and post brief answers using complete sentences to the following questions on that page.
 * 1) What is a //bit// and what does it mean to say that "it's all just bits"? (Koan 1) Give examples of the things today that are stored in bits?
 * 2) Describe, in your own words, Moore's Law.
 * 3) Someone offers you a summer job and offers you two pay rates: (1) $10 per hour for 40 hours per week for 30 days or (2) One cent on day 1, two cents and day two, four cents on day three and on (doubling each day) for 30 days. If you were trying to make as much money as possible in 30 days, which pay rate would you choose? What does this illustrate?
 * 4) Give an example of how the digital explosion is "neither good nor bad" but has both positive and negative implications.


 * 09 Sept**
 * [[file:IHaveADreamTutorialpt.2.pdf|I Have a Dream Part 2]]
 * In your portfolio, create a new page named //I Have a Dream Part 2// and answer the following questions:
 * What elements and components make up the **//User Interface (UI)//** for this enhanced version of the //I Have A Dream// app?


 * 08 Sept**
 * I Have a Dream App
 * Starter App
 * Tutorial Video (will not work at school)
 * In your portfolio, create a new page named I Have a Dream and answer the following questions:
 * 1) In your own words, describe what event driven programming is. What event handler was used in the I Have a Dream app? How was it used?
 * 2) Is it possible to create an app without event driven programming? Explain.
 * 3) What elements and components make up the User Interface (UI) for the I Have A Dream app?
 * 4) What are some of the elements that make up the UI for a car? An ATM machine?


 * 05 Sept**
 * @Google Setup
 * Engrade Setup - Setup your engrade account, if you had me before, it should be ready to roll.
 * Submit your Blocky Mazes work from yesterday to engrade
 * Gender Finding Algorithm Article


 * 04 Sept**
 * [[file:And.Algorithms Day1.pdf|Algorithm Slides]]
 * Sign up for remind
 * Run through Blocky Mazes 1-9 (10 is really hard but is worth figuring out)
 * Once you figure out a maze, click the button in the bottom left and copy and paste the code into word (or notepad).
 * We are going to talk about it in class Thursday.

http://www.ted.com/talks/lang/en/clay_shirky_how_cellphones_twitter_facebook_can_make_history.html https://docs.google.com/document/d/10Viw0wyGqBjSjZYA7irsOOPGnN-2BVfhk6svXovl7UU/edit#heading=h.cbqs8cgq75pa