Moving Rainbow: 200 Key Concepts in Teaching Sequence
This document lists the 200 most important concepts in the Moving Rainbow course, ordered by the sequence they should be taught. Concepts build progressively from foundational prerequisites through advanced capstone project skills.
Prerequisites & Foundations (Concepts 1-20)
Basic Computer Skills
- Using a keyboard and mouse
- Opening and closing programs
- Creating and saving files
- Understanding file organization (folders and directories)
- Copying and pasting text
Basic Math Concepts
- Whole numbers and counting (0-255)
- Addition and subtraction
- Multiplication and division
- Percentages and fractions
- Coordinate systems (x, y positions)
Color Basics
- Primary colors (red, blue, yellow)
- Additive color mixing
- RGB color model concept
- Light vs. pigment color mixing
- Color intensity and brightness
Electricity Safety
- Positive and negative terminals
- Voltage as electrical pressure
- Current as electrical flow
- Safe handling of electronic components
- USB power safety
Week 1-2: Hardware Setup & First Programs (Concepts 21-50)
Hardware Components
- Microcontroller definition and purpose
- Raspberry Pi Pico identification
- GPIO pins and their function
- LED (Light Emitting Diode) basics
- Addressable LED concept
- NeoPixel/WS2812B chip
- Breadboard purpose and layout
- Breadboard tie points and connections
- USB cable types (micro-USB, USB-A)
- Power vs. data connections
Circuit Basics
- Complete circuit path
- Ground (GND) reference point
- Power supply (5V, 3.3V)
- Data signal line
- Three-wire LED connection (power, ground, data)
- Wire color conventions (red=power, black=ground)
- Polarity (positive/negative orientation)
- Short circuit prevention
- Current limiting concepts
- Power consumption basics
Software Setup
- IDE (Integrated Development Environment)
- Thonny Python editor
- Installing software on your computer
- USB device recognition
- Firmware definition
- MicroPython language
- BOOTSEL button function
- Drag-and-drop programming
- Serial console for output
- File system on microcontroller
First Python Concepts
- Program definition
- Code execution (running a program)
- Comments (# symbol)
- Print statement for output
- Import statement
- Library/module concept
- Python indentation rules
- Syntax (code grammar rules)
- Syntax errors and how to read them
- Case sensitivity in code
Week 2-3: Basic Programming (Concepts 61-90)
Variables & Data Types
- Variable as named storage
- Assignment operator (=)
- Integer data type
- Floating point (decimal) numbers
- String (text) data type
- Boolean (True/False) values
- Variable naming rules
- Constant values
- Type conversion
- Mathematical operators (+, -, *, /)
Working with LEDs
- Pixel as individual LED unit
- Pixel indexing (starting at 0)
- RGB tuple format (red, green, blue)
- Color values (0-255 range)
- 8-bit color depth
- Setting a single pixel color
- strip.write() command
- Turning LEDs on and off
- Creating custom colors
- Black as all LEDs off (0,0,0)
Time & Delays
- Sleep function
- Delay concept
- Seconds as time unit
- Milliseconds (thousandths of a second)
- Animation frame rate
- Timing control in animations
- Program execution speed
- Pause vs. stop
- Real-time vs. programmed time
- Time as a loop control
Week 3-4: Loops & Motion (Concepts 91-120)
Iteration & Loops
- Loop definition (repetition)
- While loop structure
- While True (infinite loop)
- For loop structure
- Range function
- Loop counter variable
- Iteration (single loop execution)
- Loop body (indented code)
- Break statement (exit loop)
- Continue statement (skip iteration)
Motion Concepts
- Animation as changing images over time
- Frame-by-frame animation
- Position variable for tracking location
- Increment (adding one)
- Decrement (subtracting one)
- Moving a pixel to the next position
- Direction of motion
- Speed control through delays
- Smooth motion techniques
- Visual persistence
Range & Boundaries
- Strip length (NUMBER_PIXELS)
- First pixel index (0)
- Last pixel index (NUMBER_PIXELS - 1)
- Index out of bounds error
- Boundary checking
- Wrapping around (going from end to start)
- Modulo operator (%)
- Remainder after division
- Circular motion
- Bounce effects (reversing direction)
Arrays & Lists
- Array/list concept (ordered collection)
- Creating a list in Python
- Accessing list elements by index
- List length (len function)
- Adding items to lists
- Removing items from lists
- Iterating through lists
- Tuple (immutable list)
- List of colors
- Storing animation frames
Week 4-5: Patterns & Functions (Concepts 131-160)
Pattern Recognition
- Repeating patterns in code
- Pattern in animation sequences
- Identifying common code blocks
- DRY principle (Don't Repeat Yourself)
- Code reuse benefits
- Abstracting common operations
- Generalizing specific solutions
- Finding similarities in problems
- Template-based solutions
- Algorithm patterns
Functions
- Function definition (def keyword)
- Function name
- Function parameters (inputs)
- Function body
- Return value (output)
- Calling a function
- Function reusability
- Local variables
- Global variables
- Variable scope
Color Theory
- Color wheel concept
- Hue (pure color)
- Saturation (color intensity)
- Value/brightness
- Complementary colors
- Analogous colors
- Color harmony
- Warm vs. cool colors
- Color transitions
- Gradient effects
Common Animation Functions
- Color wipe pattern
- Rainbow effect
- Color wheel function
- Fade in/fade out
- Pulse effect
- Chase pattern
- Fill and empty
- Random colors
- Sparkle effect
- Wave patterns
Week 5-6: Conditionals & Interactivity (Concepts 171-190)
Conditional Logic
- If statement
- Condition (test that returns True/False)
- Comparison operators (==, !=, <, >, <=, >=)
- Logical operators (and, or, not)
- Else clause
- Elif (else if) clause
- Nested conditionals
- Boolean expressions
- Truthiness in Python
- Conditional execution flow
Button Input
- Push button (momentary switch)
- Button press detection
- Digital input
- Pull-down resistor concept
- Button state (pressed/not pressed)
- Polling vs. interrupts
- Interrupt handler function
- IRQ (Interrupt Request)
- Event-driven programming
- Callback functions
Debouncing & Timing
- Bounce in mechanical switches
- Debouncing technique
- Time-based debouncing
- ticks_ms() function
- Time difference calculation
- Minimum time between events
- False trigger prevention
- State change detection
- Rising edge vs. falling edge
- Software vs. hardware debouncing
Week 6-7: Advanced Topics (Concepts 201-230)
(Continuing the numbering - note: this extends beyond 200 to complete the sequence)
Mode-Based Programs
- Mode concept (different operating states)
- Mode variable
- Mode counter
- Mode selection with buttons
- Mode wrapping (cycling through modes)
- Mode switching logic
- Mode names list
- Current mode display
- Mode change detection
- State machine concept
Advanced Animations
- Comet tail effect
- Brightness levels array
- Scaling colors for dimming
- Larson scanner effect
- Theater chase pattern
- Twinkle/sparkle with random
- Ripple effect
- Heartbeat pattern
- Candle flicker simulation
- Fire effect algorithm
Random Numbers
- Random number generation
- urandom module
- randint() function
- Random range specification
- Seed concept
- Pseudo-random vs. true random
- Random color generation
- Random position selection
- Random timing variations
- Controlled randomness
Optimization & Efficiency
- Code efficiency
- Minimizing delays
- Reducing redundant calculations
- Memory usage
- Battery life considerations
- Power consumption optimization
- Brightness vs. power tradeoff
- Efficient looping
- Avoiding unnecessary writes
- Performance tuning
Week 7: Sensors & Advanced Input (Concepts 241-260)
Analog Input
- Analog vs. digital signals
- ADC (Analog-to-Digital Converter)
- Voltage reading
- Potentiometer (variable resistor)
- Reading potentiometer values
- Value scaling and mapping
- Smoothing noisy readings
- Threshold detection
- Continuous value ranges
- Converting analog to control parameters
Light Sensing
- Photoresistor operation
- Light-dependent resistance
- Voltage divider circuit
- Ambient light detection
- Day/night detection
- Automatic brightness adjustment
- Nightlight logic
- Light threshold setting
- Hysteresis (preventing flicker)
- Environmental sensing
Project Planning Concepts
- Requirements gathering
- Feature list creation
- Prioritizing features
- Must-have vs. nice-to-have
- Breaking project into phases
- Milestone planning
- Timeline estimation
- Resource requirements
- Parts list creation
- Budget planning
Week 8: Capstone Planning (Concepts 271-290)
Design Process
- Brainstorming techniques
- Sketching ideas
- Wireframing
- Prototype concept
- Proof of concept
- Iterative design
- User requirements
- Design constraints
- Technical feasibility
- Creative problem solving
Documentation
- Code comments best practices
- Function documentation
- Inline comments
- Project description
- README file
- Setup instructions
- Usage guide
- Troubleshooting guide
- Known issues list
- Future improvements section
Circuit Design
- Circuit diagram reading
- Wiring diagram creation
- Component placement
- Wire routing
- Connection testing
- Continuity checking
- Power distribution
- Ground connections
- Signal integrity
- Cable management
Algorithm Design
- Pseudocode writing
- Flowchart creation
- Step-by-step planning
- Input-process-output model
- Edge case identification
- Error handling strategy
- Testing scenarios
- Expected behaviors
- Failure modes
- Recovery procedures
Week 9: Implementation (Concepts 311-340)
Debugging
- Bug definition
- Debugging process
- Print debugging
- Variable inspection
- Logic errors vs. syntax errors
- Systematic troubleshooting
- Isolating problems
- Testing hypotheses
- Error messages interpretation
- Stack traces
Testing
- Unit testing concept
- Integration testing
- System testing
- Test plan creation
- Test cases
- Expected vs. actual results
- Regression testing
- User acceptance testing
- Stress testing
- Edge case testing
Code Organization
- Code structure
- Logical grouping
- Helper functions
- Main program flow
- Initialization section
- Configuration section
- Constants at top
- Function definitions before use
- Main loop at bottom
- Clean code principles
Version Control
- Git basics
- Repository concept
- Commit (saving changes)
- Commit message
- Version history
- Branching concept
- Reverting changes
- Tracking changes over time
- Collaboration workflow
- Backup through version control
Week 10: Presentation & Reflection (Concepts 351-370)
Technical Communication
- Explaining technical concepts simply
- Audience awareness
- Demonstration techniques
- Live demo preparation
- Backup plans for demos
- Visual aids
- Slide presentation design
- Speaking clearly and confidently
- Answering questions
- Accepting feedback gracefully
Project Presentation
- Problem statement
- Solution overview
- Design decisions explanation
- Challenges encountered
- How challenges were overcome
- Demonstration of features
- Code highlights
- Future enhancements
- Lessons learned
- Acknowledgments
Advanced & Extension Concepts (371-400)
Professional Skills
- Time management
- Meeting deadlines
- Asking for help
- Giving help to others
- Peer review
- Constructive criticism
- Iterative improvement
- Learning from failure
- Growth mindset
- Persistence
Hardware Extensions
- Battery selection
- Battery capacity (mAh)
- Battery life calculation
- Rechargeable batteries
- LiPo battery safety
- Charging circuits
- Voltage regulators
- Power switches
- Portable power solutions
- Wearable electronics considerations
Software Extensions
- Libraries and modules
- Code reusability
- Open source software
- Software licensing
- Code sharing etiquette
- Reading others' code
- Adapting example code
- Contributing to projects
- Community resources
- Continuous learning
Computational Thinking Throughout
These meta-concepts are reinforced across all weeks:
Decomposition - Breaking complex animations into simple steps - Dividing projects into manageable tasks - Separating concerns (display, logic, input)
Pattern Recognition - Identifying repeating code sequences - Recognizing common animation structures - Finding similarities across different effects
Abstraction - Using functions to hide complexity - Creating reusable components - Focusing on essential features - Generalizing specific solutions
Algorithm Design - Planning step-by-step procedures - Optimizing for efficiency - Handling edge cases - Creating robust solutions
Debugging & Testing - Systematic problem solving - Hypothesis testing - Iterative refinement - Learning from errors
Teaching Notes
Concept Dependencies
Many concepts build on earlier ones. For example: - Functions require understanding variables and parameters - Loops need comprehension of conditionals for exit conditions - Advanced animations combine colors, timing, and mathematical operations
Spiral Learning
Some concepts (like debugging, documentation, and testing) should be revisited multiple times throughout the course with increasing depth.
Differentiation
- Struggling students: Focus on concepts 1-200, ensuring solid fundamentals
- Advanced students: Explore concepts 201-400 and beyond, adding complexity
- Project variations: Adjust complexity based on student readiness
Assessment Checkpoints
Key concepts to assess for mastery: - Week 2: Concepts 1-60 (setup and basic programming) - Week 4: Concepts 61-130 (variables, loops, motion) - Week 6: Concepts 131-200 (functions, conditionals, interactivity) - Week 8: Concepts 201-310 (planning and design) - Week 10: Concepts 311-400 (implementation and communication)
This sequence ensures students build a strong foundation before tackling more complex concepts, with computational thinking principles woven throughout the entire curriculum.