Curious what we teach in our Electronics + Coding Complete Course? This course is designed to start at the very beginning to systematically teach you to work with electronic components, use a Raspberry Pi, and write Python code. The course then covers increasingly complex concepts including a wide variety of electronic components such as sensors, relays, servos, audio-visual components, and many more. We also teach you write both intermediate and advanced-level Python code commands.
Click here to view sample lesson videos, activity instructions, and more.
Interested in using this course in a group teaching setting? This same content is taught in our Two Semester Electronics and Coding Course.
SCOPE AND SEQUENCE FOR THE ELECTRONICS + CODING Complete Course
Lesson A-1: Introduction to Components: Batteries and Breadboards
- What is Electricity?
- Static Electricity vs. Current Electricity
- Voltage, Current, and Resistance
- What is a Circuit?
- Short Circuits
- Open Circuits vs. Complete Circuits
- Circuit Components
- Batteries
- Anode vs. Cathode
- Breadboards
- Soldered Circuits vs. Breadboard Circuits
- Breadboard Connections and Power
- Activity: Powering Breadboard Connections
Lesson A-2: Introduction to Components: Resistors and LED
- Resistors
- How Resistors Work
- Using Resistors to Build Circuits
- Calculating Resistance Value
- Light Emitting Diode
- How LEDs Work
- LED Polarity
- Pairing Resistors and LEDs
- Calculating Forward Voltage
- Activities
- Activity #1: Build a Circuit to Illuminate an LED
- Activity #2: Build a Series Circuit
Lesson A-3: Series vs. Parallel Circuits and Ohm’s Law
- Series vs. Parallel Circuits
- Limitations to Series Circuits
- Resistor Use in Parallel Circuits
- Understanding Voltage, Resistance, and Current in Serial vs. Parallel Circuits
- Ohm’s Law
- Introduction to Ohm’s Law
- Mathematical Formula
- Ohm’s Law Calculation Example
- Activities: Build a Parallel Circuit
Lesson A-4: Introduction to Components: Jumper Wires
- Jumper Wire
- Uses for Jumper Wire
- Size and Type of Jumper Wire
- Spacing Components to Avoid Short Circuits
- Activity: Build a Circuit Using Jumper Wires
Lesson A-5: Introduction to Components: Switches
- Switches
- Common Uses for Switches
- Types of Switches
- Maintained vs. Momentary
- Normally Open vs. Normally Closed
- Poles and Throws
- Labeling Components
- Activities
- Activity #1: Controlling Two LEDs with One Switch
- Activity #2: Using Two Switches to Independently Control LEDs
Lesson A-6: Introduction to Components: Red-Blue-Green LED (RGB LED)
- RGB LEDs
- Common Anode vs. Common Cathode
- Proper Placement in Breadboard
- Activities
- Activity #1: Illuminate the Red Element of the RGB LED
- Activity #2: Add the Blue Element on a Switch
- Activity #3: Controlling Colors on a Switch
Lesson A-7: Troubleshooting Circuits
- Introduction to Troubleshooting
- Troubleshooting Steps:
- Verify There is a Failure
- Check the Simplest or Most Likely Solution First and Retest
- Half-Splitting
- Repair the Problem and Retest
- Practical Applications
- Intermittent Problems
- Equipment Failure
- Activities
- Activity #1: Building and Troubleshooting a Circuit
- Activity #2: Additional Troubleshooting Practice
Lesson A-8: Introduction to Reading Schematics
- Schematics
- Reading Schematics
- Common Schematic Symbols
- Wires
- Power
- Switches
- Resistors
- Diodes
- Capacitors
- Transistors
- Integrated Circuits
- Header
- Activities
- Activity #1: Building a Series Circuit Using a Schematic
- Activity #2: Building a Parallel Circuit Using a Schematic
- Activity #3: Working with a Schematic
Lesson A-9: Setting Up the Raspberry Pi
- Raspberry Pi Hardware
- Raspberry Pi Software
- Types of Software
- Raspian OS
- Python
- Nano
- Thonny
- Types of Interface
- GUI
- Terminal
- Understanding Sudo and Update Commands
- APT-GET Update
- APT-GET DIST-UPGRADE
- Activities
- Activity #1: Installing the Raspberry Pi in a Protective Case
- Activity #2: Connecting Peripherals to the Raspberry Pi
- Activity #3: Safely Powering the Raspberry Pi On and Off
- Activity #4: Connecting the Raspberry Pi to the Internet
- Activity #5: Updating the Raspberry Pi’s Software
Lesson A-10: Introduction to Software: Terminal and Thonny
- Nano Overview
- Thonny Overview
- Error Checking Options
- Activities
- Activity #1: Creating a Python Program in Nano
- Activity #2: Creating a Python Program in Thonny
- Activity #3: Exploring Thonny’s Error Checking Features
Lesson A-11: Creating Python Programs
- Program Flow
- Strings
- Variables
- Spaces and Capitalization
- Integers
- Equations
- Print Command
- Printing a String
- Printing a Variable
- Order
- Activities
- Activity #1: Reading and Writing Basic Python Code
- Activity #2: Writing Basic Python Code
Lesson A-12: Code Organization, User Input, and Merging Strings
- Keeping Code Organized
- Carriage Returns
- Comments
- Formatting Comments
- Commenting Out Code
- User Input
- Merging Strings (Concatenation)
- Activities
- Activity #1: Reading and Writing Python Code
- Activity #2: Writing a Simple Program in Python
Lesson A-13: Math Functions, Lists, and Importing Modules
- Math Functions
- Lists
- Formatting Lists
- Index Values
- Importing and Using Modules
- Time Module
- Random Module
- Activities
- Activity #1: Exponential Math Calculations
- Activity #2: Importing the Random Module
- Activity #3: Random Dice Program
- Activity #4: Importing the Time Module
- Activity #5: Times Up! Game
Lesson A-14: Introducing If/Else Statements
- Boolean Logic
- Coding Comparison Operators
- Connecting Multiple Logic Expressions
- Programming for Decisions
- If Statements
- Else Statements
- Using Multiple Statements Inside an If Statement
- Elif Statements
- Formatting Concerns
- Activities
- Activity #1: Using Boolean Logic
- Activity #2: Deciphering Code
- Activity #3: Writing Logical Code
Lesson A-15: Nested If Statements and String/Integer Conversion
- Nested If Statements
- Indentation
- Strings vs. Integers
- Converting a Value to an Integer
- Converting a Value to a String
- Activities
- Activity #1: Add Five Years to Your Age
- Activity #2: Age Calculator
- Activity #3: Guess A Number
Lesson A-16: Controlling a Breadboard Circuit with the Raspberry Pi
- General Purpose Input Output (GPIO)
- Pin States: Low vs. High
- Outputs
- GPIO Header
- GPIO Pin Numbering
- GPIO Header Pin Assignments
- Python Commands and Process for Working with GPIO Pins
- Importing Module
- Specifying Pins
- Cleanup Operations
- Activities
- Activity #1: Preparing the Equipment for Connection
- Activity #2: Powering an LED Using the Raspberry Pi
Lesson A-17: Loops
- Introduction to Loops
- Coding Loops
- Activities
- Activity #1: Build a 4 LED Circuit
- Activity #2: Create a Program to Test Circuit Functionality
- Activity #3: Using Loops to Control LEDs
Lesson A-18: Final Project: Two Player Reaction Game
- Inputs
- Electrical Differences in Configurations
- Another Random Module Command
- Other Uses for the Time Module
- Trimming a Long Number
- While Loops
- Activities
- Activity #1: Add Switches to the Circuit
- Activity #2: Coding the Two Player Game
Lesson B-1: Administrative and File Management
- Understanding the Raspbian File System
- Completing File Tasks in the Graphical User Interface (GUI)
- Creating a Folder
- Creating a File
- Renaming a File or Folder
- Changing Permissions on a File or Folder
- Root User
- Deleting Files or Folders
- Navigating Folders Using File Manager
- Completing File Tasks Using the Command Line
- Working Directory
- Listing Directory Contents
- Creating a File
- Creating a Directory
- Moving to Another Directory
- Copying a File or Folder
- Moving or Renaming a File or Folder
- Deleting a File or Folder
- Other Useful Command Line Tools
- Confirming Raspbian Version
- Taking a Screen Capture
- Activities:
- Activity #1: GUI File and Folder Operations
- Activity #2: Command Line File and Folder Operations
Lesson B-2: Functions
- Understanding Functions
- Keeping Code Organized
- Grouping Related Program Blocks
- Global and Local Variables
- Functions with Arguments
- Using Functions in Programs
- Activities
- Activity #1: Simple Function Program
- Activity #2: Calling a Function with a Loop
- Activity #3: Functions with Passed Arguments
Lesson 3: Program Layout Options and Advanced String Concepts
- Program Layout Options
- While True Loops
- Try, Except, Finally Program Layout
- Advanced String Concepts
- Determining the Length of a String
- Accessing the Value of a Specific String Position
- Accessing Values from Multiple String Positions
- Uppercase and Lowercase
- Replacing Characters in a String
- Activities
- Activity #1: While True Loop
- Activity #2: Error Handling Program
- Activity #3: Practice with Strings
Lesson B-4: Pulse Width Modulation
- Import Methods
- Standard Module Import
- Importing a Module Using an Alias
- Importing Multiple Modules
- Importing Specific Functions from a Module
- Analog Signals vs Digital Signals
- Pulse Width Modulation (PWM)
- PWM Duty Cycle and Frequency
- Hardware PWM vs Software PWM
- GPIO Commands to Control PWM
- Activities:
- Activity #1: Building an LED and Piezo Circuit
- Activity #2: Controlling an LED with PWM
- Activity #3: Adjusting LED Brightness
Lesson B-5: Switches and Correcting for Switch Bounce
- Pull-up and Pull-down Options
- Slide or Toggle Switch
- Switch Bounce
- Using a Delay to Save System Resources
- Activities:
- Activity #1: Adding Switches to the Circuit
- Activity #2: Counting Button Presses
- Activity #3: Tuning a Loop Using a Delay
- Activity #4: Adding LED Confirmation Using the Slide Switch
Lesson B-6: Logical Operators
- Logical Operators in Python
- Using a Pushbutton Switch as a Toggle
- Using a Pushbutton Switch to End a Program
- Activities:
- Activity #1: Using a Pushbutton Switch as a Toggle
- Activity #2: Use And/Or to Control Different Events
- Activity #3: Add Stop Button Functionality
Lesson B-7: Working with a 3x4 Matrix Keypad
- Matrix Style Input Panel
- Program Flow for Checking a Matrix
- Storing Values as Strings Versus Integers
- Membrane Type Switches
- Matrix Keypad Warning
- Variables and Scope
- Activities:
- Activity #1: Adding the Switch Matrix
- Activity #2: Creating a Program to Display Keypad Presses
- Activity #3: Adding Exit Functionality to the Keypad Program
Lesson B-8: Github and Python 2 vs Python 3
- Library Files
- What is Github?
- Cloning a Library from Github
- When to Clone a Remote Library
- Completing the Library Installation
- Viewing Code Inside Files on Github
- Python 2 vs Python 3
- Thonny and Python
- Activities:
- Activity #1: Cloning and Installing a Github Repository
- Activity #2: Exploring the Adafruit MCP3008 Repository
- Activity #3: Viewing Code on Github
Lesson B-9: Analog Signal Processing with the Raspberry Pi
- Voltage Dividers
- Analog Input on the Raspberry Pi
- Integrated Circuits (IC)
- IC Datasheets
- IC Pin Numbering
- IC Pinouts
- ESD and IC Handling Precautions
- Digital Communication
- The MCP3008 A/D Converter
- Activities:
- Activity #1: Connecting the MCP3008
- Activity #2: Reading a Value from the MCP3008
- Activity #3: Adding a Voltage Divider
- Activity #4: Updating the Raspberry Pi’s Software
Lesson B-10: Potentiometers, Phototransitors, and Advanced List Commands
- Variable Resistors
- Light Sensors
- Advanced List Commands
- Creating a List Using the Split Command
- Adding Items to a List
- Finding Items in a List
- Determining if an Item is Part of a List
- Finding the Length of a List
- Sorting a List
- Printing all Items in a List Along with Their Index Values
- Removing Items from a List
- Clearing All Items from a List
- Activities
- Activity #1: Adding the Potentiometer and Phototransistor
- Activity #2: Incorporating the LED as an Indicator
- Activity #3: Working with Lists
Lesson B-11: RFID Systems
- RFID Technology
- How RFID Works
- RFID for Access Control
- Security Concerns for RFID
- MFRC522 Tag Reader
- RFID Tags
- Reading Text from the RFID Tag
- Removing Trailing Spaces in Python
- Determining Program Type: Python Code SHEBANG or #!
- Reading and Writing Tags
- Activities:
- Activity #1: Adding the RFID Reader and Software
- Activity #2: Reading and Writing Tags
- Activity #3: Creating an Access Control Program
Lesson B-12: RFID II
- Using a File for Input
- Input File Types and Formatting
- Opening a File in Your Program
- Reading Values from a File
- Multithreaded Operation
- Important Notes About Multithreaded Operation
- Formatting and Displaying Time and Date
- Breaking Out of a Loop
- Activities:
- Activity #1: Read an External File in Python
- Activity #2: Tag Reader Indicator
- Activity #3: Adding Date and Time Messages
Lesson B-13: Level Shifting and Infrared Sensors
- Signal Level Shifting
- Hardware Level Shifting
- Infrared (IR) Obstacle Sensor
- Alignment of Obstacle Sensors
- Infrared Line Sensor
- Alignment of Line Sensors
- Activities
- Activity #1: Level Shifter and the RGB LED
- Activity #2: Adding the IR Obstacle Sensor
- Activity #3: Adding the IR Line Sensor
Lesson B-14: Ultrasonic Range Sensing and NUMPY
- Ultrasonic Rangefinders
- Ultrasonic Signals
- Finding Range with an Ultrasonic Sensor
- Using Distance Information in Programs
- Error Handling
- NumPy
- Integers and Floats
- Printing with Notation
- Activities:
- Activity #1: Adding the Ultrasonic Range Sensor
- Activity #2: Creating a Program to Read Ranges
- Activity #3: Averaging the Range Values Using NumPy
- Activity #4: Adding the RGB LED as a Distance Indicator
Lesson B-15: I2C and Temperature Sensing
- I2C Communication
- I2C Addressing
- Enabling I2C on the Raspberry Pi
- List of I2C Devices
- Detecting Attached I2C Devices
- The BMP280 Temperature Sensor
- BMP280 Wiring
- BMP280 Commands
- Temperature Conversion
- The WGET Command
- Running Modules as Imports vs Directly
- The SYSTEMEXIT() Command
- Activities:
- Activity #1: Enabling the I2C Interface
- Activity #2: Adding the BMP280 Temperature Sensor
- Activity #3: Creating a Program to Display Temperature
- Activity #4: Adding the RGB LED to Indicate Temperature
Lesson B-16: OLED I2C Display
- OLED Display Hardware
- Resolution and Pixels
- OLED Technology
- I2C Communication
- SSD1306 Display Driver
- Required Modules
- Size Configuration
- Starting the Display
- Variables that Simplify Communication with the Display
- Drawing on the Display
- Unicode Characters
- Activities
- Activity #1: Modify the Circuit
- Activity #2: Create a Program to Display Text
- Activity #3: Modify the Program to Display Sensor Information
Lesson B-17: Capacitive Touch Sensor
- Capacitors
- Construction
- Current Limiting
- Charge Time
- Calculating Charge Time
- Parallel vs. Series
- Capacitive Touch Sensor
- Male-to-Female Jumper Wires
- GPIO Pin Level Sensing
- Activities:
- Activity #1: Powering a Circuit Using a Capacitor
- Activity #2: Measuring Capacitor Discharge Time
- Activity #3: Using the Capacitive Touch Sensor
Lesson B-18: Range Sensing Game (Final Project)
- Level Shifting with Resistors
- Absolute Value in Python
- Modifying a File for Import Use
- Activities:
- Activity #1: Modifying Ultrasonic.py
- Activity #2: Adding the Ultrasonic Range Sensor
- Activity #3: Building the Range Game
Lesson C-1: Networking and Remote Access
- Computer Networking
- LAN vs. WAN
- IP Addresses
- Determining the Current IP Address of Your Raspberry Pi
- Changing Your Password
- Remote Access Methods
- VNC Access
- SSH Access
- Activities:
- Activity #1: Change Password and Determine IP Address
- Activity #2: Remote Access Using Secure Shell (SSH)
- Activity #3: VNC Viewer Installation and Connection
Lesson C-2: Infrared Remote Control
- Infrared Communication
- IR Remote Control Data
- IR Remote Codes
- The Socket Module
- Bytes and Strings
- Bash Scripts
- Curl Command
- Activities:
- Activity #1: Building the RGB LED and Receiver Circuit
- Activity #2: Installing the LIRC Package Software
- Activity #3: Creating a Program to Control the RGB LED with the IR Remote
Lesson C-3: Creating GUI Programs with Tkinter
- Python Program Elements
- Classes and Methods
- Method Calls for Imported Modules
- Simplifying Method Calls
- The Tkinter Module
- The TK Class
- The Canvas Class
- The Event Class
- Activities:
- Activity #1: Displaying Mouse Position
- Activity #2: Displaying Keyboard Input
- Activity #3: Controlling LED with Keyboard Presses
Lesson C-4: Transistors
- Transistors
- NPN Transistors
- PNP Transistors
- Identifying Transistors
- Component Reference Designators
- Transistor Specifications
- Pulse Width Modulation with Transistors
- Dual-Color LED
- Resistance Values in Series and Parallel
- Activities:
- Activity #1: Driving an LED with a Transistor
- Activity #2: Adding a Second Transistor and LED
- Activity #3: Driving the Dual-Color LED
Lesson C-5: Command Line Programs
- Bash Programming
- Bash Scripts
- Creating a Bash Script
- Running a Bash Script
- Controlling GPIO Pins with WIRINGPI
- Reading the Status of All Pins
- Changing the Mode of a Pin
- Changing the State of an Output Pin
- Modifying the Duty Cycle of a PWM Pin
- History of Commands Typed into the CLI
- Making Programs Run at Startup
- Modifying the /ETC/RC.LOCAL File
- Stopping a Program that was Launched at Startup
- Activities:
- Activity #1: Creating a Bash Script
- Activity #2: Controlling a GPIO Pin Using WIRINGPI
- Activity #3: Adding a Program on Startup
Lesson C-6: Working with Audio
- Amplifiers
- Amplifier Gain
- Distortion
- The PAM8302 Amplifier
- Audio Output Hardware
- Raspberry Pi Audio Output Quality
- USB Audio Output Devices
- Audio on GPIO Pins
- Audio Input Hardware
- USB Audio Input Devices
- Software Audio Functions
- The ARECORD Command
- The APLAY Command
- The OS Module
- Activities:
- Activity #1: Adding the Amplifier and Speaker
- Activity #2: Recording Audio Files
- Activity #3: Playing Your Voice File with the IR Remote
Lesson C-7: Servo Motors
- Servo Motors
- Types of Servos
- Servo Options
- Keeping Servos Safe
- Driving a Servo
- Servo Drive Commands
- Servo Drive Latency
- Using Servos in Projects
- Activities:
- Activity #1: Adding the Servo and Testing
- Activity #2: Controlling the Servo with Keyboard Input
- Activity #3: Controlling the Servo with Your IR Remote
Lesson C-8: Working with Data
- Technical Terms
- Dataset
- Mutable vs. Immutable
- Ordered vs. Unordered
- Iterating
- Dataset Characteristics
- Lists
- Tuples
- Sets
- Dictionaries
- Mixed Datasets
- Identifying Components of a Dataset
- Activities:
- Activity #1: Creating a Dataset
- Activity #2: Printing the Number of Students and Teachers
- Activity #3: Adding a Student to the Dataset
Lesson C-9: Working with Accelerometers and Gyros
- Accelerometers
- Other Forces
- Multiple Axes
- Gyros
- Using Gyro Information
- The MPU6050 Sensor
- Software Commands
- Activities:
- Activity #1: Adding the MPU6050 Sensor and Driver
- Activity #2: Controlling the RGB LED
- Activity #3: Controlling the Servo
Lesson C-10: Using Tkinter for Displaying Data
- Tikinter Window Construction
- The Grid Method
- Changing the Window Title
- New Widget Types
- The Label Widget
- The Button Widget
- The Entry Widget
- Creating Tkinter Loops
- Activities:
- Activity #1: Timer Display
- Activity #2: Displaying Accelerometer Data
- Activity #3: Displaying All MPU6050 Axis Data
Lesson C-11: Building a Web Server Using Bottle
- Web Page Control
- Components Required for Web Page Control
- IP Addresses and Ports
- HTML Code
- HTML Tag Types
- The Bottle Web Server
- The PIP Installer
- Activities:
- Activity #1: Preparing the Circuit and Installing Bottle
- Activity #2: Modifying the Program to Control the RGB LED
- Activity #3: Adding the Green and Blue Elements
Lesson C-12: Interfacing with a Camera
- Raspberry Pi Camera
- Camera Specifications
- ESD Precautions
- Camera Connections
- Accessing the Camera Connector on Your Raspberry Pi
- Enabling the Camera
- Camera Commands
- The Flip Options
- The Timeout Option
- The Encoding Option
- Using Multiple Options
- Camera Commands in Python
- Camera Errors
- Activities:
- Activity #1: Connecting the Camera
- Activity #2: Taking a Photo from the Command Line
- Activity #3: Building an Image Capture and Display Program
Lesson C-13: Building a Web Camera Server with Apache
- Types of Web Content
- PHP Scripts
- Javascript Code
- CGI Scripts
- The Apache Web Server
- Advantages of Apache
- Apache File Locations
- Apache URL Behavior
- RPi Cam Web Software
- Rpi Cam Video Modes
- Activities:
- Activity #1: Installing the RPi Cam Software Package
- Activity #2: Viewing the Camera Over the Network
- Activity #3: Changing the Autostart Setting
Lesson C-14: Using Relays
- Relays
- Mechanical Construction
- Input Coil Current
- Relay Types
- The Relay Carrier Board
- Driving the Relay
- Activities:
- Activity #1: Building the Circuit
- Activity #2: Adding the LED Load Circuit
- Activity #3: Controlling the Relay and LED with the IR Remote Control
Lesson C-15: Working with Data from the Internet
- Methods for Gathering Data from Websites
- Parsing Data
- API Data Access
- Database-Style Web Page Content
- The URLLIB.REQUEST Python Module
- The REQUESTS Python Module
- Viewing Feed Data
- Cheerlights
- Update Frequency
- Activities:
- Activity #1: Adding the OLED Screen
- Activity #2: Changing the RGB Color Using an Internet Feed
- Activity #3: Display Cheerlights Color on OLED Display
Lesson C-16: Web Page Control
- Using Images with HTML
- The Apache Web Server
- Apache File Locations
- Web Server Permissions
- Listing Permissions
- The Apache CGI Processing Module
- Creating and Running CGI Scripts
- Creating a Web Page to Run CGI Scripts
- Activities:
- Activity #1: Web Pages with Links
- Activity #2: Adding an Image
- Activity #3: Adding CGI Scripts to Control an RGB LED
Lesson C-17: IOT with the Raspberry Pi
- IOT (The Internet of Things)
- Home-Built vs. Commercial Solutions
- The Cayenne Software Package
- Activities:
- Activity #1: Adding a Switch and Installing Cayenne
- Activity #2: Controlling an LED and Monitoring a Switch
- Activity #3: Monitor an Input Using Cayenne
Lesson C-18: Final Project: Alarm
- Project Overview
- User Interface
- Program Operations
- Required Files and Modules
- Activities:
- Activity #1: Circuit Modifications
- Activity #2: File and Folder Preparation
- Activity #3: Creating the Alarm Program
Ready to get started? Click here to purchase the Electronics + Coding Complete Course