The Little Wizards Coding Camp: Level 1
A journey into computer programming using microcontrollers and micropython
Duration: 48 hours (6 months @ 2 hours per week – Saturday/Sunday)
Course Track: Beginner
About the Course
Target Audience
Prerequisites
- Basic understanding of numbers and arithmetic (addition, subtraction, multiplication and division).
- Have a computer or a laptop equipped with internet connectivity and enough free storage space (above 2 GB) to install Python and relevant third-party software.
- Ability to understand and converse in English (instructor will speak in Indian accent).
- Have the microcontroller development kit (detailed in section below).
Electronics Bill Of Materials
- 1 x RaspberryPi Pico WH (with soldered headers) [ Reference: https://robu.in/product/raspberry-pi-pico-wh/ ]
- 1 x MB102 830 points breadboard [ Reference: https://robu.in/product/mb102-830-points-solderless-prototype-pcb-breadboard-high-quality/ ]
- 1 x USB to Micro-USB wire connector (Micro-USB Data Cable) [ Reference: https://robu.in/product/micro-usb-a-to-micro-b-cable-100cm/ ]
- 1 x 1.3 inch I2C 4-pin OLED Display Module (SH1106 Driver) [ Reference: https://robu.in/product/1-3-inch-i2c-iic-oled-4-pin-lcd-module-4pin-with-vcc-gnd-blue/ ]
- 1 x TM1637 4 Digits Seven Segment LED Display Module [ Reference: https://robu.in/product/tm1637-4-bits-digital-tube-led-display-module-clock-display-arduino/ ]
- 1 x 0.56 inch Red 1 Digit 7 Segment Display (10-pin Common Cathode) [ Reference: https://robu.in/product/0-56-inch-red-1-digit-7-segment-led-display-10pin/ ]
- 1 x DHT11 Digital Temperature and Humidity Sensor Module (3-pin interface) [ Reference: https://robu.in/product/dht11-digital-relative-humidity-temperature-sensor-module/ ]
- 1 x Infrared Obstacle Avoidance IR Sensor Module (3-pin interface) [ Reference: https://robu.in/product/ir-infrared-obstacle-avoidance-sensor-module/ ]
- 1 x Digital LDR Light Sensor Module (3-pin interface) [ Reference: https://robu.in/product/digital-ldr-module/ ]
- 1 x DS3231 RTC Module [ Reference: https://robu.in/product/ds3231-rtc-module-precise-real-time-clock-i2c-at24c32/ ]
- 1 x 4×5 Matrix Array 20 key Membrane Switch Keypad [ Reference: https://robu.in/product/4×5-matrix-array-20-key-membrane-switch-keypad-keyboard-arduino/ ]
- 20 x BC547 NPN DIP Transistor [ Reference: https://robu.in/product/bc547-npn-transistor-pack-of-20/ ]
- 1 x Assorted colour 3 mm or 5 mm LEDs pack (Red, Blue, Green and White – we will need 10 of pcs of LEDs) [ Reference: https://robu.in/product/orange-100pcs-5-colors-f3mm-led-kit/ ]
- 10 x 470 Ohm 0.5 Watt Metal Film Resistor [ Reference: https://robu.in/product/470-ohm-0-5w-metal-film-resistor-pack-of-50/ ]
- 10 x 330 Ohm 0.5 Watt Metal Film Resistor [ Reference: https://robu.in/product/330-ohm-0-5w-metal-film-resistor-pack-of-50/ ]
- 10 x 100 Ohm 0.5 Watt Metal Film Resistor [ Reference: https://robu.in/product/0-5w-100-ohm-resistor-pack-of-50/ ]
- 10 x 1 Kilo-Ohm 0.5 Watt Metal Film Resistor [ Reference: https://robu.in/product/1k-ohm-0-5w-metal-film-resistor-pack-of-50/ ]
- 10 x 100 Kilo-Ohm 0.5 Watt Metal Film Resistor [ Reference: https://robu.in/product/100k-ohm-0-5w-metal-film-resistor-pack-of-50/ ]
- 1 x 6F22 9V Battery [ Reference: https://robu.in/product/9v-original-hw-high-quality-battery-5pcs/ ]
- 1 x 6F22 9V Battery Connector Clip [ Reference: https://robu.in/product/9v-battery-connector-10cm-length/ ]
- 10 x Slide Switch SS12-D00 1P2T [ Reference: https://robu.in/product/slide-switch-ss-12d00-1p2t/ ]
- 10 x Tactile Push button Switch [ Reference: https://robu.in/product/tact-switch-tk-045c-4-54-5mm/ ]
- 1 x Male to Female Jumper Wires – 40 Pcs 20 cm [ Reference: https://robu.in/product/male-to-female-jumper-wires-40pcs-20cm/ ]
- 1 x Flexible Breadboard Jumper Wires – 30 Pcs [ Reference: https://robu.in/product/30pcs-flexible-breadboard-jumper-wires/ ]
- 1 x Hook up Wire Packet (1 meter each, 5 colors) [ Reference: https://robocraze.com/products/single-stranded-hook-up-wires-1m-each-5-colors ]
- 1 x Wire Stripper and Cutter [ Reference: https://robu.in/product/multitec-150b-wire-stripper-and-cutter/ ]
Note: the Reference links shared above are only for guidance. The part might be available at a cheaper price in alternative sources.
Training Mode
- This training program is designed to be an online live master class conducted via Google Meet.
- All communication related to training materials, assignments and Meeting Links will be via email and WhatsApp group (details will be shared upon enrollment).
- Children below the age of 15 are advised to be accompanied with elderly siblings / parents / grand-parents during the training classes.
- Each module is planned for a one-hour session, but can spill-over multiple sessions based on overall wavelength of attendees.
- Though the entire course is planned for six months, it can stretch by one or two more months based on the pace of the training sessions and topic coverage.
Training Requirements
- Latest version of Thonny IDE for Windows / Linux / MacOS.
You can download and install from https://github.com/thonny/thonny/releases/download/v4.1.4/thonny-4.1.4.exe for Windows 10/11
You can download and install from https://github.com/thonny/thonny/releases/download/v4.1.4/thonny-4.1.4.pkg for MacOS
You can download and install following instructions at https://github.com/thonny/thonny/wiki/Linux for Linux distributions
Part 1: Computer sub-basics
Module 1: History of computers and their evolution
- Background and History
- How computers evolved
- Mechanical computers and electric computers of the early era
- The digital electronic computers
- Hard-wired solutions Vs Programmed Logic
- History of Vacuum tubes, Transistors and Integrated Circuits
Module 2: Parts of a computer
- The Von Neumann architecture
- The role of CPU, RAM, Storage and I/O devices
- Different forms of computers
- The Microprocessor, Microcontroller and SoC
Module 3: The number system
- The Decimal number system vs Binary number system
- An overview on binary number system
- Counting in the binary number system
Module 4: Other useful number systems
- The hexadecimal number system
- The octal number system
Module 5: Conversion between number systems
- Conversion between binary numbers and decimal numbers
- Conversion between binary to octal and hexadecimal numbers
Module 6: Binary number math
- 1’s complement and 2’s complement of a binary number
- Adding binary numbers
- Subtracting binary numbers
Module 7: Boolean logic operations – Part 1
- The NOT, AND, OR and XOR operations
- Truth Tables for logical NOT, AND, OR and XOR operations
Module 8: Boolean logic operations – Part 2
- The XOR, XNOR, NAND and NOR operations
- Logic Gates and their symbolic representations
Part 2: Basic digital electronics
Module 9: Basics of Electricity – Part 1
- The very basics of electricity and electrical circuits (demonstrations and experiments)
- Conductors and insulators
Module 10: Basics of Electricity – Part 2
- Electrical power sources and power loads
- Open circuits and closed circuits
- Voltage, Current and Resistance (in simplest terms and analogy)
- Safety measures for handling electrical devices
- Creating a simple continuity tester
Module 11: Switches, Relays and Transistors
- Mechanically operated Electrical switches
- Electromagnetic relay switches
- Transistors (pratical usage example)
Module 12: Introduction to the logic gates – Part 1
- Introduction to logic gates
- The basic gates: AND, OR and NOT gates
- Creating basic logic gates using switches, relays and transistors
Module 13: Logic gates – Part 2
- Truth tables for AND, OR and NOT gates
- The NAND, NOR, XOR and XNOR gates
- Creating simple logic gate circuit diagrams
Module 14: Adders and Comparators
- Demonstration of adders using logic gates
- Demonstration of a full-adder
- Demonstration of a comparator
Module 15: Latches, Flip-Flops and Capacitors
- Demonstration of latches and Flip-Flops using logic gates
- How latches/flip-flops act as memory for a computer
- Using capacitor to store charge and their limitations
Module 16: How computers work
- What’s inside a CPU
- The static RAM, dynamic RAM and ROM in a computer
- The concept of Integrated Circuits (ICs) and microprocessors
- I/O peripherals and bus architecture
- Storage devices – hard drives, SSDs, Flash storage devices
- Type of computers
- Laptops, PCs, Smartphones
- Single-board computers and microcontroller development boards (demonstrations)
Part 3: Introduction to Programming
Module 17: Hardware and Software
- An overview on standard computer architecture
- Hardware, Software and Firmware
- How programs are loaded and executed by a computer
Module 18: The Software Stack
- Firmware and Boot Loaders
- Operating Systems
- User Interface – Shell, Desktops and Home Screens
- Applications and Utilities
- Development Tools
Module 19: Computer programming – basics
- The concept of machine instructions and machine level language
- Assemblers and assembly language
- Demonstrations of simple assembly language programs
Module 20: High-level Programming languages
- An overview of high-level programming languages
- Compilers, Interpreters and Development Toolkits
- General-purpose programming vs Domain-Specific programming languages
- An overview demonstration of programs in a few popular high-level languages
Module 21: Introduction to Python programming language
- Overview and history of Python programming language
- Uses and applications
- Benefits of learning python
- Python vs MicroPython
Module 22: Python programming setup
- Installing python on your computer
- Running python code online
- Example programs to demonstrate python code
- Setting up micropython on microcontrollers (ESP8266 and RaspberryPi Pico)
- Using Thonny IDE for Python development
Module 23: Getting started on Python
- An overview of Python REPL
- Using Python as a calculator
- Simple arithmetic expressions
- Using
print()
andinput()
to interact with the user
Module 24: Python variables, values and types
- Defining variables
- Literal representation of numbers and strings
- Conversion between numbers and strings
Part 4: Basic MicroPython Programming
Module 25: Ingredients of a Python program
- Statements and Expressions
- Loading python modules and using their members
- Functions, Classes and Objects – an overview
- Demonstration on few micropython modules and classes
Module 26: Writing simple MicroPython programs
- An overview on Python language syntax (grammar)
- Storing python code into a file and running them
- Using Thonny Editor for writing and running micropython code
Module 27: Controlling an LED using MicroPython
- An overview on GPIO pins on ESP and RaspberryPi Pico development boards
- Connecting an LED to development board
- LED polarity, operating voltage and the need for dropping resistor
- Using a bread-board to create basic circuits
- Tips and techniques to use jumper wires and connectors
- Programmatically turning ON and OFF an LED
- More about the Pin object and its construction parameters
Module 28: Loops in MicroPython
- Creating a blinking LED using
while
loop - Creating a blinking LED using
for
loop - A simple LED chaser project
Module 29: Interfacing a light sensor
- An overview on LDR and light sensor with demonstrations
- Connecting a light sensor to development boards
- Configuring Pin object as input and reading the light sensor
Module 30: Conditions and Boolean expressions
- Boolean expressions and truthiness
True
andFalse
values- Using the
if
statement - Controlling LEDs based on ambient light – automatic night light
Module 31: Interfacing Seven Segment LED
- An overview on Seven Segment LEDs – pinouts and how they work
- An overview on the TM1637 Seven Segment Display module
- Connecting the TM1637 Seven Segment Display module
- Using time module to display current time – a simple digital clock
Module 32: Interfacing temperature sensors
- An overview on temperature sensors (DHT11 / DHT22 / AHT10 / BMP280)
- Connecting DHT11 temperature sensor to development boards
- Reading temperature and humidity measurements
- A simple weather station project
Part 5: Python features
Module 33: Python builtin data types – an overview
- Numbers –
int
,bool
,float
andcomplex
- Sequences –
str
,tuple
andlist
- Sets and Mappings –
set
,dict
Module 34: Working with numbers
- Arithmetic operators, expressions and helper functions
- Simple python programs based on math
- Find out area of a square given the length
- Find out area of a rectangle given length and breadth
- Find out area of a circle given the radius
- Convert temperature between celsius to fahrenheit
- Convert length between centimeters to inches, meters to feet, kilometers to miles
Module 35: Working with strings – Part 1
- String operators and methods
- String concatenation and repetition
- String case conversion
- Searching for substrings in a string
- Validating string contents
Module 36: Working with strings – Part 2
- More string methods
- Splitting and joining strings
- String formatting
- Using the string format operator
- Using the string format method and f-strings
- Raw-literal-strings (r-strings) and bytes object
Module 37: Working with tuples and lists – Part 1
- Tuples Vs Lists
- The concept of immutability
- Creating lists, concatentation and repetition
- Indexing and Slicing operations
Module 38: Working with tuples and lists – Part 2
- Iterating a list / tuples
- Interesting List methods
Module 39: Working with sets
- Sets vs Lists
- Creating sets and their common use-cases
- Set operations: union, intersection, difference, subset and superset
- The concept of hashability and set rules
Module 40: Working with dictionaries
- An overview on dictionaries
- Creating dictionaries and their common use-cases
- Common dictionary operations with examples
Part 6: Programming Practices and more…
Module 41: Functions in Python
- Defining custom functions
- Functions as reusable entities
- Function prototypes
Module 42: Modules in Python
- Creating custom modules
- Good design practices and conventions
- Using custom modules in python projects
- Understanding the importance of modularity and reusability
Module 43: Interfacing an OLED display
- An overview on OLED display modules
- The SPI and I2C interfaces
- Connecting the OLED display to development board
- Displaying messages on the OLED display
- A simple OLED dashboard project that displays current time and room temperature
Module 44: Interfacing a matrix 4×5 keypad
- An overview on 4×5 keypad
- The keypad scancode
- Connecting the keypad to the development board
- Detect keypresses on the keypad
Module 45: A simple digital calculator project
- Interfacing the 4×5 matrix keypad and OLED display
- Design and development of code for the digital calculator
Module 46: A simple digital visitor counter project
- Interfacing IR sensor
- Counting the number of visitors
Module 47: Interesting Python builtin functions and features
- Iteration helpers:
range()
,zip()
,enumerate()
,sorted()
,reversed()
- Reduction functions:
sum()
,min()
,max()
,all()
,any()
Module 48: Micropython – interrupts and timers
- The concept of hardware interrupt
- Handling sensor events using interrupt driven mode (with example)
- Scheduling activities using Timers
- Ending notes: how to explore further into programming and learning new concepts
Interesting small project ideas
- A simple countdown timer
- A simple pin-code lock
- A simple RPM counter
- A toy electronic voting machine
- A simple guess the number game
- A simple number jackpot game
Monthly Course fee: ₹3000 INR / $36 USD / £29 GBP / €34 EUR (for six months to be paid by 5th of each month)
Or Total Course fee: ₹18000 INR / $216 USD / £174 GBP / €204 EUR (to be paid in advance for enrollment)
How to enroll ?
In order to enroll to this training class, you can fill in the form below registering your interest with the required details.
You will receive an acknowledgement email from registrations@slashprog.com once you submit the form. In this email, we will provide you with the details for paying the course fee including payment links if you chose “Pay via Stripe” or UPI/NEFT details if you chose UPI/NEFT payment option.
Once we receive the payment, we will reply back with the confirmation of your training registration and provide you links to connect using Google Meet along with the exact schedule for the classes by email.
If you have any further queries, you can email us directly to contact@slashprog.com