### Day 20 - Strings - 09.14.15

Update
• N/A

Review
• Lesson 1.1 Algorithms and Agile Development
• In this lesson, you will discover the fun of creating an algorithm to accomplish a task. You can take or create pictures and audio recordings to create a game or story. You will learn how to program a computer to follow your plan and will learn about how to use variables to implement that plan. At the conclusion of the lesson, you will learn more about software design and dig into designing and creating your own Scratch program using pair programming.
• 1.1 Key Terms
• 1.1.1 Principles
• 1.1.2 Input, Output, State
• 1.1.3 Branching and Iteration
• 1.1.4 Objects and Methods
• 1.1.5 Roles of Variables (part 1)
• 1.1.6 Roles of Variables (part 2)
• 1.1.7 Software Design Process
• Lesson 1.2 Mobile App Design
• In the problem at the end of this lesson, you will create an Android app of your own design. The goal of the lesson is for you to build your skill analyzing and creating code, especially by thinking about the roles of variables. The lesson begins with an introduction to binary representation of numbers, letters, colors, images, and any other digital data. You will be introduced to data abstraction, which is the idea that programs can handle complicated data like images without the programmer having to worry about low-level details like zeroes and ones. You will work with and make minor modifications to two App Inventor programs and build your ability to analyze a complex program. As you conclude the lesson by designing and creating your own Android app, you will practice pair programming and the Agile software design process.
• 1.2 Key Terms
• 1.2.1 Bits and Bytes
• 1.2.2 Introducing App Inventor
• 1.2.3 Creating Mobile Apps
• 1.2.4 Analyzing a Program
• 1.2.5 Modifying a Program
• 1.2.6 App Design
• Lesson 1.3 Algorithms in Python
• The goal of this lesson is for students to understand all information as bits and to transfer their understanding of algorithms to a new language. The hook is the opportunity for students to be creative with their own visual work. Students are introduced to functional, imperative, and declarative programming paradigms with Python® programming language, again learning to use variables in the most common roles. Variable types, arrays, and array manipulations are introduced. Students learn how data are digitally represented, making macroscopic magnetic storage in an unplugged activity and manipulating image files using both application programming interfaces (APIs) and direct manipulation of the data. Students read, discuss, and write about intellectual property and privacy issues that stem from our ability to reproduce and automate analysis of multimedia data. Students conclude the lesson by collaborating to manipulate data with Python, creating an image artifact.
• 1.3 Key Terms
• 1.3.1 Programs are Data
• 1.3.2 Python Variables and Functions
• 1.3.3 Branching and Output
• 1.3.4 Nested Branching and Input

Lesson
Lesson Objectives
• Q1 – What can be represented by binary data?
• Q2 – How does abstraction make the software development process easier?
• Q3 – What are the practices that lead to effective collaboration?
• Q4 – What role does creativity play in algorithmic programming?