### Day 30 - Image Algorithms - 09.28.15

Update

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
• 1.3.5 Strings
• 1.3.6 Tuples and Lists
• 1.3.7 For Loops
• 1.3.8 While Loops

Lesson
• Lesson 1.4 Images and Object-Oriented Libraries
• In this lesson, you will use Python to be creative, making new images by using algorithms. You can use other people's images or be creative with your own visual work. You will understand that all digital data comes down to bits. You will expand your understanding of programming by using a code that has been written in the object-oriented programming paradigm. You will expand you knowledge of variable types by learning about array and objects. You will read, discuss, and debate about intellectual property and privacy issues that stem from our ability to reproduce and automate analysis of multi-media data. You conclude the lesson by collaborating to manipulate data with Python, creating image artifacts.
• Project
• 1.4.1 Procedural Abstraction
• 1.4.2 Objects and Methods
• Object-Oriented Programming
• Creating your own class about you
• Activity
• 1.4.3 Arrays and Images
• 1.4.4 Python Image Library API
• 1.4.5 Image Algorithms
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?