Chapter 9: Scroll, Key, and Camera
Day 3: Tomb Reception Area, 6:08 PM
The King's Library
Key Retrieval Challenge
Grace's Solution
11: SnapShotBot: Build It
Engineering: "Good Enough" with a Peg-Leg?
Jump In
Step by Step
First Section: Basic Body with Hardpoints
Engineering: The Concept of Stiffness
Engineering: Hardpoints
Second Section: Color Sensor, IR Sensor, and the Camera Trigger
Engineering: Gears Trade Speed for Power
Third Section: Adjustable Camera Frame
Engineering: Early and Rapid Mechanical Testing
Chapter 12: SnapShotBot: Program It
One Block at a Time
Finding the Basket
Getting Around the Basket
Getting the Bot Home
INTRODUCTION: WHY STUDY COMPUTATIONAL THINKING?
PART I COMPUTATIONAL THINKING
WHAT IS COMPUTATIONAL THINKING?
Objectives
What is computational thinking?
How is computational thinking used?
Disclaimers
Summary
Exercises
LOGICAL AND ALGORITHMIC THINKING
Objectives
Approach
Logical thinking
Algorithmic thinking
Gotchas
Summary
Exercises
PROBLEM-SOLVING AND DECOMPOSITION
Objectives
Where to start
Defining the problem
Devising a solution: Something to keep in mind
Decomposition
Other effective strategies
Patterns and generalisation
Summary
Exercises
ABSTRACTION AND MODELLING
Objectives
Abstraction
Modelling
Summary
Exercises
ANTICIPATING AND DEALING WITH ERRORS
Objectives
Coming to terms with bugs
Designing out the bugs
Mitigating errors
Testing
Debugging
Summary
Exercises
EVALUATING A SOLUTION
Objectives
Solution evaluation
Is it correct?
Is it efficient?
Is it elegant?
Is it usable?
Trade-offs
Summary
Exercises
PART II COMPUTATIONAL THINKING IN SOFTWARE DEVELOPMENT
TUTORIAL FOR PYTHON BEGINNERS
Objectives
Introducing Python
First steps
Basic types
Basic operations
Functions
Comments
Summary
Exercises
EFFECTIVE BUILDING BLOCKS
Objectives
Logic
Basic algorithmic constructs
Program state
More advanced constructs
Summary
Exercises
ORGANISING YOUR CODE
Objectives
Recap
Introducing tkinter
Separating concerns
Defining information scope
Using modules
Packages
Summary
Exercises
USING ABSTRACTIONS AND PATTERNS
Objectives
Finding patterns in programs
Abstractions in programming
Built-in types
Creating your own types
Ready-made patterns
Summary
Exercises
EFFECTIVE MODELLING
Objectives
Recap
Entities
Relationships
Processes
Usage
General advice
Summary
Exercises
TESTING AND EVALUATING PROGRAMS
Objectives
Introduction to program testing and evaluation
Anticipating bugs
Verification and validation
Testing the parts
Testing the whole
Debugging
Summary
Exercises
A GUIDED EXAMPLE
Problem definition
Problem decomposition
Finding patterns
Form generalisations and abstractions
Models
Annotated source code
Testing
Opportunities for improvement
ARDUINO
Part I: Getting to Know Arduino
Chapter 1: What Is Arduino and Where Did It Come From?
Chapter 2: Finding Your Board and Your Way Around It
Chapter 3: Downloading and Installing Arduino
Chapter 4: Blinking an LED
Part II: Getting Physical with Arduino
Chapter 5: Tools of the Trade
Chapter 6: A Primer on Electricity and Circuitry
Chapter 7: Basic Sketches: Inputs, Outputs, and Communication
Chapter 8: More Basic Sketches: Motion and Sound
Part III: Building on the Basics
Chapter 9: Learning by Example
Chapter 10: Soldering On
Chapter 11: Getting Clever with Code
Chapter 12: Common Sense with Common Sensors
Part IV: Unlocking Your Arduino's Potential
Chapter 13: Becoming a Specialist with Shields and Libraries
Chapter 14: Sensing More Inputs and Controlling More Outputs
Chapter 15: Multiplying Your Outputs with I 2 C
Part V: Sussing Out Software
Chapter 16: Getting to Know Processing
Chapter 17: Processing the Physical World
Part VI: The Part of Tens
Chapter 18: Ten Places to Learn More about Arduino
Chapter 19: Ten Great Shops to Know
Chapter 20: Ten Places to Find Parts and Components