Academic Year 2026–27 · Deep Curriculum Guide

Detailed Class Planning Standards 6 through 12

Every topic, every term — with real-world examples, deep conceptual context, industry connections, and common misconceptions debunked. Not just what to learn, but why it matters.

Track 1: Coding & Web
Track 2: IoT & Robotics
Track 3: AI/ML
Class 6
Class 7
Class 8
Class 9
Class 10
Class 11
Class 12
Standard VI · Foundation Year · Age 11–12
Digital World Beginners
The foundation year. Students learn how the internet actually works, build their first real webpage, wire their first circuit, and discover that AI is not magic — it's pattern recognition. Every concept here is a permanent building block.
3
Tracks
75
Annual Hours
3
Projects
3
Assessments
6CLASS
💻
Track 1 — Web Foundations
HTML5 · CSS3 · Scratch · Digital Literacy
Term 1
April – June 2026
How the Internet Works — The invisible plumbing behind every website
When you type google.com, your browser performs a DNS lookup (converts the name to an IP address like 142.250.195.36), opens a TCP connection, sends an HTTP GET request, and the server replies with HTML text. The internet is just computers sending text to each other — there is no "cloud", just someone else's computer.
Real world: When you load Instagram, your phone makes ~25 separate HTTP requests — one for the HTML shell, more for images, CSS, and JavaScript files, all within 2 seconds.
HTML Structure & Semantic Tags — The skeleton every webpage is built on
HTML stands for HyperText Markup Language, invented by Tim Berners-Lee in 1991 to share physics research documents. Every tag has a semantic meaning: <h1> signals the most important heading (search engines weigh this heavily), <p> is a paragraph, <nav> is navigation. Using <div> for everything is like labelling every room in a house "room" — you can live there but it's confusing.
Real world: Right-click Wikipedia → View Page Source. Every article you've ever read on Wikipedia is plain HTML text being interpreted by your browser.
Browser Developer Tools — Your X-ray vision for the web
Press F12 on any website to open DevTools. The Elements tab shows the live HTML tree. The Console tab runs JavaScript. The Network tab shows every HTTP request. Professional web developers use DevTools every single day — it's how you debug, inspect, and learn from any website on Earth.
First HTML Page from Scratch — DOCTYPE, html, head, body: why every page starts the same
<!DOCTYPE html> tells the browser "interpret this as HTML5, not an older version." The <head> is invisible metadata — the page title, CSS links, character encoding. The <body> is everything you see. This structure has been consistent since 1995 across 2 billion websites.
💡 Concept Spotlight
HTTP: The Language of the Web
Every web interaction is an HTTP request/response pair. GET retrieves data. POST sends data. The response has a status code: 200 = OK, 404 = Not Found, 500 = Server Error. When you see "Error 404", the server is saying "I got your request but I have no page at that URL." This protocol was designed in 1991 and still powers all web traffic today.
Analogy: HTTP is like ordering at a restaurant. You (browser) call the waiter (HTTP request), give your order (URL), the kitchen (server) prepares it, and the waiter brings your food (HTML response). Error 404 = "Sorry, we don't serve that."
Term 2
July – September 2026
CSS: Cascading Style Sheets — Separating structure from appearance
CSS was invented in 1996 because HTML was getting cluttered with visual tags like <font> and <center>. "Cascading" means multiple rules can apply to one element, and specificity determines which wins. Inline styles beat IDs beat Classes beat Tags — this order prevents styling chaos on large sites.
Real world: Gmail's entire visual identity — colours, fonts, spacing, layout — is defined in CSS files. Change one CSS variable and the whole Gmail theme shifts.
The CSS Box Model — Why every layout problem is a box problem
Every HTML element is a rectangle: Content (the text/image) + Padding (inner space) + Border (the edge) + Margin (outer space). When two elements are too close or too far apart, it's always a box model issue. Understanding this single concept solves 80% of CSS layout bugs.
Colors, Typography & Visual Hierarchy — Designing for human eyes
Screens use RGB (additive color): #FF0000 = pure red (255 red, 0 green, 0 blue). Unlike paints, mixing all RGB = white (#FFFFFF). Contrast ratio matters for accessibility: WCAG AA requires 4.5:1 minimum for text. Font-size hierarchy (h1 > h2 > p) guides the reader's eye before they consciously read a word.
Scratch: Visual Programming Logic — Same logic as real code, zero syntax errors
Scratch uses the same control flow as Python, JavaScript, and C++: sequences, conditionals (if/else), loops (repeat, forever), events (when flag clicked). The visual blocks prevent syntax errors, letting students focus purely on logical thinking. MIT designed Scratch in 2007; it now has 100M+ registered users.
Real world: The game Minecraft Education Edition uses block-based coding similar to Scratch to teach programming concepts to 35 million students.
Industry Connection
Google employs thousands of CSS engineers just to maintain the visual consistency of Search, Gmail, Maps, and YouTube. Every pixel of whitespace on Google Search is deliberate — research showed users find results faster with specific spacing. At scale, 1mm of extra padding = millions of different user experiences.
Term 3
October – December 2026
CSS Variables & Theming — Define once, change everywhere
CSS custom properties (--brand-color: #6C3CE1) work like constants. Set them in :root and they cascade everywhere. Changing --brand-color updates your entire site. This is how major companies switch brand colours instantly — one variable change, thousands of elements update. The entire PREKSHA website uses this system.
Responsive Design with Media Queries — One website, all screen sizes
@media (max-width: 768px) { ... } means "apply these rules only on screens narrower than 768px." In 2024, 60% of web traffic is mobile. A non-responsive site on a phone looks like a tiny newspaper — unusable. Mobile-first design means designing for the smallest screen first, then expanding for larger screens.
Publishing to GitHub Pages — Your work, live on the internet
GitHub Pages converts a repository into a live website for free. Push your HTML/CSS files → GitHub's servers serve them to the world. The URL becomes username.github.io/project-name. This is the same infrastructure used by Microsoft's open-source documentation site and thousands of startups' landing pages.
Common Misconception
"HTML is a programming language." — HTML is a markup language. It describes structure and content, but has no logic, variables, or conditions. You cannot "program" with HTML alone — you need JavaScript for logic. This distinction matters: a developer who only knows HTML is a content author, not a programmer.
🏆
Capstone Project
My School Club Website — 3 pages, deployed live
A fully responsive HTML/CSS website for a school club of their choice — home page, events page, photo gallery. Dark/light theme toggle using CSS variables. Deployed to GitHub Pages with a custom URL. Students present to parents at year-end showcase.
HTML5 Semantics CSS Box Model CSS Variables Media Queries Scratch Logic GitHub Pages
Track 2 — Electronics & Arduino
Circuits · Ohm's Law · Arduino C++
Term 1
April – June 2026
Electricity Fundamentals: V, I, R — The physics behind every circuit you'll ever build
Voltage (V) = electrical pressure measured in volts. Current (I) = flow of electrons measured in amperes. Resistance (R) = opposition to flow measured in ohms. Ohm's Law: V = I × R. Your phone charger takes 230V from the wall and converts to 5V for the phone. Your phone battery is 3.7V lithium-ion. Every circuit you build this year uses these three relationships.
Real world: A USB-C charger negotiates 5V/9V/12V/20V with your phone to charge as fast as the battery can safely accept. That negotiation uses the same V=IR principles.
Breadboard & Component Identification — The prototyping tool used in every electronics lab on Earth
Breadboard holes are connected in rows internally (and the long power rails vertically). This lets you connect components without soldering. The rows are isolated islands — current only flows if you bridge them deliberately with wire or a component. Used in electronics prototyping since the 1970s; every Arduino/Raspberry Pi lab uses one.
LEDs and the Need for a Current-Limiting Resistor — Why LEDs explode without resistors
LED = Light Emitting Diode. A diode allows current in only one direction. Without a resistor, from 5V source: current is limited only by wire resistance (~very low) → LED gets 500mA instead of 20mA → instant burnout in microseconds. Resistor calculation: R = (Vcc − Vled) / I = (5V − 2V) / 0.02A = 150Ω. This is Ohm's Law applied to real hardware.
Real world: Every LED in your house, phone screen (OLED = Organic LED), and TV backlight uses carefully calculated current limiting. Your phone screen has 8 million tiny LEDs.
What is Arduino? — A tiny computer that talks to the physical world
Arduino uses the ATmega328P chip: 8-bit processor, 16 MHz clock, 32KB flash memory, 2KB RAM. Compare to iPhone 15's A17 Pro: 3 GHz, 16GB RAM, billions of transistors. Arduino is 10,000× slower — but it can directly control electric circuits. Your phone can't easily turn on a light bulb. Arduino was designed for exactly that. Arduino code runs in a bare-metal loop: no OS, no background processes, just your code executing on the chip.
💡 Concept Spotlight
Ohm's Law — The Most Important Formula in Electronics
V = I × R. Everything else follows from this. Need to know what resistor to use? R = V/I. Need to know how much current flows? I = V/R. Every sensor, every motor driver, every LED circuit, every battery calculation uses this same triangle of relationships. Professional electrical engineers use Ohm's Law every day, decades into their career.
Water analogy: Voltage = water pressure (PSI). Current = flow rate (litres/second). Resistance = pipe diameter. A narrow pipe (high resistance) reduces flow for the same pressure. A wide open pipe (low resistance) = dangerous flood. Resistors are like adjustable pipe valves.
Term 2
July – September 2026
Digital Output & Patterns — Making multiple LEDs tell a story
Arduino digital pins are either HIGH (5V) or LOW (0V). digitalWrite(pin, HIGH) sets 5V on that pin. By sequencing multiple LEDs with delays, you create patterns. A traffic light is just 3 LEDs with timed digital outputs. Knight Rider's car KITT's scanner light? 8 LEDs with a loop counter.
Digital Input: Push Buttons & if/else Logic — Hardware decisions mirror programming decisions
digitalRead(pin) returns 1 (HIGH) or 0 (LOW). When a button is pressed, it connects the pin to 5V through a pull-down or pull-up resistor. if (digitalRead(buttonPin) == HIGH) { turn on LED } else { turn off LED }. This is the same if/else logic in Python, JavaScript, and C. The physical button is just a way to change a boolean from 0 to 1.
PWM: Pulse Width Modulation — How digital pins fake analog output
Arduino can only output 0V (off) or 5V (on) — it's digital. But analogWrite(pin, 128) pulses the pin on/off 490 times per second, with 50% on-time. An LED can't react to changes happening 490 times/second — it just sees the average voltage: 50% of 5V = 2.5V. This is PWM. It's how dimmer switches, motor speed control, and audio generation all work on microcontrollers.
Real world: Your phone's screen brightness is controlled by PWM — fast enough you can't see the flicker, slow enough to reduce average power. Battery saving mode = lower PWM duty cycle.
Buzzer & the tone() Function — Sound is just air pressure waves at specific frequencies
A piezo buzzer vibrates at the frequency you specify. tone(pin, 440) produces 440 Hz = musical note A4. tone(pin, 523) = C5. Musical notes are just specific frequencies: 261 Hz = C4, 294 Hz = D4, 330 Hz = E4. Every musical instrument produces specific frequency combinations. Your Arduino can play any melody by sequencing frequencies with delays.
Mind fact: The NE555 timer chip, which many Class 6 students build with, was invented in 1971 by Hans Camenzind. It has been produced continuously for 53 years. It is estimated that one billion NE555 chips are manufactured every year — more than any other chip in history.
Term 3
October – December 2026
The Arduino setup() and loop() Functions — Why every Arduino program has this structure
setup() runs once when Arduino powers on — for one-time configuration (pin modes, serial begin). loop() runs forever, as fast as possible (~16 million cycles/second). There's no OS, no sleep, no pause. This bare-metal execution is why Arduino responds to button presses in microseconds. If you want a delay, you must explicitly put one in with delay() or millis().
Reading Tinkercad Simulations — Test before you build, always
Tinkercad's circuit simulator uses SPICE (Simulation Program with Integrated Circuit Emphasis) — the same simulation engine used by professional electrical engineers to design circuits for Boeing aircraft and NASA spacecraft. Simulating first catches wiring mistakes before they short-circuit or burn components.
The 5-LED Chasing Circuit — Putting it all together
Using a NE555 timer IC as an oscillator feeding a CD4017 decade counter, you create a chasing light with no microcontroller at all — just analog logic. This is how pre-Arduino engineers built sequential circuits in the 1970s. Understanding this makes the Arduino's digital logic seem elegant by comparison.
🚦
Capstone Project
Smart Traffic Light + Pedestrian System
A working traffic light with correct timing (Red 4s, Amber 1s, Green 4s), pedestrian push button override using millis() non-blocking timing, buzzer chirp on crossing signal. State machine drawn on paper before any code is written. Live demo to class.
Ohm's Law Breadboard Wiring Arduino C++ PWM Digital I/O State Machine Logic
🧠
Track 3 — Data Literacy & AI Intro
Data · Spreadsheets · What is AI?
Term 1
April – June 2026
What is Data? Structured vs Unstructured — The raw material of the digital economy
Structured data fits neatly into rows and columns: your school marks, a bus timetable, a bank ledger. Unstructured data is everything else: photos, audio, WhatsApp messages, Instagram captions. 80% of all data generated is unstructured. AI had to learn to process unstructured data before ChatGPT could exist. The invention of transformers (2017) was the breakthrough that made this possible.
Real world: 2.5 quintillion bytes of data are created every single day. That's 2,500,000,000,000,000,000 bytes. Facebook processes 4 petabytes (4 million gigabytes) of data daily just from user interactions.
Google Sheets as a Data Tool — The most-used data analysis tool in the world
SUM, AVERAGE, COUNTIF, VLOOKUP are used in every hospital, bank, school, and NGO. Excel/Sheets skills appear in the top 5 most-requested skills on job posts worldwide. A COUNTIF formula doing 1 billion calculations would take a human their entire lifetime — Sheets does it in 0.3 seconds. Mastering spreadsheets is not "basic" — it's powerful.
Charts: Bar, Pie, Line — Stories Data Tells Visually — The right chart changes decisions
Florence Nightingale used a polar area chart in 1858 to convince the British Army that more soldiers died from infection than battle wounds — and changed military medicine forever. A bar chart shows comparisons. A line chart shows trends over time. A pie chart shows proportions of a whole. Choosing the wrong chart type misleads the reader.
Real world: Cricinfo's player performance charts use exactly these types. The bar chart showing Virat Kohli's runs by year is a line chart. The chart showing India's batting lineup contributions is a stacked bar chart.
What is AI? Siri, Autocorrect, Recommendations — Demystifying intelligence
AI is not robots with human consciousness — it's sophisticated pattern recognition. Autocorrect: a small language model that predicts the most likely word given what you've typed and context from millions of previous texts. Netflix recommendations: they tracked that users who watched Kevin Spacey movies AND David Fincher films AND political dramas form a cluster — and built House of Cards for that cluster. Siri recognises your voice because it trained on thousands of hours of human speech.
💡 Concept Spotlight
Data is the New Oil — What That Actually Means
In 2017, The Economist declared "data is the world's most valuable resource." Every app you use is collecting data about you: what you click, how long you pause, where you scroll back up. This data trains AI models that predict your behaviour, target you with ads, and decide what you see next. Understanding data — what it is, how it's collected, and who it benefits — is a critical life skill in 2026, not just a tech skill.
Analogy: Oil needs refining to be useful. Raw data needs cleaning, analysis, and interpretation before it becomes insight. A data scientist is the refinery — turning raw numbers into decisions.
Term 2
July – September 2026
Google Forms + Survey Design — How to collect data that's actually useful
Bad question design produces useless data. "Do you like school?" — biased, vague. "Rate your satisfaction with lunch options (1–5)" — specific, measurable. Survey design is a field with academic literature. Likert scales (Strongly Agree to Strongly Disagree) are a 1932 invention by Rensis Likert, still the most-used rating system in research. Google Forms automatically creates a Sheets spreadsheet from responses — this pipeline from survey → data → analysis is how companies like Amazon understand customer satisfaction.
Google Teachable Machine — Train Your First AI Model — You become the AI trainer
Teachable Machine lets you collect training examples (images/audio), train a neural network in the browser, and deploy it in seconds — all without writing a single line of code. When you train it to recognise "thumbs up" vs "thumbs down", you're experiencing the same fundamental process as training GPT-4: collect labelled examples → adjust model weights → evaluate performance → improve. Scale it up by a trillion and you get ChatGPT.
Real world: Google Photos' ability to find "all photos with dogs" uses the same image classification principle — just trained on 100 million labelled photos instead of your 50 webcam images.
Patterns in Data — Seeing what the numbers are saying
Sorting data reveals outliers. Filtering isolates subsets. Conditional formatting highlights extremes visually. A student who scored 95 in every subject but 30 in Maths is an anomaly — raw data shows this; visualisation makes it obvious. Finding patterns is what turns data into decisions.
Industry Connection
Spotify's "Discover Weekly" playlist is created by analysing your listening history and comparing it to the listening patterns of millions of users with similar taste. The algorithm finds songs that people "like you" love but you haven't heard yet. In 2016, Discover Weekly had 40 million users — and was entirely driven by the kind of data analysis skills you're learning in Class 6.
Term 3
October – December 2026
AI Ethics: Bias, Privacy, Fairness — The critical thinking layer
AI bias: if your training data under-represents a group, your model will perform poorly for that group. Amazon's recruitment AI (trained on historical hiring data that was mostly male) learned to penalise women's CVs and had to be shut down in 2018. COMPAS, a US criminal risk-scoring tool, was found to be twice as likely to falsely flag Black defendants as high-risk. These weren't bugs — they were patterns learned from biased historical data.
Presenting Data as a Story — The difference between data and insight
Data without narrative is noise. "The class average was 72%" is data. "The class average dropped from 84% to 72% after the winter break, suggesting a 2-week holiday disrupts retention" is insight. Presenting data means choosing what to highlight, what context to add, and what recommendation to make. This is what data analysts and scientists are paid to do.
📊
Capstone Project
School Survey Analysis + AI Classifier Demo
Students design a 10-question Google Form survey, collect 30+ responses, clean data in Sheets, create 4 charts, write 3 insights, and train a Teachable Machine image classifier (e.g., recognise different school items). Presented as a "data story" to the class.
Data Literacy Google Sheets Survey Design Teachable Machine AI Ethics Data Storytelling
Weekly Schedule — Class 6
Day Slot 1 (2:00–3:00 PM) Slot 2 (3:00–4:00 PM)
Monday 💻 HTML/CSS Theory + Concept Deep-Dive 💻 Scratch Lab + Web Building
Tuesday ⚡ Electronics Theory + Ohm's Law ⚡ Arduino Circuit Lab
Wednesday 🧠 Data Literacy + AI Concepts 🧠 Sheets Practice + Survey Design
Thursday 💻 Web Project Building ⚡ Circuit Projects + Tinkercad Sim
Friday 🧠 Teachable Machine + AI Exploration 🎮 Open Lab / Catch-Up / Exploration
Saturday 📝 Assessment, Guest Talks, Parent Showcase (Monthly)
Track 1 — Assessment Weightage
Practical Projects (Website Build) 40%
Theory Quiz (HTML/CSS concepts) 25%
Scratch Logic Project 20%
Capstone Showcase + Presentation 15%
Track 2 — Assessment Weightage
Circuit Build Lab (Breadboard + Arduino) 45%
Theory + Safety Quiz (Ohm's Law, components) 25%
Code Accuracy + Comments Quality 20%
Capstone Demo + Schematic Documentation 10%
Track 3 — Assessment Weightage
Sheets Analysis + Data Quality 35%
Survey Design + Collection (30+ responses) 30%
Teachable Machine Demo 20%
Data Story Presentation 15%
Standard VII · Intermediate I · Age 12–13
Logic & Interaction Builders
JavaScript brings webpages to life. Analog sensors let hardware read the physical world. Python speaks to data with near-English clarity. Class 7 is when students stop describing things and start making things respond.
3
Tracks
84
Annual Hours
3
Projects
3
Assessments
7CLASS
💻
Track 1 — JavaScript Fundamentals
JS · DOM · Events · localStorage · Flexbox
Term 1
April – June 2026
Why JavaScript? — The only language every browser understands natively
HTML structures. CSS styles. JavaScript does everything else — logic, animation, data fetching, user interaction. It's the only language browsers can execute directly (without plugins or compilation). Every interactive thing you've ever seen on a website — Google's autocomplete, YouTube's like button, Instagram's infinite scroll — is JavaScript. No other language comes close to its ubiquity in the browser.
Real world: Facebook's React (the library that powers Facebook, Instagram, WhatsApp Web) is JavaScript. Google Maps is JavaScript. Spotify Web Player is JavaScript. You're using JS apps dozens of times per day.
Variables, Data Types & Type Coercion — Storing and the surprising gotchas
JavaScript has 7 primitive types: string, number, boolean, null, undefined, symbol, BigInt. Unlike Java or C++, you don't declare the type — JS infers it. This enables type coercion: "2" + 2 = "22" (string concatenation wins), "2" * 3 = 6 (multiplication converts string to number). This surprises every beginner. Use === (strict equality) instead of == to avoid type coercion bugs. This is the source of more JavaScript bugs than anything else.
DOM Manipulation — JavaScript's superpower: changing the page without reloading
The DOM (Document Object Model) is a tree of JavaScript objects that the browser creates from your HTML. Every element, attribute, and text node is a JavaScript object you can modify. document.querySelector('#btn').textContent = 'Clicked!' changes the button text live. document.createElement('div') adds a new element. This is why React works: it modifies the DOM efficiently instead of reloading the page.
Events: The Heartbeat of Interactivity — How user actions become code execution
Every interaction generates an event: click, keydown, scroll, submit, load. addEventListener('click', handler) registers a function to call when the event fires. The browser maintains an event queue — a list of pending events. The JavaScript event loop processes them one at a time. This single-threaded, event-driven model is why JavaScript feels responsive but can freeze if you run a long synchronous computation.
💡 Concept Spotlight
The JavaScript Event Loop — Why JS Can Be Async
JavaScript is single-threaded — like a chef with one stove. But it handles asynchronous work (network requests, timers) via the event loop. When you call setTimeout(fn, 1000), JS doesn't wait 1 second — it registers the callback and moves on. After 1 second, the callback is added to the queue. The event loop picks it up when the current task finishes. This is why setTimeout(fn, 0) doesn't run immediately — it still goes through the queue.
Analogy: A chef puts pasta to boil (setTimeout), then chops vegetables (current code), checks back when the timer rings (event loop). The chef never stands idle waiting — they always do the next available task.
Term 2
July – September 2026
Arrays & Array Methods — The most-used data structure in JavaScript
Arrays store ordered lists. map() transforms every element (double all numbers), filter() selects elements matching a condition (only numbers > 5), reduce() collapses an array to a single value (sum all numbers). These three methods — map, filter, reduce — come from functional programming and can replace most for loops. React renders lists using .map(). Every modern JS codebase uses them constantly.
Functions: Parameters, Return, Scope — The reusable building blocks of programs
Functions prevent repetition. Scope: variables inside a function don't exist outside (local scope). Variables outside a function can be accessed inside (closure). Arrow functions (=>) are shorter syntax but also change what 'this' refers to. Higher-order functions accept other functions as arguments — this is what makes addEventListener work (you pass a handler function to it).
CSS Animations & Transitions — Making the UI feel alive
@keyframes defines animation steps. animation property applies it. transition: all 0.3s ease makes property changes smooth. JavaScript can trigger animations by adding/removing CSS classes. This is how every modern UI feels smooth — the button scaling on hover, the menu sliding in. Performance tip: animate only transform and opacity (GPU-accelerated), not width or top (causes layout recalculation).
Real world: iOS and Android's entire animation system is GPU-accelerated transform animations. That smooth swipe feeling is transform: translateX(), not position changes.
Term 3
October – December 2026
localStorage and sessionStorage — Persistence without a server
localStorage stores key-value pairs in the browser, persisting between sessions (max 5MB). sessionStorage clears when tab closes. Every website that "remembers" your dark mode preference, shopping cart, or form draft uses localStorage. It's synchronous (blocks the main thread), so don't store large data. JSON.stringify() converts objects to strings for storage; JSON.parse() converts back.
Flexbox — The Layout Revolution — One property to rule all alignment problems
Before Flexbox (pre-2012), centering a div vertically required float hacks, negative margins, or absolute positioning tricks. display: flex makes the container a flex container; justify-content: center centers horizontally; align-items: center centers vertically. flex-direction: column changes from row to column layout. Instagram's photo grid, Gmail's sidebar, and every modern navigation bar uses Flexbox.
Building the Interactive Quiz App — All concepts converge
This capstone applies: arrays (store questions), DOM manipulation (update question display), events (handle answer clicks), CSS animations (result feedback), localStorage (persist high score), functions (calculate score). Students write 150+ lines of real, working JavaScript — the largest program they've written so far. The goal: every part you understand means you can rebuild it from memory.
Common Misconception
"JavaScript and Java are related." — They are completely different languages with different creators, syntax, runtime environments, and use cases. The name was a 1995 marketing decision by Netscape to capitalise on Java's popularity. Java is compiled, statically typed, and runs on the JVM. JavaScript is interpreted, dynamically typed, and runs in browsers. They share about as much as "ham" and "hamburger."
Capstone Project
Interactive Quiz Platform with High Scores
20-question quiz, countdown timer per question, animated result screen with confetti on perfect score, wrong-answer review mode, high-score persistence with localStorage. Students author their own question bank (any school subject). 150+ lines of JavaScript.
JavaScript ES6 DOM API Event Listeners Array Methods localStorage Flexbox CSS Animations
Track 2 — Analog Sensors & Control
Analog I/O · DHT11 · Servo · HC-SR04 · LCD
Term 1
April – June 2026
Analog vs Digital: The Fundamental Signal Divide — Infinite resolution vs binary precision
Digital signals are discrete: 0V or 5V, nothing between. Analog signals are continuous: any value between 0V and 5V. Real-world phenomena — temperature, light, sound, pressure — are analog. Arduino's ADC (Analog-to-Digital Converter) samples the analog pin 10,000 times per second and maps 0V–5V to the numbers 0–1023. That's 10-bit resolution. Professional audio ADCs use 24-bit — 16 million levels instead of 1024.
Real world: Your voice is an analog pressure wave. A phone's microphone converts it to voltage. The ADC samples 44,100 times/second at 16-bit resolution to create an MP3 file. That's why CDs are "better quality" than radio — more samples, more bits.
LDR (Light-Dependent Resistor) — Resistance that changes with light
An LDR is a photoresistor: its resistance decreases as light intensity increases. In bright light: ~1kΩ resistance → more current → higher analogRead value (~900). In darkness: ~1MΩ resistance → barely any current → low analogRead value (~50). Combined with a fixed resistor as a voltage divider, this creates a measurable analog signal. Automatic street lights have used LDRs since the 1960s — they turn on when the LDR resistance rises (darkness) and trigger a relay.
Potentiometer — The Simplest Analog Control — A variable resistor you can turn
A potentiometer is just a resistor with a sliding contact. Turning the knob moves the contact, changing what fraction of the total resistance you see at the output pin. map(analogRead(A0), 0, 1023, 0, 180) converts the 0–1023 ADC value to 0–180 degrees for servo control. Volume knobs, old TV channel selectors, and car stereo balance controls were all potentiometers.
The Serial Monitor — Your Arduino's Conversation — Debugging the invisible
Serial.begin(9600) opens a communication channel at 9600 bits/second. Serial.println(value) sends data to the Arduino IDE's Serial Monitor. This is how you debug: print sensor values, variable states, and decision points. Professional embedded engineers use the same technique — they call it "UART debug logging." Without Serial output, debugging a microcontroller program is like debugging software blindfolded.
Term 2
July – September 2026
DHT11/DHT22 Temperature & Humidity Sensor — Calibrated digital measurement
DHT11 uses a capacitive humidity sensor and a thermistor. A single-wire protocol sends 40-bit data packets (humidity integer + decimal + temperature integer + decimal + checksum). Accuracy: ±2°C, ±5% humidity, samples every 2 seconds (faster will cause errors). DHT22 is more accurate (±0.5°C) and costs 3× more — the classic accuracy vs cost tradeoff. This same tradeoff exists in industrial sensors costing ₹5,000 vs ₹50,000.
Real world: Every modern weather station, museum humidity controller (to protect art), and HVAC system uses DHT-like sensors. The Louvre uses humidity sensors to protect the Mona Lisa.
Servo Motor — Precision Angular Control — Not just spin: control exactly where to stop
A servo motor contains a DC motor, gearbox, and feedback potentiometer. The control circuit compares the target angle to the current angle and drives the motor to close the difference. This is closed-loop feedback control — a concept that also controls aircraft autopilots, CNC machines, and robot arms. Servo.write(90) sends a 1.5ms PWM pulse to position the horn at 90°. The 50Hz PWM signal is the industry standard for RC servos.
I2C LCD Display — Talking to peripherals with just 2 wires
I2C (Inter-Integrated Circuit) is a protocol where one master device (Arduino) talks to many slave devices (LCD, sensors, OLED) on just 2 wires: SDA (data) and SCL (clock). Each device has a unique 7-bit address (the LCD is usually 0x27 or 0x3F). The master sends the address first; only the matching slave responds. This is how a single Arduino can control up to 128 different devices simultaneously.
💡 Concept Spotlight
I2C Protocol — One Bus, Hundreds of Devices
I2C was invented by Philips in 1982 for communication between chips on a circuit board. It uses synchronous serial communication: the clock line (SCL) ticks, and data bits are read on each tick from the SDA line. Addresses prevent signal collision — like a party phone line where you say the person's name before talking. Modern smartphones use I2C to communicate between the processor and accelerometer, gyroscope, battery gauge, and touchscreen — all on the same 2-wire bus.
Analogy: A classroom with one teacher (master) and 128 students (slaves). The teacher says "Student 0x27, what is the temperature?" — only student 0x27 responds. Everyone else stays silent. That's I2C addressing.
Term 3
October – December 2026
HC-SR04 Ultrasonic Sensor — Echo Timing for Distance — The same principle as bat echolocation
The HC-SR04 sends 8 ultrasonic pulses at 40kHz, then measures the time for the echo to return. Distance = (echo_time_microseconds × 0.0343cm/μs) / 2. The /2 is because the sound travels to the object AND back. Sound travels 343m/s at 20°C — this changes with temperature, which is why precision ultrasonic rangefinders include a temperature correction. Range: 2cm to 400cm. Accuracy: ±3mm. Car parking sensors use the same principle.
Real world: Bats navigate in total darkness using echolocation at 20–200kHz. Submarines use sonar (Sound Navigation And Ranging) at 1–100kHz for the same purpose. Medical ultrasound uses 1–20MHz to image soft tissue.
Auto Night Lamp — Sensor + Actuator Integration — The complete feedback loop
LDR reads light level → analogRead() returns 0–1023 → map() converts to 0–255 → analogWrite() sets LED brightness inversely. When it's dark (LDR value low), LED shines bright. When it's bright, LED dims. This is a closed-loop feedback system: sensor reads environment → microcontroller processes → actuator responds. This same architecture controls aircraft autopilots, rocket stabilization, and climate control systems.
Industry Connection
Modern cars contain 50–100 microcontrollers (ECUs). Each controls a specific subsystem: engine management, ABS brakes, airbag deployment, window motors, climate control. Each reads analog sensors (temperature, pressure, wheel speed) and drives actuators (motors, injectors, valves). Class 7 IoT students are building the exact same sensor→microcontroller→actuator loops that automotive engineers design professionally.
🚗
Capstone Project
Smart Parking Sensor with Distance Display
HC-SR04 measures distance (2cm–300cm), LED bar shows proximity (10 LEDs decreasing as object approaches), buzzer beeps faster as distance decreases (like a car parking sensor), I2C LCD shows exact distance in cm. State: <10cm → continuous buzzer alarm. Simulates real automotive reverse parking assist.
Analog ADC DHT Sensor Servo Control I2C Protocol HC-SR04 Closed-Loop Control
🧠
Track 3 — Python for Data
Python · pandas · matplotlib · EDA
Term 1
April – June 2026
Why Python? The Language of Data, AI & Automation — Designed for humans first, computers second
Python was created by Guido van Rossum in 1991, named after Monty Python (not the snake). The design philosophy: "There should be one — and preferably only one — obvious way to do it." Python code reads like English: if temperature > 100: print("boiling"). This clarity is why scientists, researchers, and data analysts choose Python over C or Java. It's the #1 language in Stack Overflow's 2024 Developer Survey. NASA, CERN, Instagram, and Spotify all use Python extensively.
Real world: Instagram's backend was Python/Django for years. Dropbox's desktop client is Python. The algorithm that detected gravitational waves (Nobel Prize 2017) was implemented in Python.
Variables, Types & Dynamic Typing — Python figures out the type for you
Python is dynamically typed: x = 5 (integer), x = "hello" (string), x = 3.14 (float) — same variable, different types, Python tracks it automatically. Unlike Java where you write int x = 5, Python infers. This flexibility speeds development but can cause bugs: accidentally treating a string as a number raises a TypeError instead of silently computing wrong results.
Lists, Dictionaries & Data Structures — How Python organises collections
Lists are ordered, mutable sequences: [1, 2, 3]. Dictionaries are key-value mappings: {"name": "Ravi", "age": 13}. Python's list comprehensions — [x*2 for x in range(10)] — create lists in one elegant line. Under the hood, Python lists are dynamic arrays (like Java's ArrayList). Dictionaries use hash tables — O(1) average lookup time — which is why checking if a key exists in a dict is faster than searching a list.
Functions: def, Parameters, Return, Scope — The unit of reuse in programming
Every large Python codebase is built from functions. def calculate_bmi(weight, height): return weight / (height**2). Functions eliminate copy-paste code. Default parameters: def greet(name, greeting="Hello") allows calling greet("Ravi") or greet("Ravi", "Namaste"). *args and **kwargs accept variable numbers of arguments — used everywhere in library code.
Term 2
July – September 2026
pandas: The Spreadsheet of Python — DataFrames for data analysis at any scale
pandas was created by Wes McKinney at AQR Capital Management in 2008 for financial data analysis. A DataFrame is a 2D table (rows × columns) — like a supercharged spreadsheet that can handle millions of rows in memory. df.describe() shows count, mean, std, min, quartiles, max in one call. df.dropna() removes missing values. df.groupby('team').sum() aggregates by group. These operations that take minutes in Excel take milliseconds in pandas.
Real world: Every major bank's risk analytics team uses pandas daily. JPMorgan, Goldman Sachs, and most hedge funds use Python/pandas for financial modeling.
matplotlib: Charts as Code — Reproducible, precise visualisation
matplotlib was modelled after MATLAB and released in 2003. plt.plot(x, y) for line charts, plt.bar(categories, values) for bar charts, plt.scatter(x, y) for scatter plots. Unlike Excel charts, matplotlib charts are code — you can reproduce them exactly, version-control them in Git, and generate thousands of charts automatically. The entire scientific publishing workflow uses matplotlib for paper figures.
Data Cleaning: Handling Missing Values & Inconsistencies — The unsexy 80% of data science
Real datasets are messy. df.isnull().sum() counts missing values per column. df.fillna(df.mean()) replaces NaN with column averages. df['name'].str.strip().str.lower() standardises text. Duplicate rows: df.drop_duplicates(). Data cleaning typically takes 60–80% of a data scientist's time. The IPL dataset students use has inconsistent team names ("Mumbai Indians", "MI", "Mumbai") — cleaning these is the first real task.
💡 Concept Spotlight
Why pandas is Called pandas
The name comes from "Panel Data" — a term from econometrics for multi-dimensional datasets. The core data structure, DataFrame, was inspired by R's data.frame. pandas is built on top of NumPy (numerical Python), which stores data in contiguous memory blocks for speed. A pandas operation on 1 million rows runs in <1 second because the actual computation is in highly optimised C code, not Python. Python is just the user-friendly interface.
Analogy: pandas is like a powerful Excel where instead of clicking cells, you write commands. The advantage: you can automate, script, and run the same analysis on any dataset of any size without changing the code.
Term 3
October – December 2026
groupby & Aggregation: Finding Patterns in Categories — The SQL GROUP BY of Python
df.groupby('team')['runs'].mean() calculates average runs per team in one line. Under the hood: split data into groups → apply aggregation function → combine results. This split-apply-combine pattern is at the heart of data analysis and the reason SQL's GROUP BY exists. The IPL question "which team wins most often at Wankhede?" is answered with .groupby(['team','venue'])['result'].count().
Correlation: Does More Practice = Better Scores? — The most misunderstood concept in data
df.corr() computes Pearson correlation coefficients. Range: -1 to +1. +1 = perfect positive relationship. 0 = no linear relationship. -1 = perfect inverse. BUT: correlation ≠ causation. Ice cream sales correlate with drowning deaths — both increase in summer. The real cause is hot weather. This distinction is the most important concept in statistics. Every misleading news headline about data confuses correlation with causation.
Common Misconception
"Correlation means one thing causes the other." — Spurious correlations are endless: Nicolas Cage films per year correlates with swimming pool drownings (r=0.67). US spending on science correlates with suicides by hanging. These are mathematical coincidences. Causation requires: correlation + temporal sequence + mechanism + controlled experiment. Data shows patterns; experiments establish causes.
🏏
Capstone Project
IPL Season Analyser — Python EDA Report
Load real IPL 2008–2023 dataset. Clean inconsistent team names. Answer 8 analytical questions with groupby/agg. Create 6 charts (bar, line, heatmap, scatter). Identify 3 correlations. Export PDF summary. Present findings as a "cricket analytics report" — the kind Cricinfo and ESPN publish.
Python Basics pandas DataFrames matplotlib Data Cleaning groupby/agg Correlation Analysis
Weekly Schedule — Class 7
Day Slot 1 (2:00–3:00 PM) Slot 2 (3:00–4:00 PM)
Monday 💻 JavaScript Theory + Concept Deep-Dive 💻 DOM Manipulation Lab
Tuesday ⚡ Analog Sensor Theory ⚡ Arduino Sensor Lab
Wednesday 🧠 Python Theory + Live Coding 🧠 pandas / Data Lab
Thursday 💻 JS Project Building ⚡ Sensor Integration Projects
Friday 🧠 Data Visualisation + Chart Design 🎮 Open Lab / Exploration
Saturday 📝 Assessment, Code Review, Guest Talks
Track 1 Assessment
JS Project (Quiz App functionality) 40%
Theory Quiz (JS concepts, DOM) 25%
Code Quality & Comments 20%
Live Demo & Explanation 15%
Track 2 Assessment
Sensor Circuit Build + Calibration 40%
Protocol Theory Quiz (I2C, ADC, PWM) 25%
Code Accuracy + Serial Output 20%
Capstone Demo 15%
Track 3 Assessment
EDA Notebook (Pandas analysis) 40%
Data Cleaning Quality 25%
Visualisations (6 charts) 20%
Written Insights + Presentation 15%
Standard VIII · Intermediate II · Age 13–14
Full-Stack & ML Foundations
Python becomes object-oriented. IoT systems communicate over protocols. Machine learning models make real predictions. Class 8 is when students go from scripting individual files to building systems with multiple interconnected parts.
3
Tracks
99
Annual Hours
3
Projects
3
Assessments
8CLASS
💻
Track 1 — Python OOP & Django
OOP · Django · MVT · ORM · Deployment
Term 1
April – June 2026
Object-Oriented Programming: Classes & Objects — Modelling the real world in code
A class is a blueprint; an object is an instance. class Car: defines wheels, engine, speed. car1 = Car() creates one specific car. Every video game character, every bank account, every user profile in every app is an object. OOP's four pillars: Encapsulation (hide internal details), Inheritance (child class gets parent's properties), Polymorphism (same method, different behaviour), Abstraction (expose only what's needed). Instagram's "Post" class has attributes (image, caption, likes) and methods (like(), comment(), share()).
Real world: Python's everything-is-an-object philosophy means even integers are objects: (5).bit_length() returns 3. This uniformity makes Python both elegant and occasionally surprising.
Inheritance & Method Overriding — Don't repeat yourself; extend instead
class AdminUser(User): inherits all User methods and adds ban_user(). The child class can override parent methods: User.greet() says "Hello", AdminUser.greet() says "Hello, Admin." super() calls the parent class method from within the child. Python supports multiple inheritance (class C(A, B):) — powerful but dangerous. Django's class-based views use this heavily: ListView, DetailView, and CreateView all inherit from a base View class.
Django: The MVT Architecture — How the web actually works at the framework level
Django = Model (database schema and access layer) + View (business logic) + Template (HTML generation). A request hits urls.py → routed to a View function → View queries the Model → Model returns data → View renders a Template with the data → HTTP response sent back. This separation means: your database structure doesn't need to match your HTML structure. Django was built at Lawrence Journal-World newspaper (2003) to build web apps at "newspaper speed" — fast iteration, tight deadlines.
Django ORM: Python Instead of SQL — Object-relational mapping magic
Instead of writing SELECT * FROM users WHERE age >= 18, you write User.objects.filter(age__gte=18). Django generates optimised SQL. More examples: Post.objects.all() → SELECT * FROM posts. Post.objects.create(title="Hello") → INSERT INTO posts... Post.objects.filter(author=user) → SELECT WHERE author_id=..., then a JOIN. The double underscore (__) in filter() is Django's field lookup syntax — age__gte means "age greater than or equal to."
💡 Concept Spotlight
Why OOP? The Problem It Solves
Before OOP, large programs were procedural: long lists of functions with global variables that any function could modify. As programs grew to millions of lines, this became unmaintainable — changing one function could break 20 others. OOP solved this with encapsulation: an object owns its data, and external code can only interact through defined methods. This is why your phone's banking app can run alongside Instagram without them interfering with each other's data.
Analogy: A vending machine is OOP. Its internal mechanism (how it dispenses, stores money) is hidden (encapsulation). You interact only via the button interface (method). You can't reach in and take money directly — the interface enforces the rules.
Term 2
July – September 2026
Django Models & Database Migrations — Code-first database design
You define your database schema in Python: class Post(models.Model): title = models.CharField(max_length=200). Then python manage.py makemigrations generates SQL. python manage.py migrate applies it. Migrations are version-controlled database changes — you can roll back a bad schema change. This is revolutionary: your database schema lives in code, tracked in Git, with full history. Before Django, schema changes were manual SQL scripts with high risk of error.
Django Templates & Template Inheritance — DRY HTML with blocks
{% extends "base.html" %} makes a template inherit from a parent. {% block content %} defines a replaceable region. Child templates only override specific blocks — the header, footer, and navigation are in base.html once. {% for post in posts %} iterates over a QuerySet. {{ post.title }} renders a variable. This is the Jinja2 syntax (Jinja2 was inspired by Django's template engine). Every major web framework has an equivalent: Blade (Laravel), EJS (Node), Thymeleaf (Java).
User Authentication: Login, Logout, Registration — Identity on the web
Django provides authentication out of the box: User model, login/logout views, @login_required decorator. Passwords are hashed with PBKDF2 (salted SHA256) before storage — never stored in plain text. A salt is a random string added before hashing so identical passwords have different hashes (defeats rainbow table attacks). This is why "Forgot Password" always resets your password — the site can't recover the original because it doesn't know it.
Industry Connection
Instagram was built in 8 weeks by 3 engineers using Django. On launch day (October 2010), 25,000 users signed up. By end of day, they had 100,000. Within 18 months: 30 million users. Django handled this with minimal changes. In 2012, Facebook bought Instagram for $1 billion. The Django ORM, templates, and admin panel that Class 8 students use are the same tools used to build billion-dollar products.
Term 3
October – December 2026
Django Admin: The Free Backend — Why startups use it for years
python manage.py createsuperuser creates an admin account. Visit /admin/ — Django generates a full CRUD interface for every registered model. No code required. Filter, search, bulk-edit, custom actions. Instagram's early content moderation team used Django admin to review reported posts. Most startups use it internally for 2–3 years before needing a custom admin panel. Register your model with @admin.register(Post) and specify list_display = ['title', 'author', 'created_at'].
File Uploads & Media Handling — Handling user content safely
image = models.ImageField(upload_to='posts/') handles file uploads. MEDIA_ROOT specifies the server directory. Never store uploaded files in your codebase — use separate media storage (AWS S3, Cloudinary) in production. Image validation: check file extension AND magic bytes (the first 4 bytes of a file that identify its type) — users can rename .exe files to .jpg. Django's form validation handles this if you use ImageField with Pillow installed.
Deploying to PythonAnywhere — Your first live server
PythonAnywhere provides free Python web hosting. You upload your project, configure a WSGI file (Web Server Gateway Interface — the standard interface between Python web apps and web servers), and set your domain. Production differences: DEBUG = False, ALLOWED_HOSTS set, static files served separately (python manage.py collectstatic), database moved from SQLite to PostgreSQL for reliability. Every deployment teaches a lesson no tutorial can.
📝
Capstone Project
PREKSHA Academy Blog CMS — Live on PythonAnywhere
Full Django CMS: Teacher login, write/edit/delete posts with image uploads, tag-based filtering, student comments with moderation queue. Bootstrap 5 responsive templates. Deployed live — every pair gets a URL to share with parents. Django Admin for content management.
Python OOP Django MVT ORM + Migrations Auth + Sessions File Uploads PythonAnywhere
Track 2 — Multi-Sensor IoT Systems
L298N · I2C · OLED · SD Card · Line Following
Term 1
April – June 2026
L298N Motor Driver: Controlling High-Current Devices — Why Arduino can't drive a motor directly
Arduino's digital pins output 5V at maximum 40mA. A DC motor draws 250mA–2A. If you connect a motor directly to Arduino, you'll pull too much current, drop voltage on the 5V rail, and crash the processor (or burn it). The L298N is an H-bridge circuit: 4 transistor switches that let a small control signal (from Arduino) switch a separate high-current supply (motor battery) to the motor. It can source up to 2A continuously. This is the same principle Tesla uses: a 12V signal controls a 400V, 300A motor controller.
Real world: Every robot, drone, CNC machine, and electric vehicle uses motor drivers. Tesla's Model 3 motor controller handles 300,000W. Your L298N handles 25W. Same principle, 12,000× different scale.
OLED Display with SPI/I2C — High-contrast pixel-level control
OLED (Organic LED) pixels emit their own light — no backlight needed, so blacks are truly black (pixel off = no light). The SSD1306 OLED driver chip handles a 128×64 pixel buffer. You write to the buffer in Arduino memory, then flush to the display over I2C (100kHz) or SPI (8MHz — much faster). The Adafruit GFX library provides drawText(), drawBitmap(), drawLine(). Understanding framebuffers here is the same concept used in game rendering and GPU programming.
SD Card Logging: Data Persistence on Hardware — Recording sensor history
The SD library uses SPI communication to write FAT32-formatted files to an SD card. SD.begin(chipSelectPin) mounts the filesystem. File f = SD.open("data.csv", FILE_WRITE) opens a file. f.println(timestamp + "," + temperature) writes a CSV row. This is how black boxes on aircraft record flight data — the same FAT32 filesystem, the same SPI-connected flash storage, just with aerospace-grade shock and fire resistance.
Term 2
July – September 2026
Line Following Robot: Proportional Control — From bang-bang to smooth
Phase 1 (Bang-Bang): if leftmost IR sensor → turn hard right; if rightmost → turn hard left. Simple but oscillates violently. Phase 2 (Proportional): error = (sum of weighted sensor positions). motorSpeed += Kp * error. Kp is a tuning constant — too high and it oscillates, too low and it responds sluggishly. This P-control is the foundation of PID control used in every precision system. Students experience empirically why Kp matters — a hands-on introduction to control theory taught in 4th-year engineering courses.
Capacitive Soil Moisture Sensor — More reliable than resistive sensors
Resistive sensors measure conductivity by passing current through soil — they corrode within weeks due to electrolysis. Capacitive sensors measure the dielectric constant of soil (how much it resists forming an electric field) — no current flows through the soil, so no corrosion. Fully wet soil has dielectric constant ~80. Dry soil has ~3. The sensor outputs a voltage proportional to capacitance. Better accuracy, longer lifespan. Used in commercial smart irrigation systems (Israel's precision irrigation technology uses this in the Negev Desert).
Relay Module & Optocoupler: Electrical Isolation — Protecting logic from power circuits
A relay is an electrically operated switch: a small coil creates a magnetic field that closes a mechanical contact. The optocoupler provides electrical isolation between the Arduino (5V logic circuit) and the relay coil (potentially higher voltage), preventing voltage spikes from damaging the microcontroller. This is the same principle used in industrial PLC (Programmable Logic Controller) systems that switch factory machinery from computer signals.
💡 Concept Spotlight
Proportional Control — The Engineering Foundation
output = Kp × error. If error is large, output is large. If error is zero, output is zero. This simple relationship underlies cruise control (target speed − current speed = error → throttle adjustment), thermostat (target temp − current temp = error → heater power), drone altitude hold, and camera autofocus. The full PID (Proportional-Integral-Derivative) controller adds error accumulation (I) and error rate of change (D). SpaceX's Falcon 9 landing uses a PID controller to balance the rocket on its engine thrust.
Analogy: You're driving and drift slightly right. You don't yank the wheel — you apply gentle correction proportional to how far off you are. That's P-control. You're doing it without thinking, every time you drive.
Term 3
October – December 2026
Auto Plant Watering System: Complete Feedback Loop — From sensor reading to physical action
Capacitive soil sensor reads moisture (0–1023 ADC) → mapped to 0–100% → if below threshold: open relay (water pump on) for 3 seconds → re-check moisture → repeat. DS3231 RTC chip maintains accurate time even with power cuts (has its own coin cell battery). Timestamps every watering event to SD card. OLED shows: current moisture, last-watered time, pump status. This is a complete closed-loop embedded system — the same architecture as industrial irrigation controllers costing ₹50,000.
Race Day: Line Follower Competition — Engineering meets competition
Students race their line-following robots on a standard PREKSHA track: 2m straight, S-bend, 90° turns, T-junction (robot must choose correct branch). Fastest lap wins. This competition format is used in international robotics competitions (Robocon, WRO). The variables: IR sensor threshold calibration, Kp tuning, motor speed limits. Students learn that the "best" algorithm still fails with poor calibration. Software correctness + hardware calibration = actual performance.
🌱
Capstone Project
Automatic Plant Watering System with Data Log
Capacitive soil sensor + relay + water pump + DS3231 RTC + SD card logging + OLED display. Timestamps every watering event. Configurable threshold via Serial. Demonstrated with a real potted plant over 1 week — SD card data shows automated watering events. Presented with time-series graph plotted from logged CSV.
L298N Motor Driver OLED Display SD Card SPI P-Control RTC DS3231 Relay + Optocoupler
🧠
Track 3 — Machine Learning Foundations
Scikit-Learn · Regression · Classification · Evaluation
Term 1
April – June 2026
What IS Machine Learning? The Core Idea — Algorithms that improve from data, not explicit rules
Traditional programming: programmer writes rules → computer follows rules → output. Machine learning: programmer feeds examples (data + correct answers) → algorithm finds patterns → rules emerge automatically. Example: to write a spam filter with explicit rules, you'd list thousands of spam phrases. With ML, you feed 10,000 labelled emails (spam/not spam) and the algorithm extracts the patterns itself. The rules it finds are often too complex for a human to write explicitly — 50,000 features influencing the decision.
Real world: Gmail's spam filter uses ML. When you mark something as spam, you're providing a training signal that improves the model for all Gmail users.
Supervised vs Unsupervised Learning — Labelled data or pattern discovery
Supervised: every training example has a label (email → spam/not spam, photo → dog/cat, patient data → disease/no disease). The model learns to predict the label from features. Unsupervised: no labels — the model finds structure itself. K-means clustering finds groups of similar data points without being told what the groups are. Amazon's customer segmentation (which customers are similar enough to target together) is unsupervised clustering. Your school subject rankings are supervised — you label which scores are good/bad.
Train/Test Split: The Cardinal Rule of ML — Never evaluate on data you trained on
from sklearn.model_selection import train_test_split. Typically 80% train, 20% test. The model never sees test data during training. Why? A model that memorised training data would score 100% on training data but fail on new data — it learned patterns specific to those examples, not general rules. This is overfitting. Testing on held-out data measures real-world performance. It's like the difference between practising with the question paper and writing the actual exam.
💡 Concept Spotlight
Overfitting: Memorising vs Learning
An overfit model is like a student who memorised every past exam paper word-for-word but can't solve a new problem. Perfect training score, terrible test score. The model "learned" noise in the training data as if it were signal. Solutions: more training data, simpler model, regularisation (penalise model complexity), dropout (neural networks), cross-validation. Underfitting is the opposite: model too simple to capture the real pattern. The goal is the sweet spot in between — generalisation.
Analogy: A student who learns only to recognise dogs from breed photos will fail to recognise a mixed-breed. A student who learns the concept of "four legs, fur, barks" will recognise any dog. The second student generalises; the first overfit to specific examples.
Term 2
July – September 2026
Linear Regression: Finding the Best Line Through Data — The simplest predictive model
y = mx + b, but generalised to multiple features: y = w1x1 + w2x2 + ... + b. Training finds the weights (w) that minimise the sum of squared errors — the distance between predicted and actual values. For predicting exam score from study hours: every extra hour of study increases score by w1 points (the weight). Coefficients are interpretable — you can explain exactly why the model made a prediction. This interpretability makes linear regression still widely used in medicine, economics, and policy despite being 200 years old (least squares method was invented by Gauss in 1795).
Decision Tree Classifier: If/Else Trees That Learn — ML you can visualise
A decision tree splits data at each node based on the feature that best separates the classes. "Is study_hours > 5?" → Yes branch → "Is attendance > 80%?" → class: Pass. The tree is interpretable — you can follow the path from root to leaf and understand why a prediction was made. Random Forest is 100–500 decision trees trained on random subsets of data — their votes are averaged. More accurate than one tree, less interpretable. Used in loan approval, medical diagnosis, fraud detection.
Real world: Spotify's genre classification for new songs uses ensemble methods (multiple trees voting). When a new song is uploaded, these models predict its genre and mood tags within seconds.
Model Evaluation: Accuracy, Confusion Matrix, F1 — One number doesn't tell the whole story
Accuracy = correct / total. But: a model that always predicts "not fraud" on a 99% not-fraud dataset has 99% accuracy but misses every fraud! This is the accuracy paradox. Confusion matrix: True Positive (correctly predicted fraud), False Positive (predicted fraud but wasn't), True Negative (correctly predicted not fraud), False Negative (predicted not fraud but was fraud). Precision = TP/(TP+FP). Recall = TP/(TP+FN). F1 = harmonic mean of precision and recall. In medical diagnosis, recall (catching all actual cases) often matters more than precision.
Term 3
October – December 2026
Feature Engineering: Making Data ML-Ready — Often matters more than model choice
Raw data rarely works directly with ML algorithms. Categorical variables (city names) must be one-hot encoded (a column per city, 0 or 1). Numerical features must be scaled (StandardScaler: mean=0, std=1) so features with large ranges don't dominate. Missing values filled (imputation). Date features decomposed into day_of_week, month, is_weekend. A well-engineered dataset with a simple model often outperforms a raw dataset with a complex model. 80% of a data scientist's work is feature engineering.
Deploying an ML Model with Gradio — From notebook to web app in 10 lines
import gradio as gr. gr.Interface(fn=predict, inputs=["number","number"], outputs="text").launch() creates a web UI around your trained model. The user fills in study hours and attendance — your model predicts the exam score. Gradio hosts the app at a public URL instantly. This is the pipeline: collect data → train model → evaluate → deploy. Students experience the full ML workflow before any deep learning concepts are introduced.
Common Misconception
"More complex models are always better." — Random Forest with 500 trees can actually perform worse than Linear Regression on small datasets with clean, linear relationships. Model complexity should match data complexity. "All models are wrong, but some are useful" (George Box, 1976). The best model is the simplest one that solves the problem acceptably. Using a neural network to predict linear data is like using a excavator to plant a seed — technically works, practically absurd.
📈
Capstone Project
Student Score Predictor — Deployed Gradio App
UCI Student Performance dataset. EDA with 6 visualisations. Feature engineering (encode categorical, scale numerical). Train + compare Linear Regression vs Random Forest. Confusion matrix, F1 score comparison. Feature importance chart. Live Gradio app: enter student attributes → predict final score with confidence. Structured experiment log documenting each model variant.
Scikit-Learn Linear Regression Random Forest Feature Engineering Confusion Matrix Gradio Deploy
Weekly Schedule — Class 8
Day Slot 1 (2:00–3:15 PM) Slot 2 (3:15–4:30 PM)
Monday 💻 Python OOP / Django Theory 💻 Django Lab (Models, Views, Templates)
Tuesday ⚡ Motor/Sensor Theory + Circuit Design ⚡ Hardware Lab + Tinkercad Validation
Wednesday 🧠 ML Theory + Scikit-Learn Concepts 🧠 Model Training Lab (Google Colab)
Thursday 💻 Django Admin + Deployment ⚡ Robot Build + Line Follower Tuning
Friday 🧠 Feature Engineering + Evaluation 🎮 Open Lab / Catch-Up
Saturday 🏆 Race Day (Line Follower) / Assessment / Code Review
Track 1 Assessment
Django App (Models, Views, Auth working) 40%
OOP Design Quiz (class, inheritance) 25%
Live Deployment + URL submitted 20%
Code quality + Git commit history 15%
Track 2 Assessment
Plant Watering System (working demo) 40%
SD Card Log + Time-series Graph 25%
Line Follower Race Placement 20%
P-control Explanation + Kp Justification 15%
Track 3 Assessment
Model Performance (R² or F1 score) 35%
Experiment Log (5+ model variants) 25%
Gradio App live + working 25%
ML Concept Quiz (overfitting, evaluation) 15%
Standard IX · Advanced I · Age 14–15
Connected Systems & Intelligent Machines
Class 9 is the year everything talks to everything. REST APIs design the contract between frontend and backend. MQTT connects physical sensors to cloud dashboards. Convolutional neural networks learn to see. Students build systems that span multiple devices, protocols, and continents — and they work.
3
Tracks
108
Annual Hours
6
Projects
4
Assessments
9CLASS
💻
Track 1 — Node.js & REST APIs
Node.js · Express · MongoDB · JWT · Postman · Render
Term 1
April – June 2026
Why Node.js? The Non-Blocking I/O Revolution
In 2009 Ryan Dahl was watching a file-upload progress bar on Flickr. The server was blocked — doing nothing while waiting for the disk to write. Traditional servers spawned one OS thread per connection: 10,000 users = 10,000 threads = server out of RAM. Node.js uses a single thread with an event loop. When waiting for a database query, the event loop switches to handle 100 other requests instead of blocking. It's not multi-threaded — it's smarter about not waiting. LinkedIn rebuilt their mobile backend in Node.js in 2011: servers dropped from 30 to 3, handling 20× more traffic at lower cost.
Real world: Every real-time feature you use — WhatsApp Web messages, Google Docs live cursors, Zomato order tracking, Swiggy live ETA — runs on Node.js or a similar event-loop server. The key insight: most web server time is spent waiting for databases and APIs, not computing. Node.js uses that wait time productively.
REST API Design: The Contract Between Frontend and Backend
REST (Representational State Transfer) was defined by Roy Fielding in his 2000 PhD dissertation — not as a technology but as an architectural style. Six constraints: stateless (no server memory between requests), uniform interface (standard HTTP methods), client-server separation, cacheable, layered system, code on demand. In practice: GET /api/tasks retrieves all. POST /api/tasks creates one. PUT /api/tasks/:id replaces. PATCH /api/tasks/:id partially updates. DELETE /api/tasks/:id removes. HTTP status codes are semantically meaningful: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 409 Conflict, 500 Server Error. Using the wrong code (returning 200 for an error) breaks every client that relies on standard behaviour.
Real world: Zomato's app makes ~50 separate REST API calls from the moment you open it to completing a payment: search restaurants, fetch menu, add to cart, calculate delivery fee, verify coupon, create order, update order status, trigger payment, send notification. Each is a separate REST endpoint.
Express.js: Middleware Architecture
Express doesn't come with authentication, logging, CORS handling, or rate limiting. It comes with one concept: middleware. app.use(fn) adds a function to the request processing chain. Each middleware receives (req, res, next) and either handles the request or calls next() to pass it to the next middleware. Morgan logs requests: app.use(morgan('combined')). Helmet adds security headers: app.use(helmet()). Every Express app is a pipeline of middleware functions. Understanding this makes reading any Express codebase trivial — find what's in app.use() and you understand the entire request processing chain.
MongoDB: Document Databases vs Relational Databases
MongoDB stores JSON-like documents: {"name":"Ravi","posts":[{"id":1,"title":"Hello","published":true}]}. No fixed schema — add fields to some documents without migrating the entire database. Horizontal scaling: add more servers to distribute data (sharding). SQL databases use tables with fixed schemas, foreign keys, and JOIN operations for relationships. Rule of thumb: SQL for financial transactions, complex relationships, and data requiring strict ACID guarantees (banking, inventory). MongoDB for flexible, nested, rapidly-changing data (social media posts, user profiles, product catalogs with varying attributes). Many applications use both: MongoDB for flexible product data, PostgreSQL for orders and payments.
💡 Concept Spotlight
JWT: Stateless Authentication That Scales to Millions
Traditional sessions: server stores session data in memory or Redis, checked on every request. Doesn't scale across 10 servers — which one has the session? JWT solves this: user logs in → server creates Header.Payload.Signature token using HMAC-SHA256 with a secret key → token sent to client → client sends it with every request in the Authorization: Bearer header → server verifies signature (no database lookup needed). The payload contains user ID, role, and expiry time. Without the secret key, you cannot forge a valid JWT — modifying the payload invalidates the signature. Netflix uses JWT for 200M+ users, never storing session state on the server.
Analogy: A hotel key card is like a session — the hotel controls it, must check with the hotel to verify. A signed notarised document is like JWT — the signature proves authenticity without checking with anyone. Self-contained proof, infinitely scalable.
Term 2
July – September 2026
Mongoose: Bringing Schema Validation to MongoDB
MongoDB has no schema by default — you can insert any JSON. But production apps need validation. Mongoose adds schemas on top: const taskSchema = new Schema({title:{type:String,required:true,maxLength:200},priority:{type:String,enum:['low','medium','high'],default:'medium'},dueDate:{type:Date}}). Now MongoDB enforces your rules before saving — invalid data throws a ValidationError before hitting the database. Mongoose also provides: query helpers (Task.findById()), virtual fields (fullName computed from firstName+lastName, never stored), pre/post hooks (hash password before saving), and populate() for joining documents. Used in almost every Node.js/MongoDB production app worldwide.
Security Middleware: Helmet, CORS, Rate Limiting
app.use(helmet()) adds 12 security headers in one line: Content-Security-Policy prevents XSS injection, X-Frame-Options prevents clickjacking, Strict-Transport-Security forces HTTPS. CORS: Cross-Origin Resource Sharing controls which domains can call your API. Without CORS configuration, your React app at localhost:3000 can't call your API at localhost:5000 — browsers block it. Rate limiting: app.use(rateLimit({windowMs:15*60*1000,max:100})) allows 100 requests per 15 minutes per IP — prevents API abuse and DDoS. These three middleware layers take 10 minutes to add and protect against 80% of common web attacks.
Postman: API Testing as Engineering Discipline
Postman is the standard tool for API development and testing across the industry. Set HTTP method, URL, headers (Authorization: Bearer {{token}}), JSON body. Environments store variables ({{baseUrl}}, {{token}}) — switch from localhost to production in one click. Collections organise requests by resource. Test scripts run automatically: pm.test("Status 201",()=>pm.response.to.have.status(201)); pm.test("Has ID",()=>pm.expect(pm.response.json().id).to.exist). Chain requests: extract the token from the login response and automatically set it as the {{token}} variable for subsequent requests. Students write 18 test cases covering all success paths and error paths (invalid token, missing field, duplicate entry, non-existent resource ID).
Industry Connection
Every tech company maintains a Postman (or Insomnia) collection for their internal APIs. At Swiggy, the API collection has 500+ requests covering every endpoint. New engineers are onboarded by importing the collection — they can test every endpoint immediately without reading documentation. At PREKSHA, the student's submitted Postman collection IS their API documentation. A well-organised collection is worth more than a README.
Term 3
October – December 2026
Deploying to Render + MongoDB Atlas — First Production Server
Render.com hosts Node.js apps for free. MongoDB Atlas provides cloud MongoDB with free 512MB clusters. Deployment: connect GitHub repo → Render detects Node.js → runs npm install → starts server. Environment variables (MONGODB_URI, JWT_SECRET, ALLOWED_ORIGIN) set in Render's dashboard — never in code, never in Git. Production differences from local: DEBUG=false, no stack traces in error responses, rate limiting enforced, CORS restricted to your actual frontend domain. The first deployment invariably fails — a missing environment variable, a hardcoded localhost URL, a case-sensitive filename issue on Linux. These failures teach more than any tutorial. Fixing them cements the distinction between "it works on my machine" and production engineering.
API Documentation with README and OpenAPI
A deployed API without documentation is useless to others. README.md includes: base URL, authentication instructions, endpoint table (Method, Path, Description, Auth required), request/response examples for each endpoint, error codes reference. Optional: generate OpenAPI/Swagger spec automatically — express-jsdoc-swagger reads JSDoc comments from route handlers and generates interactive docs at /api-docs. Students learn that code is written once but read many times — documentation is not optional, it's part of the deliverable.
Common Misconception
"PUT and PATCH are the same thing." — PUT replaces the entire resource: if you PUT a task with only {title:"New"}, all other fields (dueDate, priority, tags) are deleted or reset to defaults. PATCH partially updates: PATCH {priority:"high"} changes only priority, leaving all other fields untouched. Using PUT when you mean PATCH is a data-loss bug. Always use PATCH for partial updates in production APIs. This is why React's useState setter is more like PATCH (merges with existing state in class components) than PUT.
🗂️
Capstone Project
RESTful Task Management API — Live on Render
Node/Express/MongoDB API: register, login (JWT), CRUD tasks with tags/priority/deadline, filter by status/date range. Helmet + CORS + rate limiting security stack. Postman collection with 18 tests covering all paths. README with full API documentation. Live on Render + MongoDB Atlas. Students import each other's collections and test APIs cross-team.
Node.js + Express MongoDB + Mongoose JWT Authentication REST Design Principles Postman Testing Render Deployment
Track 2 — ESP32 Cloud IoT & GPS
ESP32 · Wi-Fi · MQTT · Mosquitto · Node-RED · NEO-6M GPS · Firebase
Term 1
April – June 2026
ESP32: Why This ₹250 Chip Changed IoT Forever
Arduino Uno: 8-bit ATmega328P, 16MHz, 2KB RAM, no wireless. ESP32: dual-core Xtensa LX6 32-bit, 240MHz, 520KB RAM, Wi-Fi 802.11 b/g/n, Bluetooth 4.2 + BLE, 12-bit ADC (4096 levels vs Arduino's 1024), hardware AES encryption, touch sensor inputs, hall sensor, ULP co-processor for deep sleep. Same Arduino IDE — identical programming syntax. Espressif (Shanghai, China) ships 100+ million ESP32 chips per year. Every TP-Link smart plug, Wipro smart bulb, and Xiaomi smart sensor in your home almost certainly runs an ESP32 or its sibling ESP8266. A ₹250 chip that connects a sensor to the entire internet — the democratisation of IoT.
Real world: Amazon's Alexa Echo Dot 4th gen uses an Espressif-based Wi-Fi module. Your home's Tuya-based smart devices (sold under 100+ brand names) all run ESP32 firmware. Shelly (popular in Europe) uses ESP32 for smart relays that control mains electricity from a smartphone app.
MQTT Protocol: Designed for the Worst Networks on Earth
MQTT (Message Queuing Telemetry Transport) was invented by IBM's Andy Stanford-Clark in 1999 for monitoring oil pipelines in the desert via satellite. Satellite bandwidth cost ₹15/kilobyte. Design goals: minimal bandwidth, minimal battery, reliable delivery on unreliable networks. Pub/Sub architecture: client publishes to a topic string (home/bedroom/temperature). Any subscriber to that topic receives the message instantly. The broker (Mosquitto, HiveMQ, AWS IoT Core) handles routing — publishers and subscribers never communicate directly. Three QoS levels: 0 = fire and forget (fastest, may lose), 1 = at least once (may duplicate), 2 = exactly once (slowest, guaranteed). Facebook Messenger uses MQTT for message delivery — your chat messages are MQTT packets.
Mosquitto: Running Your Own IoT Backbone
Mosquitto is the most widely deployed MQTT broker. apt install mosquitto on the school Raspberry Pi. Edit /etc/mosquitto/mosquitto.conf: listener 1883, allow_anonymous true (for learning — never in production without authentication). mosquitto_pub -h localhost -t "test/hello" -m "World" publishes from terminal. mosquitto_sub -h localhost -t "test/#" subscribes to all subtopics of test/. The # wildcard matches any multi-level subtopic. + matches one level: home/+/temperature matches home/bedroom/temperature and home/kitchen/temperature but not home/bedroom/sensor1/temperature. Students run their own broker — experiencing first-hand that "the cloud" is just someone's computer running a service they could run on a ₹2,000 RPi Zero.
💡 Concept Spotlight
MQTT Pub/Sub vs REST Request-Response
REST is synchronous and interrogative: client asks, server answers, connection closes. For 1,000 IoT devices polling every 1 second: 1,000 HTTP requests/second, each with ~500 bytes of HTTP headers = 500 KB/s of overhead just for headers. MQTT is asynchronous and reactive: device connects once, publishes ~20-byte payloads when data changes, subscriber receives instantly. 1,000 devices publishing every 30 seconds: ~33 messages/second, 2-byte overhead each. 250× less bandwidth. More importantly: MQTT is push-based — no polling needed. A temperature alert the moment the threshold is crossed, not 30 seconds later when the next poll happens.
Analogy: REST is like calling your friend every 5 minutes to ask "Any news?" MQTT is subscribing to their WhatsApp broadcast — they push a message when something happens, you receive it instantly. Pub/Sub is reactive. REST is interrogative. IoT needs reactive.
Term 2
July – September 2026
Node-RED: Visual IoT Orchestration
Node-RED (IBM, 2013) was designed for the Internet of Things by Nick O'Leary — connecting devices without deep expertise. Flow diagram: MQTT-in node receives message → JSON-parse node extracts values → gauge node renders on dashboard → function node applies logic (if temp > 38: trigger alert) → Telegram notification node sends alert. The dashboard is accessible from any browser on the LAN at http://[RPi-IP]:1880/ui. NASA's Jet Propulsion Laboratory used Node-RED for Mars mission telemetry visualisation. Its simplicity is genuine — senior engineers use it for rapid prototyping before writing production code. The PREKSHA class dashboard: any teacher can see all sensor readings on a projector without touching code.
Real world: At Bosch, factory floor engineers use Node-RED to connect PLCs (Programmable Logic Controllers) to cloud dashboards without involving software engineers. The same drag-and-drop tool students use in Class 9 is used in ₹500 crore factories.
Multi-Sensor JSON Payloads: Structured IoT Data
Instead of publishing raw numbers to separate topics (one topic per sensor), professional IoT systems publish structured JSON to a single topic: {"device":"esp32_lab1","ts":1718000000,"temp":28.5,"humidity":72,"pressure":1013.2,"aqi":45}. Benefits: single MQTT subscription per device, timestamp for data logging, device ID for multi-device setups, atomic data snapshot (all readings at the same moment). JSON is the universal data exchange format — 70% of web APIs use it. The ESP32 serialises sensor values using ArduinoJson library: doc["temp"]=dht.readTemperature(); serializeJson(doc, payload); client.publish("sensors/env", payload).
Deep Sleep and Power Optimisation on ESP32
ESP32 active mode: ~250mA at 3.3V = 825mW. On a 1000mAh LiPo battery: ~4 hours. ESP32 deep sleep: ~10μA = 0.033mW. Deep sleep with 30-second wake interval: average power = (250mA × 0.5s active) / 30s + 10μA asleep ≈ 4.2mA average. Same 1000mAh battery: ~238 hours (10 days). esp_deep_sleep_start() sends the ESP32 to deep sleep. esp_sleep_enable_timer_wakeup(30 * 1000000) sets 30-second wakeup timer. This technique extends field sensor battery life from hours to months. Smart agricultural sensors (in mango orchards, vineyards) transmit temperature data every 30 minutes and run on a single charge for 6 months — deep sleep is why.
Term 3
October – December 2026
NEO-6M GPS: 24 Satellites, ₹150 Module
GPS (Global Positioning System) uses 24 satellites in medium Earth orbit at 20,200km altitude. Each satellite broadcasts its precise location and the exact time on an atomic clock. Your receiver measures the travel time of the signal (at speed of light) from each satellite — 1 nanosecond error = 30cm position error. With 4+ satellites visible, trilateration gives 3D position. NEO-6M outputs NMEA 0183 sentences over UART at 9600 baud: $GPGGA,123519,1848.9600,N,07256.8800,E,1,08,0.9,392.0,M,... — time in HHMMSS, latitude in degrees+minutes, longitude, fix quality, satellite count, HDOP (accuracy estimate), altitude. TinyGPS++ library parses these 40-character strings into decimal degrees (18.816°N, 72.948°E) usable for Google Maps.
Real world: Ola/Uber driver tracking: the driver's phone sends GPS coordinates every 15 seconds to Firebase. Your app's map fetches them and moves the marker. Students build this exact pipeline in Class 9: ESP32+GPS → Firebase → Google Maps HTML. The only differences are phone vs ESP32, and cellular vs Wi-Fi.
Firebase Realtime Database: Cloud Glue for IoT
Firebase RTDB stores JSON and pushes changes to all subscribers in real time. From ESP32: HTTP PATCH request to https://[project].firebaseio.com/gps.json updates the GPS object. From the browser: database.ref('gps').on('value', snapshot => moveMapMarker(snapshot.val())) subscribes to changes — the callback fires instantly whenever ESP32 updates the value. No polling required. The Google Maps marker moves within 1–2 seconds of the GPS reading. Firebase's free tier: 1GB storage, 10GB/month transfer, 100 simultaneous connections — more than enough for a classroom IoT project. In 2016, Firebase processed 1 billion database operations per day.
Mind fact: The GPS constellation's atomic clocks are so precise that without relativistic corrections (Einstein's General and Special Relativity), GPS would drift by 10km per day. The satellites' clocks tick slightly faster (Special Relativity: moving clocks slow down) and slightly slower (General Relativity: clocks in weaker gravity speed up). Both corrections are applied in the GPS firmware. Einstein's 1905 and 1915 papers are literally inside your maps app.
🛰️
Capstone Project
Wi-Fi Environment Monitor + Live GPS Tracker Dashboard
Part 1: ESP32 publishes DHT22/BMP280/MQ-135 data via MQTT to RPi Mosquitto. Node-RED flow: live gauges, line chart, Telegram alert above 38°C. Part 2: ESP32 + NEO-6M → Firebase RTDB → Google Maps HTML with live moving marker. Students carry the GPS tracker and watch their position update on the classroom projector in real time.
ESP32 + Wi-Fi MQTT Protocol Mosquitto Broker Node-RED Flows NEO-6M + NMEA Firebase RTDB Deep Sleep Power Opt.
🧠
Track 3 — Deep Learning & CNNs
Neural Networks · TensorFlow/Keras · CNN · MobileNetV2 · TFLite · Streamlit
Term 1
April – June 2026
Why Neural Networks? The Feature Engineering Bottleneck
Scikit-learn models work on tabular data — rows and columns of numbers. Images don't naturally fit tables. To classify cats vs dogs with Random Forest, a researcher must manually engineer features: average colour histogram (256 bins), edge density from Sobel filter, Fourier descriptors for shape, histogram of oriented gradients. Each feature requires domain expertise and weeks of experimentation. Neural networks eliminate this bottleneck: feed raw pixels directly, the network discovers which pixel patterns matter automatically during training. The features a deep neural network learns are often impossible for humans to articulate — local receptive fields, Gabor-like edge detectors, colour blobs — but they're mathematically optimal for the task at hand.
Real world: Before deep learning, the best image classification systems in 2011 achieved ~74% accuracy on ImageNet using hand-engineered features. In 2012, AlexNet (a deep CNN) achieved 85% using raw pixels — a gap so large it changed the entire field overnight. Every computer vision product today is a direct descendant of that moment.
Neurons, Layers, and Activation Functions
A single neuron computes: output = activation(w₁x₁ + w₂x₂ + ... + wₙxₙ + bias). Weights determine how much each input influences the output. Bias shifts the activation threshold. Activation function introduces non-linearity. ReLU(x) = max(0,x): zero for negatives, identity for positives. Without activation, stacking N layers is mathematically identical to one layer (just a different linear transformation). ReLU is why deep networks can represent non-linear functions. Sigmoid maps to (0,1) — historically used for output layers in binary classification. Softmax maps to probability distribution summing to 1 — used for multi-class classification output. The Class 9 CNN for plant disease uses Softmax with 38 outputs.
Backpropagation: The Chain Rule Running Backwards
Forward pass: input pixels → through all layers → produce prediction. Loss: cross-entropy measures how wrong the prediction was (-log(correct_class_probability)). If correct class probability was 0.9: loss = -log(0.9) = 0.105. If 0.01: loss = -log(0.01) = 4.6 — much higher penalty for wrong predictions. Backward pass: chain rule of calculus computes the gradient of the loss with respect to every weight in the network. ∂Loss/∂w tells us: if this weight increased by 0.001, how much would the loss change? Gradient descent: w = w - learning_rate × ∂Loss/∂w — nudge every weight slightly to reduce loss. Repeat across millions of training examples. After millions of iterations, the loss converges to a minimum and the model predicts accurately.
💡 Concept Spotlight
Convolutional Neural Networks: Parameter Sharing Changes Everything
A fully connected layer on a 224×224×3 image = 150,528 input values × every neuron in layer 1. For 512 neurons: 77 million weights in just the first layer. Completely intractable. CNNs solve this with parameter sharing: a 3×3×3 filter (kernel) has 27 weights. It slides across the entire image applying the same 27 weights everywhere — detecting the same edge/texture pattern regardless of where it appears. 32 filters detect 32 different features. A Conv2D(32, 3, 3) layer has only 32×27 = 864 weights instead of 77 million. This is why: a cat's whiskers should be detected whether they appear top-left or bottom-right. The same weights should fire for whiskers anywhere.
Analogy: A CNN filter is like a stamp. The same stamp impression counts wherever it lands on the page. Instead of asking "is there an edge at pixel (47,83)?", the filter asks "is there an edge anywhere?" — one set of weights, millions of locations. This is why CNNs generalise across image positions.
Term 2
July – September 2026
Transfer Learning: Standing on Giants' Shoulders
MobileNetV2 was trained by Google on 14 million ImageNet images across 1000 categories, running 3 weeks on 32 Google Cloud TPUs. It already encodes knowledge about edges (early layers), textures (middle layers), and object parts (late layers). You add 2 layers for your specific task (38 plant disease classes): GlobalAveragePooling2D() collapses spatial dimensions, Dense(38, activation='softmax') classifies. Freeze the base model (keep Google's weights), train only your new head (2 layers vs 155 in the full network). Result: 85%+ validation accuracy in 10 minutes on a free Colab GPU. Training from scratch on the same dataset: 40% accuracy in the same time. This is why every AI startup does transfer learning — starting from pre-trained weights is not cheating, it's engineering wisdom.
Data Augmentation: Making 10,000 Images from 1,000
tf.keras.preprocessing.image.ImageDataGenerator(rotation_range=30, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, zoom_range=0.2, brightness_range=[0.8,1.2]). Each training image is randomly transformed before each epoch — the model never sees the same transformation twice. A leaf photo rotated 25° is still a diseased leaf. Flipped horizontally: still diseased. Zoomed 15%: still diseased. This makes the model invariant to these transformations, reducing overfitting by 10–20%. Without augmentation on 1000 images, the model memorises the exact 1000 photos. With augmentation, it sees effectively infinite variations.
Training Callbacks: Teaching the Model to Learn Efficiently
EarlyStopping(monitor='val_loss', patience=5): stop training if validation loss doesn't improve for 5 consecutive epochs. Saves time, prevents overfitting past the optimal point. ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=3): halve the learning rate when stuck. Coarse learning rate makes large jumps initially (fast progress). Fine learning rate makes tiny adjustments near the minimum (better accuracy). ModelCheckpoint(filepath='best_model.h5', save_best_only=True): saves the best-performing weights, not the final weights (which may be worse if training overshot). These three callbacks combined make training roughly 2× more efficient with no code changes to the model architecture.
Term 3
October – December 2026
TFLite: Shrinking Models for the Physical World
The full Keras MobileNetV2 model: 14MB, requires TensorFlow runtime (~500MB). TFLite converter applies quantisation: convert 32-bit float weights to 8-bit integers. 14MB → 3.5MB (4× smaller). 32-bit float multiply on CPU: slow. 8-bit integer multiply: fast hardware acceleration on ARM chips. Accuracy impact: typically <0.5% drop for int8 quantisation on image classifiers. The TFLite model runs on a Raspberry Pi Zero (512MB RAM), an Android phone, or even an ESP32-S3 with PSRAM. This is Edge AI — intelligence running directly on the sensor hardware, with no internet connection needed. A farmer in a field with no signal can diagnose crop disease on-device.
Streamlit: From Notebook to Web App in 20 Lines
st.title("Crop Disease Detector"). uploaded = st.file_uploader("Upload a leaf photo", type=['jpg','png']). if uploaded: img = Image.open(uploaded).resize((224,224)). arr = tf.keras.preprocessing.image.img_to_array(img) / 255.0. pred = model.predict(np.expand_dims(arr,0))[0]. st.image(img). st.success(f"Disease: {class_names[np.argmax(pred)]} ({max(pred)*100:.1f}% confidence)"). st.info(f"Treatment: {treatment_dict[class_names[np.argmax(pred)]]}"). That's the complete app — 12 lines. Deployed to Streamlit Community Cloud via GitHub in 2 minutes, public URL, free hosting. The same architecture (image in → model predict → result out) is used by every consumer AI product from Google Lens to ophthalmology diagnosis apps.
Common Misconception
"More training epochs always improve the model." — After a certain point, continued training causes overfitting: the model memorises training examples rather than learning generalisable patterns. Validation accuracy peaks, then decreases while training accuracy continues rising. The gap between training and validation accuracy is the overfitting gap. EarlyStopping prevents this automatically. The optimal number of epochs varies by dataset size, model complexity, and learning rate — it cannot be predetermined, only observed. Always monitor validation loss, never just training loss.
🌿
Capstone Project
Crop Disease Detector — Live Streamlit App
PlantVillage dataset (54,000 images, 38 classes). MobileNetV2 transfer learning + augmentation + EarlyStopping + ReduceLROnPlateau. Evaluation: accuracy/loss curves, confusion matrix for top 10 most-confused classes, per-class F1 scores. TFLite int8 quantised model (3.5MB). Streamlit app: upload leaf → disease name + confidence bar + treatment recommendation. Deployed to Streamlit Community Cloud. Team of 2 — one per track section.
TensorFlow/Keras CNN Architecture MobileNetV2 Transfer Learning Data Augmentation Training Callbacks TFLite Quantisation Streamlit Deployment
Weekly Schedule — Class 9
Day Slot 1 (2:00–3:30 PM) Slot 2 (3:30–5:00 PM)
Monday 💻 Node.js / REST Theory + JWT Deep-Dive 💻 Express + MongoDB + Postman Lab
Tuesday ⚡ ESP32 + MQTT Architecture ⚡ IoT Hardware + Node-RED Lab
Wednesday 🧠 CNN + Backprop Theory 🧠 TensorFlow + Transfer Learning Lab (Colab)
Thursday 💻 Rate Limiting, Security, Deployment ⚡ GPS + Firebase Live Map Demo
Friday 🧠 TFLite Export + Streamlit Deploy 🎤 Industry Guest Talk / Open Lab
Saturday 📝 API Assessment + CNN Demo + GPS Live Walk Demo
Track 1 Assessment
All 18 Postman tests passing 40%
JWT + Security middleware working 25%
Live deployment + API README docs 20%
REST + idempotency concept quiz 15%
Track 2 Assessment
MQTT + Node-RED dashboard live 35%
GPS live map demo (marker moves during walk) 30%
MQTT vs REST quiz + IoT architecture diagram 20%
Deep sleep power calculation lab report 15%
Track 3 Assessment
Model val accuracy >85% on PlantVillage 35%
Streamlit app live + Streamlit Cloud URL 30%
CNN + backprop concept quiz 20%
TFLite export + size vs accuracy tradeoff report 15%
Standard X · Advanced II · Age 15–16
Real-Time, Reactive & LLM Foundations
React changes how students think about UI — as a function of state, not DOM manipulation. Computer vision turns a ₹2,500 Raspberry Pi into a security system. Transformers power ChatGPT, and Class 10 students understand why. GitHub becomes a professional identity, not just code storage.
3
Tracks
108
Annual Hours
6
Projects
4
Assessments
10CLASS
💻
Track 1 — React, Redux & MERN
React 18 · Hooks · Redux Toolkit · Socket.io · MERN · GitHub Actions
Term 1
April – June 2026
React: UI as a Pure Function of State
React was created at Facebook in 2013 to solve one specific problem: live notification badges were consistently out of sync with the actual unread count. Traditional DOM manipulation maintained multiple sources of truth — UI updated in some places but not others. Jordan Walke's insight: make the UI a mathematical function. UI = f(state). When state changes, React re-derives the entire UI. The virtual DOM diffing algorithm (React Fiber, rewritten 2017) makes this efficient — only changed DOM nodes are actually updated. The mental model shift: stop thinking "I'll update this span's text" and start thinking "I'll update the state, and the UI will reflect it automatically." Instagram, WhatsApp Web, Airbnb, Discord, and Netflix all use React.
Real world: Swiggy's restaurant search page is a React SPA. When you type "biryani", React doesn't reload the page — it updates the restaurantList state variable, React re-renders the list component, and only the list cards change. The header, footer, and filter panel remain untouched. This is why modern web apps feel instant.
useState and useEffect: React's Two Most Important Hooks
useState creates a state variable and a setter: const [count, setCount] = useState(0). Calling setCount(5) schedules a re-render with the new value. React batches multiple setCount calls in the same event handler into one render pass. useEffect runs side effects after render: data fetching, event subscriptions, timers. Dependency array controls frequency: [] runs once on mount (fetch initial data), [userId] runs when userId changes (fetch new user's data), no array runs after every render (almost always a bug). The most common React error: useEffect data fetch without an AbortController → memory leak when component unmounts. Every production React app has hit this.
Redux Toolkit: Escaping the Prop Drilling Nightmare
Prop drilling: state in a top-level component needs to reach a deeply nested component — passed through 5 intermediate components that don't use it, just pass it down. Any change to the state shape breaks all 5 intermediate components. Redux Toolkit solves this: a global store. createSlice() generates actions and reducers in one function: counterSlice = createSlice({name:'counter', initialState:0, reducers:{increment: state => state+1}}). useSelector(state => state.counter) reads from store in any component. useDispatch() sends actions. Redux DevTools lets you inspect every state change in sequence and "time-travel" backwards to debug. Real rule: useState for local component state, useContext for nearby shared state, Redux for state shared by many distant components (user auth, shopping cart, theme).
React Router v6: Client-Side Navigation Without Page Reloads
Traditional navigation: every URL change = full HTTP request = server returns new HTML = full page render (slow, flash). React Router: URL changes are handled in JavaScript — the browser updates the URL bar without making an HTTP request. The component tree is updated based on the new URL pattern. <Route path="/products/:id" element={<ProductDetail />} /> matches /products/42 and passes id="42" via useParams(). Nested routes build layouts: <Route path="/dashboard" element={<DashboardLayout />}> wraps child routes that render inside the layout. useNavigate() programmatically navigates after form submission. React Router is used by every React SPA — there is no alternative that matches its adoption.
💡 Concept Spotlight
React Virtual DOM: Why Diffing Makes UI Fast
Browser DOM manipulation triggers a cascade: style recalculation → layout (reflow) → paint → composite. Each step reads from and writes to memory. Manipulating 100 DOM nodes can trigger layout recalculation for the entire document — even nodes that didn't change. React's virtual DOM is a plain JavaScript object tree, orders of magnitude cheaper to manipulate than real DOM. State change → React builds a new virtual DOM tree → diffs against the previous one (O(n) using heuristics: same key = same component, different tag = replace) → applies only changed real DOM operations. A 10,000-row table update that changes one cell: React touches exactly 1 real DOM node, not 10,000.
Analogy: Instead of repainting an entire wall every time a picture frame tilts, React makes a blueprint, compares it to the previous blueprint, identifies exactly which frames moved, and only rehangings those. The blueprint comparison is cheap. Only the physical work (real DOM changes) is expensive.
Term 2
July – September 2026
Socket.io: Full-Duplex Real-Time Communication
HTTP is half-duplex: client sends request, server sends response, connection closes. WebSockets establish a persistent full-duplex TCP connection — both sides can push at any time. Socket.io wraps WebSockets with: automatic reconnection, fallback to HTTP long-polling for environments that block WebSockets, and a room/namespace system. Server: io.to('room-name').emit('event', data) broadcasts to everyone in the room. Client: socket.on('event', handler) listens for events. The PREKSHA Class 10 chatroom implements: room join/leave, message broadcast, typing indicator (keydown event → emit 'typing' → clear after 3s inactivity → emit 'stop-typing'), emoji reactions (click → emit 'react', server broadcasts new count to room). Real users — other Class 10 students — use this chatroom for project coordination from the day it's deployed.
GitHub Actions: Your First CI/CD Pipeline
CI/CD (Continuous Integration/Continuous Deployment) means: every time you push code, an automated pipeline verifies it's safe to deploy and deploys it. The .github/workflows/ci.yml file defines the pipeline: on push → checkout code → install Node.js → run npm ci (clean install) → run ESLint (code style) → run TypeScript compiler check → run Jest unit tests → run next build → deploy to Vercel. If any step fails, the pipeline stops and deployment is blocked — broken code never reaches production. Netflix deploys code ~4,000 times per day via CI/CD. Each deployment is tested automatically in under 10 minutes. Students see their first pipeline failure (a missed semicolon detected by ESLint before deployment) and experience why this workflow exists.
Stripe Test Mode: Payment Integration Without Real Money
Stripe provides a complete test environment: test API keys, test card numbers (4242 4242 4242 4242 = always succeeds), test webhooks. Payment flow: React checkout page → call your Express API to create a PaymentIntent (never create it client-side — the amount could be modified) → API returns client_secret → Stripe.js takes over, renders its hosted card input (PCI DSS compliance — card numbers never touch your server), → user pays → Stripe calls your webhook endpoint with payment_intent.succeeded event → your server updates order status in MongoDB. Students experience the real production payment flow. The test/production distinction (just swap API keys) is what makes payments deployable.
Industry Connection
Instagram was built in 8 weeks by 3 engineers using Node.js/MongoDB for the backend and launched October 2010. By end of day 1: 25,000 users. By end of week 1: 100,000. By end of 2010: 1 million. All on a simple REST API + MongoDB architecture very similar to what Class 10 students build. In 2012, Facebook acquired Instagram for $1 billion — 13 employees, largely self-taught. The tech stack that powers billion-dollar companies is not magic. It's exactly what you're building.
Term 3
October – December 2026
Full MERN Integration: Connecting All the Layers
React SPA (Vercel CDN) — sends requests to — Express API (Railway server) — queries — MongoDB Atlas (cloud cluster). Three separate deployments, three separate environments, all connected via HTTPS. CORS config: app.use(cors({origin:'https://yourapp.vercel.app'})) on Express — only your frontend domain can call the API. JWT in httpOnly cookies (not localStorage) — prevents XSS attacks from stealing tokens. Redux state management: cartSlice (add/remove/update items), authSlice (user info, JWT), orderSlice (order history). Git workflow: feature branch → PR → code review → merge triggers CI/CD → Vercel auto-deploys. First merge conflict: the most educational experience of the project.
Developer Portfolio: GitHub as Professional Identity
By Class 10, students have 4 years of PREKSHA projects: websites, APIs, IoT systems, ML models. A well-maintained GitHub profile showing consistent commits, real deployed projects, and clean README files is more compelling to many hiring managers than a résumé. Students build a simple portfolio page (HTML/CSS or React) listing all projects with description, tech stack, live demo link, and GitHub source link. Deploy to GitHub Pages (free). At Google, Meta, and Flipkart, engineering hiring managers spend 30 seconds on a GitHub profile before reading a résumé. A profile with 5 deployed projects wins that 30 seconds. Students maintain this for the rest of their career.
Common Misconception
"localStorage is the right place to store JWT tokens in React." — localStorage is accessible by any JavaScript on the page, including malicious scripts from XSS (Cross-Site Scripting) attacks. A stored JWT in localStorage can be stolen by an XSS attack and used to impersonate the user. The correct approach: store JWT in an httpOnly cookie, which JavaScript cannot read at all — only the browser sends it automatically with requests. This is what every banking app, OAuth provider, and serious web app does. Using localStorage for tokens is a security vulnerability in production, not just a bad practice.
🛒
Capstone Projects
MERN E-Commerce + Real-Time Class Chatroom
MERN Store: React + Redux + Node/Express + MongoDB Atlas + Stripe test checkout + email confirmation + admin dashboard. Deployed Vercel + Railway. Team of 2 with feature-branch Git workflow + GitHub Actions CI/CD. Real-Time Chat: Socket.io rooms, typing indicators, emoji reactions, MongoDB message history. Both products live and used by real PREKSHA students.
React 18 + Hooks Redux Toolkit React Router v6 Socket.io WebSockets MERN + Stripe GitHub Actions CI/CD
Track 2 — Raspberry Pi, OpenCV & Cloud Control
RPi GPIO · Python · ThingSpeak · OpenCV MOG2 · Haar Cascade · Flask · Telegram
Term 1
April – June 2026
Raspberry Pi: Full Linux on a ₹4,000 Board
Raspberry Pi 4B: Quad-core Cortex-A72 ARM, 1.8GHz, 4GB LPDDR4 RAM, full Debian Linux (Raspberry Pi OS), HDMI 4K output, USB 3.0, Gigabit Ethernet, microSD boot, 40-pin GPIO header (3.3V logic, max 16mA per pin). Arduino Uno: 8-bit AVR, 16MHz, 2KB RAM, bare-metal C++, 5V GPIO, no OS. The critical difference: RPi runs a full OS and can execute Python, OpenCV, TensorFlow, Node.js, and web servers simultaneously. Arduino runs one sketch loop with deterministic microsecond timing. Combined use (RPi + Arduino): RPi sends high-level movement goals to Arduino over I2C or UART. Arduino executes them with microsecond-precision PWM. Boston Dynamics' Spot robot uses exactly this architecture: main computer for perception and planning, embedded controllers for joint servos.
Real world: Self-checkout kiosks at Big Bazaar and Reliance Trends use a Raspberry Pi for the screen/payment/interface (Linux), connected to a microcontroller for the barcode scanner and weighing scale (real-time). The entire kiosk IS an RPi + microcontroller architecture.
RPi GPIO in Python: gpiozero and RPi.GPIO
import RPi.GPIO as GPIO. GPIO.setmode(GPIO.BCM). GPIO.setup(18, GPIO.OUT). GPIO.output(18, GPIO.HIGH). The gpiozero library adds abstraction: led = LED(17); led.on(). button = Button(18); button.when_pressed = callback. PWM: buzzer = PWMOutputDevice(pin); buzzer.value = 0.5 (50% duty cycle). Critical warning: RPi GPIO is 3.3V — connecting a 5V signal destroys the GPIO pin permanently (no reset possible). Level shifters are required when interfacing 5V Arduino with 3.3V RPi. GPIO pins have a maximum current of 16mA each and 50mA total across all GPIO pins simultaneously — violating this blows the GPIO controller. Students learn to always calculate current before wiring.
ThingSpeak: REST-Based IoT Data Hosting
ThingSpeak (MathWorks, Cambridge UK) provides free cloud IoT channels with 8 data fields each. ESP32 sends data with a single HTTP GET: https://api.thingspeak.com/update?api_key=WRITEKEY&field1=28.5&field2=72. ThingSpeak timestamps and stores each entry. Retrieve last value: https://api.thingspeak.com/channels/ID/feeds/last.json. Retrieve last 100 entries: .../feeds.json?results=100. Web dashboard JavaScript fetches this every 5 seconds and plots with Chart.js. Bidirectional control: ESP32 reads a "control channel" every 5 seconds — the web dashboard writes fan_speed=75 to that channel, the ESP32 reads it and adjusts L298N PWM. The 5-second polling delay is the round-trip latency.
💡 Concept Spotlight
Images Are Just Matrices of Numbers — OpenCV's Core Insight
import cv2. frame = cap.read() returns a NumPy array of shape (480, 640, 3): 480 rows × 640 columns × 3 colour channels (Blue, Green, Red). frame[y, x] = [B, G, R] value at pixel (x,y). frame[200:300, 100:200] slices a 100×100 region. cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) converts to single-channel greyscale. Every OpenCV operation is NumPy array manipulation — because OpenCV uses NumPy arrays internally. Once you understand that an image is a matrix, every operation becomes intuitive: blurring = weighted average of neighbouring pixels (convolution with a Gaussian kernel), edge detection = measuring the rate of change of pixel values (gradient), thresholding = setting pixels above/below a value to 0 or 255.
Analogy: A photograph is a spreadsheet. Each cell contains three numbers (Blue, Green, Red from 0–255). Photo editing is just arithmetic on those numbers. Increase all Red values → redder image. Subtract one spreadsheet from another → see what changed between two frames (background subtraction).
Term 2
July – September 2026
MOG2 Background Subtraction: Statistical Background Modelling
cv2.createBackgroundSubtractorMOG2(history=500, varThreshold=50, detectShadows=True). MOG2 maintains a statistical model of the background using a Mixture of Gaussians for each pixel. "Background" is the statistical average of what a pixel looked like over the last 500 frames. When the current frame deviates significantly (beyond varThreshold standard deviations from the background model), that pixel is flagged as foreground. The model automatically adapts to slow changes (gradual lighting shifts, swaying leaves) while flagging sudden changes (a person walking in). Shadow detection: shadows (darker foreground) are classified separately from solid objects. Contour extraction (cv2.findContours) then groups foreground pixels into blobs — large blobs indicate significant motion.
Haar Cascade Face Detection: The Viola-Jones Algorithm (2001)
Paul Viola and Michael Jones (2001) created the first real-time face detector. It uses a cascade of simple classifiers applied in stages on a sliding window. Stage 1: Does this window have a light forehead region above a dark eye region? No → reject (fast). Stage 2: Does it have two symmetrical dark eye regions? No → reject. ...Stage N: passes all N tests → face detected. Each stage processes 200ms of face features. Non-face windows are rejected after Stage 1 (~95% of all windows). Face windows pass all N stages. Speed: 15fps face detection on a 2001 desktop. On Raspberry Pi today: 10+ fps. Cascade files (haarcascade_frontalface_default.xml) are XML files with learned threshold values. face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5) finds faces at multiple scales.
Flask MJPEG Streaming: Video Without WebRTC
MJPEG (Motion JPEG): send JPEG frames sequentially over HTTP with Content-Type: multipart/x-mixed-replace boundary. The browser displays each frame as it arrives — creating the appearance of live video. No special client code, no WebRTC complexity, no additional libraries. Flask route: @app.route('/video_feed') returns a Response object with a generator that yields JPEG bytes. Any browser pointing to http://[RPi-IP]:5000/video_feed sees live video. MJPEG is less bandwidth-efficient than H.264 (no inter-frame compression), but trivial to implement. Used in: baby monitors, IP cameras, museum exhibit kiosks, and any embedded Linux system that needs to stream video simply.
Industry Connection
Zepto's dark stores (10-minute delivery warehouses) use computer vision for inventory management: cameras scan shelves, OpenCV-based systems detect missing items and trigger restocking alerts. The same MOG2 + contour detection students build in Class 10 is used commercially — Zepto uses more sophisticated deep learning, but started with exactly this pipeline. Understanding the fundamentals makes the advanced systems comprehensible.
Term 3
October – December 2026
Telegram Bot API: Notifications from Any Hardware
Every Telegram bot has a token (BOT_TOKEN). The Telegram Bot API is a simple REST API: POST https://api.telegram.org/bot{TOKEN}/sendMessage with body {chat_id:..., text:"Alert!"} sends a text message. sendPhoto sends a photo: files={photo: open('snapshot.jpg','rb')}. Getting chat_id: send /start to the bot → call getUpdates endpoint → find your chat_id. python-telegram-bot library abstracts this: bot = telegram.Bot(token=BOT_TOKEN). bot.send_photo(chat_id=CHAT_ID, photo=open('alert.jpg','rb'), caption=f"Intruder detected at {datetime.now()}"). The alert arrives on every device where you're logged into Telegram — phone, tablet, computer — within 1 second. Integration with the AI intruder system: 30-second cooldown prevents alert spam during prolonged motion events.
Two Complete IoT Products: Contrast and Synthesis
Smart Home Dashboard: periodic sensor data (pull model — web dashboard requests ThingSpeak data every 5 seconds, bidirectional control via polling). AI Intruder Alert: event-driven (push model — alerts fire instantly when a face is detected, streaming video is continuous). These two paradigms — scheduled polling vs event-driven push — represent the two fundamental IoT communication patterns. Industrial SCADA systems use both: periodic telemetry (temperature every 30 seconds) for trend monitoring, event-driven alerts (pressure spike) for immediate action. Class 10 students have built both with real hardware, real deployment, and real users (classmates who receive the Telegram alerts).
🏠
Capstone Projects
Smart Home Cloud Dashboard + AI Intruder Alert System
Smart Home: ESP32 → ThingSpeak → HTML/JS dashboard with Chart.js live graph, bidirectional L298N fan control (PWM), auto-fan threshold, LED light scheduler. AI Intruder: RPi Camera → MOG2 motion → Haar face verify → Telegram snapshot alert + Flask MJPEG live stream. Both demonstrated live with real hardware to class and parents. Students can trigger alerts by walking past the camera.
Raspberry Pi + GPIO ThingSpeak Cloud IoT OpenCV + MOG2 Haar Face Cascade Flask MJPEG Stream Telegram Bot API
🧠
Track 3 — LLMs, Transformers & Automation
Transformer Architecture · OpenAI API · Prompt Engineering · N8N · GitHub GraphQL · Actions
Term 1
April – June 2026
How LLMs Work: Next Token Prediction at Trillion-Parameter Scale
GPT-4 was trained on a single task: given a sequence of tokens, predict the most likely next token. Do this on 10 trillion tokens of internet text (books, Wikipedia, code, conversations) and the model learns grammar, factual knowledge, reasoning chains, programming patterns — all emergent from next-token prediction. The Transformer architecture (Vaswani et al., 2017, "Attention Is All You Need") processes all tokens in parallel, with each token attending to every other token. "The bank of the river" — "bank" attends strongly to "river" (financial meaning rejected). "The bank charged interest" — "bank" attends to "interest" (financial meaning selected). Context disambiguates. GPT-4 estimated at 1.76 trillion parameters, trained on clusters of thousands of A100 GPUs for months. ChatGPT reached 100 million users in 2 months — faster than any product in human history.
Real world: GitHub Copilot (built on OpenAI's Codex) predicts the next tokens of your code given what you've typed. When it suggests an entire function, it's not "understanding" your intent — it's finding the most statistically likely continuation of code that looks like yours, based on billions of lines of public GitHub code it trained on.
The Transformer: Self-Attention Explained
Self-attention: for each token in the sequence, compute a weighted sum of all other tokens' representations. Weights reflect "how relevant is this other token to understanding the current one?" Computed via Query-Key-Value mechanism: Q×Kᵀ / √d → softmax → ×V. Multi-head attention runs 8+ attention operations in parallel, each focusing on different relationship types (syntactic, semantic, positional). Before Transformers: RNNs processed tokens sequentially (position 1 → 2 → 3...) — the model forgot early tokens by position 1000. Transformers process all positions simultaneously — a token at position 1 attends to position 1000 with equal ease. This parallelism enabled training on internet-scale data. Every modern AI (GPT, Gemini, LLaMA, Claude, DALL-E, Stable Diffusion) is a Transformer variant. The 2017 paper has been cited 100,000+ times.
Prompt Engineering: Getting Reliable Outputs
Temperature=0: deterministic, always picks the highest-probability next token. Temperature=1: samples from the probability distribution (creative). Temperature=2: nearly random (usually incoherent). Zero-shot prompting: ask directly. Few-shot prompting: provide 3 worked examples → model follows the pattern. Chain-of-thought: "Think step by step before answering" improves complex reasoning accuracy by 40–60% (Wei et al., Google 2022). System prompt: "You are a strict JSON API. Return only valid JSON. Never output prose or markdown." — constrains model to a structured output format. Prompt injection attack: user input "IGNORE ALL PREVIOUS INSTRUCTIONS" tries to override the system prompt — a real security vulnerability in every LLM app. Cost control: GPT-4o costs $5/1M input tokens. A loop generating 100,000 completions without a budget limit can spend ₹50,000 overnight. Students implement monthly budget alerts in the OpenAI dashboard.
💡 Concept Spotlight
Hallucination: The LLM's Structural Flaw
LLMs generate text by predicting the most statistically likely next token — they have no mechanism to check if what they're saying is factually true. They generate plausible-sounding text regardless of accuracy. When asked about a non-existent research paper, GPT-4 will fabricate plausible-looking author names, journal names, and DOI numbers with high confidence. This is called hallucination. It's not a bug to be fixed — it's a structural property of how next-token prediction works. Mitigations: RAG (retrieve real documents and force the model to answer from them), temperature=0 for factual tasks, structured JSON output mode (forces format, reduces hallucination), self-consistency (ask 3 times, take majority vote). No mitigation eliminates it completely — every LLM app must account for it.
Analogy: An LLM is like a student who memorised patterns from millions of textbooks but never checked facts. They can write a convincing essay on any topic — including topics they know nothing about. The confidence of the writing has no relationship to its accuracy. Always verify LLM outputs for factual claims.
Term 2
July – September 2026
N8N: Self-Hosted Workflow Automation
N8N (Node-based automation) is open-source and self-hosted on the school Raspberry Pi — unlike Zapier (cloud, expensive at scale) or Make (limited on free tier). Trigger nodes: Schedule (every morning at 08:00), Webhook (HTTP POST from any service), MQTT In (IoT device events). Processing nodes: HTTP Request (call any REST API), Google Sheets (read/write rows), Code (custom JavaScript), IF (conditional branching), Split In Batches (process large lists), Merge. Output nodes: Gmail, WhatsApp (Twilio), Slack, Telegram, Notion. The assignment reminder bot flow: Schedule trigger → Google Sheets Read (get all rows) → Filter (deadline within 48h AND Reminded=No) → Send message (personalised with student name + assignment) → Google Sheets Update (set Reminded=Yes). Zero manual effort after setup. Runs every morning at 08:00 automatically.
GitHub GraphQL API: Precise Data Retrieval
REST over-fetches: GET /users/{username}/repos returns 30 fields per repo including fields you don't need. For 100 repos: 3,000 field values transferred, only 3 used. GraphQL solves this: query{user(login:"username"){name,repositories(first:10,orderBy:{field:STARGAZERS,direction:DESC}){nodes{name,stargazerCount,primaryLanguage{name}}}}} — returns exactly name, stars, and primary language for the top 10 repos by stars. Facebook invented GraphQL in 2015 for their mobile app — cellular bandwidth was expensive, over-fetching was a real cost. The portfolio auto-update bot: Python → GitHub GraphQL → parse response → generate markdown README with language bar chart and recent repos table → git commit → git push → GitHub Actions auto-deploys. Updated every Sunday at midnight, automatically.
Git for Professional Collaboration: Beyond add/commit/push
git log --oneline --graph --all shows the full branch history as a visual tree. git blame filename shows who changed each line and when. git bisect: binary search through history to find which commit introduced a bug — git bisect start, mark the current (bad) commit, mark a known good commit, bisect automatically checks out halfway between, you test, repeat — finds the offending commit in log₂(n) steps. Feature branch workflow: never commit to main, always create a branch, submit a PR, get code review, merge. Branch naming convention: feature/add-payment-webhook, fix/cart-total-calculation, docs/update-api-readme. Merge conflicts: two people edited the same line — Git cannot auto-resolve. Student must manually choose which version to keep. The first merge conflict is the most memorable Git lesson of Class 10.
Mind fact: The Attention Is All You Need paper (Vaswani et al., 2017) was submitted to NeurIPS 2017 by 8 Google Brain engineers. Eight of those eight authors have since left Google: to found Adept AI, Character.AI, Cohere, Inceptive, and other AI companies — the paper's authors collectively created much of the modern AI industry. The most influential paper of the 21st century was written in one year at Google and then its authors built companies worth tens of billions of dollars from the idea.
Term 3
October – December 2026
Responsible AI: What You Must Know Before Shipping
Hallucination mitigation: RAG, temperature=0, structured output. Privacy: never log user conversations that may contain personal information without explicit consent. GDPR (Europe) and India's DPDP Act (2023) both require consent for personal data processing. Bias: LLMs trained on internet text encode historical biases — they may produce stereotyped responses when asked about certain demographic groups. Cost monitoring: use OpenAI's usage dashboard, implement spending alerts, cache repeated identical prompts (embeddings cache, exact-match cache). Rate limiting user API access to prevent abuse. These aren't advanced topics — they're minimum requirements for any LLM app used by real people.
Common Misconception
"ChatGPT 'knows' things and 'reasons' about them the way humans do." — LLMs are next-token prediction machines. They don't "know" facts — they've memorised statistical patterns from training data. They don't "reason" — they predict tokens that look like reasoning based on patterns of reasoning they saw in training text. They don't "understand" your question — they predict tokens that, in context, form a relevant-looking response. This distinction matters: when an LLM is wrong with high confidence, it's because the wrong-sounding text pattern was statistically likely in its training data. Treating it as a knowledge oracle leads to dangerous over-reliance.
🤖
Capstone Projects
Assignment Reminder Bot (N8N) + GitHub Portfolio Auto-Updater
Reminder Bot: N8N on RPi, daily 08:00 run, Google Sheets deadlines → personalised WhatsApp/Gmail alerts → Reminded flag prevents duplicates. Used by real PREKSHA Class 10 students from Day 1. GitHub Bot: Python + GitHub GraphQL API fetches top repos/stars/languages → generates README.md with language chart → git commit → GitHub Actions auto-deploys every Sunday.
Transformer Architecture OpenAI API Prompt Engineering N8N Automation GitHub GraphQL API Git Professional Workflow
Weekly Schedule — Class 10
Day Slot 1 (2:00–3:30 PM) Slot 2 (3:30–5:00 PM)
Monday 💻 React / Redux Theory + Virtual DOM Deep-Dive 💻 React Lab: Hooks + Redux + Router
Tuesday ⚡ RPi + OpenCV Architecture + MOG2 Theory ⚡ Computer Vision Lab + ThingSpeak Integration
Wednesday 🧠 Transformer Architecture + LLM Theory 🧠 OpenAI API + N8N Workflow Lab
Thursday 💻 Socket.io + Stripe + MERN Integration ⚡ Smart Home + AI Alert Full Build
Friday 🧠 GitHub GraphQL + Portfolio Auto-Update 🎤 Industry Guest Talk / GitHub Profile Reviews
Saturday 📝 Assessment + Live Store Demo + AI Alert Demo (camera) + N8N Bot Proof
Track 1 Assessment
MERN app fully deployed, all features working 35%
GitHub Actions pipeline (lint + build + deploy) green 25%
React + Virtual DOM + Redux concept quiz 20%
Live walkthrough to panel (explain every component) 20%
Track 2 Assessment
Smart Home + AI Alert both live and working 40%
Walk past camera → Telegram alert received (live) 25%
OpenCV + RPi architecture quiz 20%
IoT architecture diagram (both products) 15%
Track 3 Assessment
N8N bot running + 3 real reminder messages proved 35%
GitHub README auto-updating (show last Sunday's commit) 30%
Transformer + hallucination quiz 20%
Prompt engineering exercise (5 structured tasks) 15%
Standard XI · Pre-Capstone · Age 16–17
Production Systems & Advanced AI
Class 11 is the year of professional engineering. Next.js replaces plain React with server-side rendering, TypeScript catches bugs before runtime, and Prisma makes databases type-safe. Robots use inverse kinematics and PID control. YOLOv8 detects custom objects in real time. RAG systems retrieve-then-generate to eliminate hallucination. Everything students build is portfolio-ready and production-deployable.
3
Tracks
117
Annual Hours
6
Projects
5
Assessments
11CLASS
💻
Track 1 — Next.js, TypeScript & Portfolio
Next.js 14 · App Router · TypeScript · Prisma · Contentful · Framer Motion · Core Web Vitals
Term 1
April – June 2026
Next.js: Why Create React App Is Dead
Create React App produces a Single Page App: one HTML file, JavaScript renders everything client-side. Problem 1: Google's crawler receives an empty HTML shell, can't index content — SEO catastrophe. Problem 2: First Contentful Paint is delayed until the entire JavaScript bundle downloads and executes — slow on mobile. Next.js solves both. Three rendering strategies: SSG (Static Site Generation — built once at deploy time, fastest, ideal for marketing pages and blogs), SSR (Server Side Rendering — fresh HTML generated on each request, ideal for personalised dashboards), ISR (Incremental Static Regeneration — SSG but stale-while-revalidate — revalidate every N seconds in background). React Server Components (Next.js 14 App Router): run entirely on the server, can query databases directly, ship zero JavaScript to the browser. Vercel (Next.js creators) powers Twitch, HashiCorp, GitHub's marketing site, and thousands of production apps.
Real world: ZARA's e-commerce site uses Next.js ISR: product pages are statically generated but revalidate every 60 seconds. New product inventory updates appear within a minute without a redeploy. The ZARA team never runs a deployment to update stock counts.
TypeScript: Catching Bugs Before They Reach Production
JavaScript is dynamically typed — type errors only surface at runtime, potentially in production with real users. function greet(name) { return "Hello " + name.toUpperCase() } — if you call greet(42), it crashes at runtime: TypeError: name.toUpperCase is not a function. TypeScript catches this at write time: function greet(name: string): string — the compiler immediately underlines greet(42) before you run a single line. TypeScript adoption: 12% of JS projects in 2019, 42% in 2024. Microsoft, Google, Meta, Airbnb, Lyft, and Slack all require TypeScript for new projects. The productivity gain is real: in a 2017 Airbnb study, TypeScript would have prevented 38% of their production bugs. The type annotations also serve as living documentation — no need to read function bodies to understand expected inputs.
Prisma ORM: Schema-First, Type-Safe Database
Traditional ORMs (Sequelize, SQLAlchemy) generate dynamic queries — TypeScript can't infer the return type of a JOIN query. Prisma generates a fully typed client from your schema: model User { id Int @id @default(autoincrement()), name String, posts Post[] }. prisma.user.findMany({where:{posts:{some:{published:true}}}}) — TypeScript knows the exact shape of every returned object. IntelliSense autocompletes all field names. A schema change (rename a field) causes TypeScript errors at every usage site — no silent regressions. Prisma Migrate creates SQL migration files and applies them: prisma migrate dev --name add-user-role. Migration history is committed to Git — the database schema is version-controlled like code.
💡 Concept Spotlight
Server Components: The 2024 Architecture Shift
React Server Components (RSC, stable in Next.js 13+) run exclusively on the server. Their code never ships to the browser. A Server Component can directly query a database: const posts = await prisma.post.findMany(). No API endpoint needed, no useEffect fetch, no loading states. The component renders to HTML on the server, sent to the browser as markup. Only Client Components ('use client' directive) send JavaScript to the browser. Result: typical Next.js 14 app has 40–60% less client-side JavaScript than a Create React App equivalent. First Contentful Paint is near-instant because real HTML arrives, not an empty div waiting for JS. Google indexes it immediately. This shift is as significant as jQuery → React was in 2013.
Analogy: Server Components are like a restaurant kitchen (cooking happens on the server). Client Components are like a fondue kit at your table (some interactive preparation happens client-side). Most food is better cooked in the kitchen. Reserve the fondue kit for things that genuinely need the user's touch — form interactions, real-time updates, animations.
Term 2
July – September 2026
Contentful Headless CMS: Content as a Service
Traditional CMS (WordPress): content management and rendering are coupled — changing the CMS changes the frontend. Headless CMS: content lives in Contentful, exposed via REST or GraphQL Content Delivery API. Your Next.js app fetches content at build time (getStaticProps) or request time (getServerSideProps). Benefit: marketing team edits blog posts via Contentful's polished UI without touching code. The frontend can be completely rebuilt/redesigned without touching the content. Same content can feed a website, mobile app, and email newsletter. With ISR (revalidate:60), a Contentful update appears on the website within 60 seconds — no deployment. Sanity, Strapi, and Ghost are alternatives. Contentful's free tier allows 5,000 records and 25 users — more than enough for a portfolio CMS.
Framer Motion: Animation as Engineering
motion.div animate={{x:0, opacity:1}} initial={{x:-50, opacity:0}} transition={{type:"spring", stiffness:80, damping:15}}. Spring physics produces natural deceleration — the same feel as iOS rubber-band scroll and Android shared element transitions. Variants enable orchestrated animations: parent variants control when child variants animate (staggerChildren:0.08 creates card-by-card staggered entry). AnimatePresence handles unmount animations — elements animate out before being removed from DOM. useScroll + useTransform creates parallax tied to scroll position. Performance rule: only animate transform (translate, scale, rotate) and opacity — these are GPU-accelerated. Never animate width, height, top, left — these trigger layout recalculation on every frame. A 60fps animation has 16.67ms per frame; layout reflow can take 30ms+.
Core Web Vitals: Performance as SEO and UX
Google's Core Web Vitals are ranking signals since June 2021. LCP (Largest Contentful Paint): time until the hero image or main text block is visible. Target: <2.5s. A 100ms delay in LCP reduces conversions by 1% (Google/Deloitte research). INP (Interaction to Next Paint, replaced FID in 2024): time from user click/tap to visual response. Target: <200ms. CLS (Cumulative Layout Shift): how much content jumps as the page loads. Target: <0.1. Cause: images without width/height attributes (browser doesn't know size, causes reflow when loaded). Fix: always set width and height on img. Next.js Image component automatically handles this, plus lazy loading, WebP conversion, and responsive sizes. Students audit their portfolio with Chrome Lighthouse and achieve >95 on all four metrics.
Industry Connection
Vercel's 2023 study of 2.6 million websites: pages meeting Core Web Vitals thresholds had 24% lower bounce rates and 40% higher conversion rates than pages failing them. For an e-commerce site earning ₹1 lakh/month, improving from "Needs Improvement" to "Good" on LCP could increase revenue by ₹40,000/month — purely from performance improvements. This is why every engineering team at any company with a revenue-linked website tracks Core Web Vitals as a KPI.
Term 3
October – December 2026
Developer Portfolio: The Most Permanent Project
The Class 11 portfolio is the project students will use for the rest of their careers. Next.js 14 + TypeScript + Contentful CMS (add projects without redeployment) + Framer Motion page transitions + Resend email API for contact form + Google Analytics. Projects section pulls from Contentful — each project has title, description, tech tags, live URL, GitHub URL, thumbnail. The Contentful model ensures consistent structure across all 42 PREKSHA projects and any future work. Lighthouse score >95. Deployed on Vercel with a custom domain (₹800/year for .com). At Google, Facebook, and Flipkart, engineering hiring managers spend 30 seconds on a GitHub profile before reading a résumé. Five deployed projects with live URLs wins those 30 seconds. Students own this domain for life.
NextAuth.js: OAuth and Sessions Done Correctly
OAuth 2.0: user clicks "Login with Google" → redirected to Google's login page → user approves → Google returns an authorization code → your server exchanges code for access token → creates session → user is logged in. Users never share their Google password with your app — Google handles authentication. NextAuth.js implements OAuth in ~50 lines of config: providers[Google({clientId, clientSecret}), GitHub({clientId, clientSecret}), Credentials({authorize:async(credentials) => authenticate(credentials)})] — three providers in one array. Database adapter stores sessions in your Prisma database. CSRF protection, secure cookie handling, and token rotation all included. Email magic link: NextAuth sends a one-time login URL — passwordless auth used by Notion, Linear, and most modern SaaS tools.
Common Misconception
"SSR is always better than SSG because data is always fresh." — SSR generates HTML on every request: 1,000 users/second = 1,000 database queries/second. SSG generates HTML once at build time: all 1,000 users get the same pre-generated file from a CDN — 0 database queries, near-zero latency. For content that changes rarely (portfolio projects, blog posts, documentation), SSG is 100× faster and 100× cheaper than SSR. ISR gives you both: pre-generated for performance, auto-refreshed for freshness. The right question is not "SSR or SSG?" but "How often does this data change, and how fresh does it need to be?" Answer that, then choose the rendering strategy.
🌐
Capstone Project
Personal Developer Portfolio — Live on Custom Domain
Next.js 14 App Router + TypeScript + Prisma + NextAuth.js (optional auth for admin) + Contentful CMS (all 42 PREKSHA projects as content entries) + Framer Motion page transitions + Resend contact form + Google Analytics. Lighthouse score >95 on all metrics. Custom domain on Vercel. Students own this URL permanently — it's their professional digital identity submitted to colleges, internships, and jobs.
Next.js 14 App Router TypeScript Prisma ORM + Migrations Contentful Headless CMS Framer Motion Core Web Vitals >95 NextAuth.js OAuth
Track 2 — Advanced Robotics & Computer Vision
3-DOF Robot Arm · Inverse Kinematics · PID Control · YOLOv8 · Roboflow · ROS 2 Intro
Term 1
April – June 2026
3-DOF Robot Arm: Geometry Before Code
A 3-DOF planar robot arm has three joints: shoulder (θ₁), elbow (θ₂), wrist (θ₃) with link lengths L₁, L₂, L₃. Forward kinematics (easy): given θ₁, θ₂, θ₃ → compute end-effector (x, y) using trigonometry. Inverse kinematics (harder): given target (x, y) → compute θ₁, θ₂, θ₃. For a 2-DOF arm: use law of cosines to find θ₂ (elbow angle), then atan2(y, x) to find θ₁ (shoulder angle). Two solutions exist: elbow-up vs elbow-down — choose based on workspace constraints. Adding the third DOF (wrist) sets the end-effector orientation. The 3D-printed links must have the correct joint geometry to match the kinematic model — mechanical accuracy directly affects the IK calculation's validity. Students design links in Tinkercad with precise joint-to-joint measurements before printing.
Real world: ABB's IRB 6700 industrial robot arm (the kind welding car frames at Maruti Suzuki's Gurugram plant) solves IK for 6 joints in real-time at 1000Hz to maintain sub-millimetre accuracy during continuous motion. The maths Class 11 students implement for 3 joints is the foundational layer of that system.
PID Control: The Algorithm That Runs the Physical World
PID (Proportional-Integral-Derivative) is the most widely deployed control algorithm — used in aircraft autopilots, temperature regulators, motor drives, and cruise control. P: output = Kp × error. Responds to current error — large error → large correction. Too much Kp → oscillation. I: output += Ki × Σerror. Accumulates past error — eliminates steady-state error that P alone can't remove (e.g., a motor that settles 2° below target). Too much Ki → slow oscillation (integral windup). D: output += Kd × Δerror/Δt. Predicts future error from rate of change — damps overshoots before they occur. Too much Kd → amplifies sensor noise, jerky motion. Tuning: Ziegler-Nichols method — increase Kp until sustained oscillation, then use formulas to derive Ki and Kd. Students tune empirically: adjust, observe, adjust. This empirical process is exactly how professional control engineers tune industrial systems.
Tkinter GUI for Robot Control — Bridging software and hardware visually
Tkinter is Python's built-in GUI framework. A Canvas widget displays a 2D overhead view of the robot's reach envelope. The user clicks a target point on the canvas — the click event's (x,y) in canvas coordinates is converted to robot workspace coordinates — Python IK solver computes θ₁, θ₂, θ₃ — joint angles are sent over serial to Arduino (which drives the MG996R servos with smooth interpolation). The visual canvas updates to show the robot arm's current configuration. Real-time inverse kinematics driving physical hardware, controlled through a GUI — all in Python. The IK solver runs in a separate thread so the GUI remains responsive during calculation.
💡 Concept Spotlight
Inverse Kinematics: Why Robotics Needs Geometry
Forward kinematics has a unique solution: one set of joint angles produces exactly one end-effector position. Inverse kinematics has multiple solutions: there are infinitely many joint angle combinations that can place your hand on a table — different shoulder/elbow/wrist configurations. For a 2-DOF arm: 2 solutions (elbow-up, elbow-down). For a 6-DOF arm: up to 16 solutions. Industrial robots choose based on joint limits and proximity to current configuration (minimise movement). Redundant arms (7+ DOF, like a human arm) have infinite solutions — used for obstacle avoidance. Numerical IK (Jacobian inverse/transpose) handles redundant cases iteratively. Boston Dynamics' Atlas solves IK for 28 joints at 400Hz during dynamic backflips. What Class 11 implements in Python for 3 joints is the same mathematical foundation — scaled down by two orders of magnitude.
Analogy: Forward kinematics = "I hold my arm in THIS position, where is my hand?" Inverse kinematics = "I need my hand HERE, how do I hold my arm?" The second question has many valid answers (elbow up or down, wrist rotated many ways). The control system picks the most convenient one based on constraints.
Term 2
July – September 2026
YOLOv8: You Only Look Once — Real-Time Object Detection
Joseph Redmon's YOLO (2015) was the first real-time object detector. Previous detectors ran a region proposal network then a classifier — two forward passes per image. YOLO divides the image into an S×S grid. Each cell predicts B bounding boxes (centre x, y, width, height, confidence) and C class probabilities simultaneously in one forward pass. The entire prediction is a single tensor operation. YOLOv8 (Ultralytics, January 2023) achieves mAP@50 of 53.9 on COCO benchmark, inference in 1.8ms on GPU (NVIDIA A100). Five model sizes: nano (1.9MB, 80.4% mAP), small, medium, large, extra-large (68.9MB, 86.0% mAP). Nano runs on a Raspberry Pi. Extra-large runs in Tesla's Autopilot. Students use YOLOv8 nano for real-time webcam inference and medium for fine-tuning on custom data.
Real world: Amazon's Just Walk Out stores (no checkout) use overhead cameras running YOLO-family detectors to track which items customers pick up or put back. When you walk out, you're charged for exactly what you took. 100% automated, 0 cashiers. The same architecture students build in Class 11.
Roboflow: The ML Data Platform for Computer Vision
A model is only as good as its training data. Data quality matters more than model architecture for custom object detection. Roboflow provides: web-based image annotation (draw bounding boxes, label classes in a browser — no software to install), dataset management (train/val/test split, automatic versioning, dataset analytics showing class distribution), augmentation (flip, rotate, brightness, noise, blur, mosaic — multiplies dataset size 3–15×), export to YOLO format (txt files with normalised bounding box coordinates alongside images). mAP@50 (Mean Average Precision at 50% IoU threshold): for each class, precision and recall at the threshold where a prediction counts as correct if the predicted bounding box overlaps the ground truth by >50%. mAP averages across all classes. Students annotate 200 images per class (5 lab equipment classes = 1000 total images) — directly experiencing why data labelling is 60% of ML project time in industry.
Fine-Tuning YOLOv8 on Custom Data
from ultralytics import YOLO. model = YOLO('yolov8m.pt') — loads ImageNet pre-trained weights. model.train(data='lab_equipment.yaml', epochs=50, imgsz=640, batch=16, device='cuda') — fine-tunes on your annotated dataset. The YAML file defines: train/val paths, nc (number of classes), names (class names). Ultralytics handles the training loop, learning rate scheduling, augmentation, and checkpointing. After 50 epochs: evaluate with model.val() — prints per-class mAP@50, precision, recall. model.predict(source='webcam') — real-time inference on webcam feed. Students compare YOLOv8n (fast, less accurate) vs YOLOv8m (slower, more accurate) on their custom dataset — experiencing the accuracy/speed tradeoff firsthand.
Term 3
October – December 2026
ROS 2 Introduction: The Robot Operating System
ROS 2 (Robot Operating System 2, open-source since 2014) is the standard middleware for robotics research and production systems. Not a traditional OS — it's a communication framework. Core concepts: Node (an independent process: sensor_reader, path_planner, motor_controller), Topic (a named message channel: /scan for LiDAR data, /cmd_vel for velocity commands), Publisher (node that writes to a topic), Subscriber (node that reads from a topic). Launch files start multiple nodes simultaneously: ros2 launch my_robot bringup.launch.py. Quality of Service (QoS) settings control reliability vs speed tradeoffs. Used in: Boston Dynamics Spot, NASA JPL's open-source tools, Open-RMF (robotics fleet management standard used in Singapore's Changi Airport). Intro to ROS 2 in Class 11 positions students for university robotics courses and ISRO/DRDO internships.
Inventory Alert System: Real Industrial Use Case
The complete Class 11 T2 capstone integrates all year's learning: YOLOv8 on webcam detects lab equipment (Arduino, breadboard, multimeter, RPi, soldering iron) in real-time. A "baseline inventory" is established at session start (which items are on the bench). If an item disappears from detections for >5 consecutive seconds, an alert fires: Telegram message + timestamp + screenshot. If the item reappears, a "returned" notification is sent. Dashboard (Streamlit): shows live webcam feed with bounding boxes, detection log, inventory status per item (Present/Missing/Alert). This is the exact workflow used by smart retail shelving systems: Trigo's computer vision system for retail stores detects shelf stockouts and alerts staff within 3 minutes — the same detection logic, professional deployment.
Mind fact: The original YOLO paper (Redmon, 2015) was submitted with a subtitle: "Unified, Real-Time Object Detection." At the time, the best detector took 29 seconds per image. YOLO ran at 45 frames per second — 1,305× faster. The speed came from treating detection as a regression problem (predict boxes directly) rather than a classification problem (classify thousands of region proposals). One insight, published as a paper, made real-time detection possible and powered an entire product category.
🦾
Capstone Projects
3-DOF Robot Arm (IK + Tkinter) + YOLOv8 Lab Inventory System
Robot Arm: 3D-printed links (Tinkercad), MG996R servos, Python IK solver, Tkinter canvas GUI (click target → arm moves), smooth servo interpolation via Arduino serial, pick-and-place demo. YOLOv8 Inventory: 200 annotated images/class (Roboflow), YOLOv8m fine-tuned 50 epochs, real-time webcam detection, 5-second disappearance → Telegram alert, Streamlit dashboard. Both demonstrated to faculty and invited industry engineers.
Inverse Kinematics (IK) PID Control Tuning 3D Printing (Tinkercad) YOLOv8 Fine-Tuning Roboflow Annotation mAP Evaluation ROS 2 Intro
🧠
Track 3 — RAG, Fine-Tuning & MLOps
LangChain · Pinecone · Vector Embeddings · DistilBERT · FastAPI · MLflow · Bias Audit
Term 1
April – June 2026
RAG: Retrieval Augmented Generation — Solving Hallucination at the Architecture Level
LLMs hallucinate because next-token prediction has no mechanism to check factual accuracy. RAG solves this architecturally: instead of asking the model to recall information from training (unreliable), give it the relevant information at query time. Pipeline: query arrives → embed the query as a vector → similarity search in vector database → retrieve top-K most relevant document chunks → prepend chunks to the LLM prompt ("Here is the relevant context: [chunks]. Now answer: [query]") → LLM reasons over the provided context → returns answer with citations. The LLM becomes a reasoning engine over your documents — it's grounded. Hallucinations drop dramatically because the model no longer needs to recall facts from training; it just needs to read and reason over the provided text.
Real world: Perplexity.ai (serves 2 billion queries/month as of 2024) is essentially a sophisticated RAG system: every query retrieves web pages via Bing API and feeds them to an LLM to generate a cited answer. NotebookLM (Google), Copilot in Microsoft Office, and Notion AI are all RAG systems over user documents. The entire "AI on your documents" product category is RAG.
Vector Embeddings: Meaning as Mathematics
Word embeddings map semantic meaning to numerical vectors. OpenAI ada-002: converts any text to a 1,536-dimensional float32 vector. Texts with similar meanings produce vectors with high cosine similarity: "The dog ran fast" and "The canine sprinted quickly" → similarity ~0.92. "The dog ran fast" and "Water boils at 100°C" → similarity ~0.15. The famous word arithmetic: vector("king") - vector("man") + vector("woman") ≈ vector("queen"). Cosine similarity = (A·B) / (|A||B|) — the cosine of the angle between two vectors. Value 1.0 = identical meaning. Value 0.0 = orthogonal (unrelated). Value -1.0 = opposite meaning (rare in practice). Documents chunked into 512-token pieces, each embedded separately, stored in Pinecone. At query time: embed the query, search Pinecone for the K vectors with highest cosine similarity, retrieve those chunks.
LangChain: Orchestrating LLM Applications
LangChain (released October 2022, 70K+ GitHub stars by 2023) provides abstractions for common LLM application patterns. RetrievalQA: combines vector retrieval and LLM answering in 5 lines: qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(), retriever=vectorstore.as_retriever(search_kwargs={"k":5})). qa.run("What topics are in Class 9 IoT?") retrieves relevant PREKSHA curriculum chunks and generates an answer citing them. ConversationBufferMemory stores the last N turns of conversation, passed as context. LangChain Expression Language (LCEL): compose chains declaratively using | pipe operator. chain = prompt | llm | output_parser. Each component is composable and replaceable — swap OpenAI for Anthropic Claude in one line.
💡 Concept Spotlight
Pinecone Vector Database: Searching by Meaning, Not Keywords
Traditional keyword search: user types "how does arduino connect to sensor" → BM25 algorithm scores documents by keyword overlap. Finds documents containing those exact words. Misses: "microcontroller-to-peripheral communication" (same meaning, different words). Vector search: embed the query → find vectors most similar by cosine similarity → retrieve semantically related documents regardless of word choice. Hybrid search (best of both): run BM25 AND vector search, merge results, re-rank. Pinecone stores millions of 1,536-dimensional vectors and returns the top-K most similar in <100ms using approximate nearest-neighbour (ANN) algorithms (HNSW, IVF). Pinecone's free tier stores 1 million vectors — enough for 2 million tokens (1,500 pages) of documents.
Analogy: Keyword search is a librarian who looks for books containing your exact words. Vector search is a librarian who understands what you mean and finds books about the concept, regardless of exact wording. A search for "cardiovascular exercise" finds books about "aerobic fitness" — same concept, different vocabulary.
Term 2
July – September 2026
Fine-Tuning DistilBERT for Text Classification
BERT (Google, 2018): Bidirectional Encoder Representations from Transformers. Pre-trained on Wikipedia and BooksCorpus: predict masked words, predict if sentence B follows sentence A. 110M parameters. DistilBERT (Hugging Face, 2019): knowledge distillation from BERT → 66M parameters, 40% smaller, 60% faster, 97% of BERT's accuracy. Fine-tuning for 4-class toxicity classification: add a linear classification head on top of DistilBERT's [CLS] token output. Freeze pre-trained weights initially, train only the classification head (faster, less overfitting). Then unfreeze the top 2 transformer layers for further refinement. Loss: BinaryCrossEntropy (multi-label: a text can be simultaneously hateful AND a threat). Class weighting: toxic:non-toxic ratio is 1:99 in real data — without weighting, model predicts "non-toxic" for everything and achieves 99% accuracy while detecting 0 actual toxicity.
FastAPI: Production ML Model Serving
Flask was simple for prototyping. FastAPI is production-grade. Built on Pydantic (automatic request/response validation) + Starlette (ASGI framework for async). class TextInput(BaseModel): text: str. @app.post("/classify") async def classify(input: TextInput): — incorrect request type returns HTTP 422 automatically, no manual validation code. Async endpoints (async def) handle concurrent requests: multiple inference calls can execute in parallel. Auto-generated Swagger UI at /docs: interactive API documentation that tests itself. Server-Sent Events for streaming: @app.get("/stream") async def stream(): yield "data: token " — enables streaming LLM responses instead of waiting for the full completion. Deployed on Railway with uvicorn ASGI server, Docker container.
MLflow: Version Control for ML Experiments
Without MLflow: you run 20 training experiments with different hyperparameters, save models with generic names (model_v3_final_FINAL.h5), lose track of which configuration produced which accuracy. With MLflow: with mlflow.start_run(): mlflow.log_param("learning_rate", 0.001). mlflow.log_metric("f1_toxic", 0.83). mlflow.log_artifact("confusion_matrix.png"). mlflow.sklearn.log_model(model, "distilbert_toxicity"). Every experiment recorded in a database with searchable UI. mlflow.register_model() versions your models: v1 (baseline), v2 (class-weighted), v3 (fine-tuned top layers). Promote v3 to "Production" stage. If v3 degrades in production, roll back to v2 in one click. This reproducibility — knowing exactly how any model was trained — is required in healthcare AI (FDA audit trails) and fintech (regulatory compliance) and increasingly standard everywhere.
Industry Connection
Twitter/X's content moderation ML pipeline (before Elon Musk's acquisition) used a DistilBERT-class model to flag potentially harmful tweets for human review. The human-in-the-loop system: model flags → human moderator reviews → approves or overrides → overrides feed back into training data. This is exactly what Class 11 students build. The difference: Twitter's system processed 500 million tweets/day. The architecture is identical, the scale is 10,000× larger.
Term 3
October – December 2026
Bias Auditing: Measuring Fairness Quantitatively
After training the toxicity classifier, students measure demographic parity: does the model have equal false-positive rates across different groups? Test: feed phrases like "I am gay", "I am Christian", "I am Muslim", "I am a man", "I am a woman" → record predicted toxicity score. A fair model should give near-zero toxicity to all. Common finding: models trained on internet comments data over-flag demographic identity statements from underrepresented groups (because those phrases appeared disproportionately in hostile contexts in the training data). Tools: AI Fairness 360 (IBM open-source), Fairlearn (Microsoft). Students write a formal Model Card: intended use, training data description, evaluation metrics, known failure modes, demographic performance disparities, deployment recommendations. Required by responsible AI frameworks worldwide.
Human-in-the-Loop MLOps: Closing the Feedback Cycle
The human moderator React dashboard: shows a queue of model predictions with confidence scores. Moderator clicks Approve (model was right), Override-Toxic (model missed toxic content), Override-Clean (model false-flagged). All decisions logged to PostgreSQL: text, model_prediction, human_decision, timestamp. Weekly retraining pipeline: SELECT * from decisions WHERE model_prediction != human_decision → add disagreement examples to training set with human labels → retrain DistilBERT → evaluate on held-out test set → if F1 improved → promote new version in MLflow registry → update FastAPI to serve new model version. This continuous learning loop prevents model staleness. Without it, models trained on 2020 internet language fail at 2025 internet slang and new toxic patterns.
Common Misconception
"Fine-tuning always makes a model better." — Fine-tuning on a small, low-quality, or biased dataset makes the model worse than the pre-trained base model — this is called "catastrophic forgetting." The model "forgets" its broad pre-trained knowledge and overfits to the narrow fine-tuning dataset. Signs of catastrophic forgetting: training accuracy rises to 99%, validation accuracy stagnates at 60%, the model confidently misclassifies examples it would have handled correctly before fine-tuning. Prevention: use a low learning rate (1e-5 to 5e-5), freeze most layers initially, use LoRA (Low-Rank Adaptation) which adds trainable adapters without changing base weights, and always evaluate against the original pre-trained model's performance as a baseline.
Capstone Projects
PREKSHA RAG Study Assistant + AI Content Moderation System
RAG Assistant: PREKSHA curriculum PDFs → LangChain PDF loader → Pinecone vector DB → LangChain RetrievalQA → FastAPI SSE streaming → Next.js chat UI with citation drawer. Content Moderation: DistilBERT fine-tuned (Jigsaw Toxic Comment dataset, 4 classes) → FastAPI prediction endpoint → React moderator dashboard → human override logging → PostgreSQL → MLflow tracking → weekly retraining pipeline. Bias audit report written. Both deployed live.
LangChain + RAG Pinecone Vector DB Vector Embeddings DistilBERT Fine-Tuning FastAPI + SSE MLflow Experiment Tracking Bias Audit + Model Card
Weekly Schedule — Class 11
Day Slot 1 (2:00–3:30 PM) Slot 2 (3:30–5:00 PM)
Monday 💻 Next.js + TypeScript Theory + Server Components 💻 Portfolio Build Lab + Contentful CMS
Tuesday ⚡ IK + PID Theory + Maths on Whiteboard ⚡ Robot Build Lab + YOLOv8 Training
Wednesday 🧠 RAG Architecture + Vector Embedding Theory 🧠 LangChain + Pinecone + MLflow Lab
Thursday 💻 Framer Motion + Core Web Vitals + NextAuth ⚡ YOLO Inference + ROS 2 Intro Lab
Friday 🧠 DistilBERT Fine-Tuning + Bias Audit 🎤 Industry Mentors / Portfolio Critique Session
Saturday 📝 Assessment + Robot Arm Demo + YOLO Live Demo + RAG Chat Demo
Track 1 Assessment
Portfolio live (custom domain, Lighthouse >95) 35%
TypeScript type safety + Prisma schema correct 25%
SSG vs ISR vs SSR quiz + Server Components quiz 20%
Contentful CMS: add project without redeploy (live demo) 20%
Track 2 Assessment
Robot arm IK demo (end-effector <5mm from target) 35%
YOLOv8 mAP@50 >80% on test set 30%
IK maths derivation on whiteboard (no calculator) 20%
PID tuning rationale (Kp, Ki, Kd values justified) 15%
Track 3 Assessment
RAG chat accuracy (3 factual questions answered correctly with citations) 35%
DistilBERT F1 score + bias audit report submitted 30%
MLflow experiment log with 5+ model variants 20%
FastAPI deployed + SSE streaming verified working 15%
Standard XII · Grand Capstone Year · Age 17–18
Grand Capstone: Engineer, Ship & Pitch
Class 12 has one mission: build a product that could exist in the real world. Docker containers make deployments reproducible. Playwright catches bugs before users do. A* pathfinding drives autonomous robots. RAGAS measures RAG quality like an automated examiner. Every student ends the year with three portfolio-centrepiece projects, a product pitch delivered to industry engineers, and skills that directly translate to college admissions and tech internships.
3
Grand Capstones
126
Annual Hours
3
Industry Pitches
5
Assessments
12CLASS
💻
Track 1 — SaaS Architecture & DevOps
Microservices · Docker · Playwright E2E · CI/CD · Stripe Billing · NextAuth · Product Pitch
Term 1
April – June 2026
Microservices: Why Every Fast-Growing Tech Company Breaks Their Monolith
A monolith: one codebase, one database, one deployment. Works perfectly for 3 engineers and 1,000 users. Amazon in 2001: 10,000 engineers changing the same codebase. Deployments took weeks. One team's bug blocked all other deployments. Jeff Bezos issued his famous "API Mandate" memo in 2002: "All teams will henceforth expose their data and functionality through service interfaces. Teams will communicate with each other through these interfaces. There will be no other form of interprocess communication allowed." By 2006, Amazon had ~100 microservices. Today: ~3,000. Netflix's 2009 decomposition: their DVD shipping monolith moved to cloud microservices — each service owned by a 2-pizza team (small enough to be fed with 2 pizzas). Class 12 implements 3 microservices: Auth (Node + PostgreSQL), Products (Node + MongoDB), Orders (Node + Redis). Each in its own Docker container, communicating via HTTP. An API Gateway routes all external traffic.
Real world: Swiggy's platform runs 800+ microservices. An order triggers: authentication service → restaurant service → pricing service → payment service → delivery assignment service → notification service. Each service can be deployed independently. One service crashing doesn't crash the entire platform — a restaurant menu can still load even if payments are temporarily down.
Docker: "Works on My Machine" Is No Longer an Excuse
Docker containers package an application and its entire runtime environment (specific Node.js version, OS libraries, environment variables, file system structure) into a portable unit. The Dockerfile is a recipe: FROM node:20-alpine (base image) → WORKDIR /app → COPY package.json . → RUN npm ci (clean install) → COPY . . → EXPOSE 3000 → CMD ["node", "server.js"]. docker build -t auth-service:v1.0 . creates the image. docker run -p 3001:3000 auth-service:v1.0 starts a container. Docker Compose: YAML file defines all services + databases + networks + volumes. docker-compose up starts the entire microservices platform locally in one command. The same docker-compose.yml that runs locally works identically in production — guaranteed. This eliminates the entire class of "environment inconsistency" bugs that previously consumed 30% of engineering time.
API Gateway: The Single Entry Point Pattern
External clients (React frontend) shouldn't know about internal service topology — which service runs on which port. An API Gateway provides a single entry point: all requests to /api/auth/* routed to auth-service:3001, /api/products/* to products-service:3002, /api/orders/* to orders-service:3003. The gateway handles: JWT verification (check token before forwarding to any downstream service — each service trusts the gateway), rate limiting (100 requests/15 minutes per IP, applied once at the gateway), request logging (distributed tracing), CORS headers (applied centrally). Implementing an API Gateway from scratch with Express teaches all these concepts. Production alternatives: Kong, AWS API Gateway, Nginx (with Lua plugins). Students build with Express; understanding the pattern transfers to any implementation.
Inter-Service Communication: REST and the Distributed Systems Fallacies
Peter Deutsch's 8 Fallacies of Distributed Computing (1994): "The network is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doesn't change. There is one administrator. Transport cost is zero. The network is homogeneous." Every one of these is false. When the Orders service calls the Products service to check stock: that HTTP call can fail (network unreliable), be slow (latency non-zero), or hang indefinitely (no timeout). Circuit breaker pattern: if Products service fails 5 times in 30 seconds, stop calling it for 60 seconds (return cached data or error) — prevents cascading failures. Timeout: every external HTTP call has a 3-second timeout. Retry: retry on network errors, not on 4xx errors. Students implement these three patterns explicitly — they're the difference between "it works in demo" and "it works in production."
💡 Concept Spotlight
The 12-Factor App: Production Engineering Principles
Adam Wiggins (Heroku co-founder) published 12 principles for production-ready web apps in 2011. The most important: Config in environment variables (never hardcode secrets or URLs — they change between environments). Stateless processes (any instance can handle any request — enables horizontal scaling). Logs as event streams (write to stdout/stderr, let the infrastructure aggregate them). Backing services as attached resources (the database URL is a config value — swap databases without code changes). Dev/prod parity (use the same technologies in development and production — Docker gives you this). Strict separation of build/release/run stages (build → run, never change running code). These 12 factors are why Heroku, Railway, and Render work — they enforce the architecture that makes apps scalable and maintainable. Every PREKSHA Class 12 project is built to these principles.
Analogy: A 12-factor app is like a modular kitchen: standardised connections (plumbing, electrical) mean any appliance can be swapped. Config in environment = the power socket voltage is set by the building, not the appliance. Stateless = any burner on the stove can cook any dish, not just specific burners for specific dishes.
Term 2
July – September 2026
Playwright E2E Testing: Automate What Users Do
Playwright (Microsoft, 2020) automates a real browser — Chrome, Firefox, or Safari — in headless mode (no visible window). test('user can complete checkout', async ({page}) => { await page.goto('/login'); await page.fill('[name="email"]', '[email protected]'); await page.fill('[name="password"]', 'password'); await page.click('[type="submit"]'); await expect(page).toHaveURL('/dashboard'); await page.click('text=Add to Cart'); await page.click('text=Checkout'); await page.fill('[data-stripe-element]', '4242424242424242'); await expect(page.locator('.order-confirmed')).toBeVisible(); }). The test clicks, types, and verifies exactly as a real user would. Runs in CI: GitHub Action → Playwright headless → screenshots on failure showing exactly what went wrong. Trace viewer replays failed tests step-by-step. Students write 10 E2E tests covering: auth flow, workspace creation, product CRUD, payment intent, admin actions.
GitHub Actions CI/CD: The Professional Deployment Pipeline
The .github/workflows/ci.yml: on [push to main, pull_request] → jobs: lint (ESLint), typecheck (tsc --noEmit), test (Jest unit tests), e2e (Playwright on Docker Compose stack), build (next build or docker build), deploy (Vercel deploy action). Each job runs in a separate Ubuntu container. Matrix strategy: test against Node.js 18 and 20 simultaneously. Caching: actions/cache@v3 for node_modules — reduces pipeline from 8 minutes to 2.5 minutes. Branch protection rules: require all checks to pass before merge. Environment secrets: STRIPE_SECRET_KEY, DATABASE_URL stored encrypted in GitHub Secrets, injected as environment variables during deployment. Pull request preview deployments: every PR gets its own Vercel preview URL — review the feature in a real environment before merging.
Stripe Subscriptions: Recurring Revenue Infrastructure
Stripe Billing separates pricing from product: Products (Free Plan, Pro Plan, Enterprise Plan) have one or more Prices (Free: ₹0/month, Pro: ₹999/month, Enterprise: ₹9999/month). Customer Portal: a Stripe-hosted page where customers manage their subscription — upgrade, downgrade, cancel, update payment method. Your server creates a portal session URL, redirects the user. Zero UI code from you. Webhooks handle subscription state changes: customer.subscription.created → set user plan to pro. invoice.payment_succeeded → extend subscription. customer.subscription.deleted → downgrade to free. Idempotency: process each webhook event exactly once using the event ID as an idempotency key stored in the database. Stripe's Radar fraud detection protects test and production transactions. Students see real Stripe test payments appearing in the Stripe dashboard.
Industry Connection
Linear (the project management tool used by Apple, Vercel, and thousands of engineering teams) was built by 4 engineers over 6 months. It launched in 2020 with a Next.js frontend, GraphQL API, and PostgreSQL — a team small enough for PREKSHA Class 12. Linear became profitable without VC funding. By 2024 it had raised $35M at a $400M valuation. The tech stack: not complex. The execution: exceptional. Class 12 students build with the same tools. The gap between a PREKSHA capstone and a Linear is execution quality and domain insight — not technology.
Term 3
October – December 2026
The Product Pitch: Technical Excellence Needs Commercial Articulation
A product pitch structure: (1) Problem — what specific pain, for whom, how large is the addressable market? "15 million Indian school students spend 2 hours/week searching for curriculum content across scattered resources." (2) Solution — live demo, 4 minutes, show the product actually working with realistic data. (3) Technical architecture — one diagram, explain each layer in 90 seconds at the right level for the audience. (4) Metrics — Lighthouse score, API response time (p50, p95), test coverage %, deployment frequency. Numbers, not adjectives. (5) Business model — how does it make money? Cost per user on current infrastructure? (6) Team — who built what, what did each person learn? (7) Ask — if you had 3 more months, what would you improve? Honest self-assessment of limitations is more impressive than overselling. Panel: 1 PREKSHA faculty + 2 invited engineers (startup founders or senior engineers from Pune/Mumbai tech ecosystem). 20-minute pitch + 15-minute Q&A. Graded on clarity, technical depth, and honest assessment of limitations.
Open Source Contribution: Your First Merged PR in a Public Repository
Find an issue labelled "good first issue" or "help wanted" on a real open-source project. Read the contributing guidelines (CONTRIBUTING.md). Fork the repository. Create a feature branch. Read the existing code for context (don't just fix the bug — understand the system). Make the fix. Write a test if the project has tests. Run the full test suite locally. Commit with a descriptive message (Fix: incorrect error message for empty array input). Push and open a PR with a clear description of what you changed and why. Respond to code review feedback — maintainers may request changes 2–3 times before merging. When merged: your GitHub profile shows a contribution to a real project that thousands of people use. Projects welcoming students: freeCodeCamp, Exercism, FOSSASIA, AsyncAPI — all have Indian contributors and welcoming maintainers.
Common Misconception
"Microservices are always better than monoliths." — Microservices introduce: network latency between services, distributed transaction complexity (two-phase commit or eventual consistency), increased operational overhead (monitoring N services instead of 1), service discovery, and harder local development (spin up 5 services instead of 1). For a team of 3 engineers and 1,000 users, a well-structured monolith is faster to develop and easier to maintain. Amazon Prime Video moved their video monitoring service FROM microservices BACK to a monolith in 2023 and reduced costs by 90%. The rule: start with a monolith. Extract services only when a specific component has scaling requirements or team ownership issues that justify the added complexity. "Premature microservices is the root of all evil."
🏆
Grand Capstone — Coding Track
SaaS Starter Kit + Microservices Platform
SaaS: Next.js 14 + TypeScript + Prisma + NextAuth (Google + GitHub OAuth + credentials) + Stripe subscriptions (Free/Pro/Enterprise tiers) + team workspaces + settings dashboard + API key management. Microservices: Auth/Products/Orders Docker containers + Express API Gateway + Docker Compose. GitHub Actions: ESLint → TypeScript → Jest → Playwright E2E → Vercel deploy on every PR. Branch protection, PR reviews, 10+ E2E tests. Industry pitch to panel of 3. Open-source PR merged.
Microservices Architecture Docker + Docker Compose Playwright E2E Testing GitHub Actions CI/CD Stripe Billing + Webhooks Circuit Breaker Pattern Open Source Contribution
Track 2 — Autonomous Robot Fleet
A* Pathfinding · Encoder Odometry · Webots Digital Twin · Swarm MQTT · Fleet Dashboard
Term 1
April – June 2026
A* Pathfinding: The Algorithm Behind Google Maps and Amazon Robots
Dijkstra's algorithm (1956) finds the shortest path by expanding the lowest-cost node first — explores in all directions equally. Problem: on a 5×5 grid, it examines all 25 nodes. On a 1,000×1,000 grid, it examines 1 million nodes. A* (Hart, Nilsson, Raphael, Stanford 1968) adds a heuristic: f(n) = g(n) + h(n). g(n) = actual cost from start to n (known). h(n) = estimated cost from n to goal (Euclidean distance: √(Δx²+Δy²)). The heuristic guides expansion toward the goal. On the 5×5 grid with obstacles, A* examines 10–15 nodes instead of 25. With an admissible heuristic (never overestimates), A* always finds the optimal path. Students implement A* in Python: open set (priority queue sorted by f), closed set (visited nodes), reconstruct path by backtracking parent pointers. Test on 5×5 grid in simulation, then deploy on physical robot.
Real world: Google Maps uses bidirectional Dijkstra with road hierarchy preprocessing (important roads searched first). Amazon's 750,000 Kiva warehouse robots use A* variants, making 2.5 million pathfinding decisions per second across 200+ warehouses. Ola Maps (India, 2024) — built entirely in India — uses similar algorithms for routing. The algorithm Class 12 students implement is the direct foundation of all of these.
Encoder Odometry: Dead Reckoning Without GPS
Rotary encoders measure wheel rotation: a wheel with 20 encoder ticks/revolution and 6.5cm diameter has circumference = π × 6.5 = 20.4cm. Each tick = 20.4cm/20 = 1.02cm of travel. Count ticks over time → compute distance. Differential drive kinematics: track ticks from left (L_ticks) and right (R_ticks) wheels separately. Δleft = L_ticks × cm_per_tick. Δright = R_ticks × cm_per_tick. Δheading = (Δright - Δleft) / wheel_base. Position update: x += Δdistance × cos(heading). y += Δdistance × sin(heading). Error accumulation: each tick measurement has ±0.5 tick error → over 100 ticks, error is ±5 ticks (~5cm). Over 10m, the robot may be 15–20cm off. This is why real autonomous vehicles use SLAM (Simultaneous Localisation and Mapping) to correct odometry drift using detected landmarks. Students experience this drift firsthand and document the accuracy degradation over distance.
RPi + Arduino Dual Architecture: Why Two Processors
Raspberry Pi: runs Linux, Python, A* pathfinding, computer vision, MQTT communication, ROS 2. Handles high-level decisions at ~10–30Hz. Arduino: bare-metal, C++, PID motor control at 100Hz, encoder reading at 1kHz, ultrasonic emergency stop in microseconds. The split exists because RPi Linux OS has non-deterministic scheduling — a kernel interrupt can delay your code by 50ms. For a PID motor controller running at 100Hz, a 50ms skip causes visible jerks. Arduino has no OS: your loop runs at exactly the rate you specify, every time. Serial communication protocol: RPi sends "FORWARD:500mm:200mm/s " → Arduino parses, executes PID to target speed, sends back "DONE:pos_x:pos_y ". Simple, reliable, text-based. No I2C (too slow for bidirectional), no SPI (full-duplex but complex). UART at 115200 baud = 11,520 bytes/second — plenty for command-response at 100Hz.
💡 Concept Spotlight
Why Simulate Before Building: The Cost of Physical Bugs
Webots is a physics simulation environment (open-source, EPFL). A software bug in simulation: fix code, restart simulation, 0 seconds of damage. A software bug in a physical robot: robot drives into a shelf at full speed, potentially breaking the servo horn, bending a printed chassis part, or dislodging wires. Repair time: 30 minutes minimum. Cost: ₹200–500 in parts. A pathfinding bug that causes an infinite loop: robot spins in place forever in Webots → immediately obvious, zero damage. Same bug on the physical robot: motor heating, battery drain, potential H-bridge overheating. NASA simulates Mars rovers for 3 years before launch — not because simulation is perfect but because fixing bugs in simulation costs seconds, in space costs billions. Students run all A* algorithms and collision avoidance logic in Webots until 10 consecutive task completions without errors before touching physical hardware.
Analogy: An architect builds a 3D model before construction, a pilot trains in a simulator before flying, a surgeon practices on cadavers before a patient. Physical consequences demand simulation first. The PREKSHA robot is a physical system — validate all logic in Webots, then deploy to hardware.
Term 2
July – September 2026
Swarm Task Allocation: Multi-Robot Coordination
Three robots, multiple tasks, one coordinator. Greedy nearest-robot algorithm: when a new package arrives at the pickup station, for each idle robot compute Euclidean distance from robot's current grid position to pickup position. Assign the task to the nearest idle robot. Mark robot as "busy." When robot completes task: publish "idle" to MQTT, coordinator assigns next pending task. Time complexity: O(R×T) per assignment (R robots, T tasks) — fast enough for real-time decisions. Suboptimal: greedy doesn't always minimise total time. Optimal multi-robot task allocation (Hungarian algorithm / assignment problem) is O(n³) — tractable for 3 robots and 10 tasks. Students implement both and compare total delivery time across 20 test runs. The greedy algorithm typically achieves 85–95% of optimal performance at 100× less computational cost — the engineering tradeoff students must quantify and defend in their technical report.
Collision Avoidance in a Multi-Robot System
Single robot: ultrasonic detects obstacle ahead → stop → re-route via A*. Multi-robot: even if each robot avoids static obstacles, two robots navigating toward the same grid cell simultaneously collide with each other. Solution: the central coordinator maintains a "reserved cells" map. Before executing a path segment, each robot requests reservation of its next cell. If already reserved (by another robot), the robot waits. First-come-first-serve with random tiebreak prevents deadlock. Deadlock can still occur: Robot A holds cell (2,3) and needs (3,3). Robot B holds (3,3) and needs (2,3). Neither can move. Deadlock detection: if any robot hasn't moved for 5 seconds → one robot backs up one cell and replans. This is simpler than full deadlock prevention but sufficient for a 5×5 grid with 3 robots. Students test their deadlock resolution by deliberately creating a T-junction situation.
Fleet Dashboard: Real-Time Fleet Visibility
The Next.js fleet dashboard (same codebase pattern as the Track 1 SaaS project) connects to the MQTT broker via a WebSocket bridge (MQTT over WebSockets, port 9001). The React frontend subscribes to /fleet/+/position and /fleet/+/status topics. A 5×5 SVG grid renders the warehouse. Three robot icons move to their current grid positions as MQTT messages arrive. Task queue sidebar: pending → in-progress → completed with timestamps. KPI cards: deliveries per hour, average task completion time, idle percentage per robot. Alert: battery <20% → robot icon turns red → Telegram notification to the lab instructor. The dashboard is deployed on the same Vercel account as the student's portfolio — demonstrating code and deployment reuse across projects.
Mind fact: Amazon's warehouse robots (originally Kiva Systems, acquired 2012 for $775M) move at 5 feet/second carrying up to 750kg of shelving. They use magnetic dots embedded in the warehouse floor for localisation (not GPS, not cameras) — 0.3mm accuracy. The entire floor of a 1 million sq.ft. warehouse has 25 million magnetic dots installed at precise intervals. The robots' A* pathfinding coordinates 750,000 robots globally. When an Amazon warehouse processes 1 million items/day, it makes 25 million robot path decisions. The algorithm Class 12 students implement is exactly the same — the scale is simply 250,000× larger.
Term 3
October – December 2026
Grand Capstone Live Demo: Real Stakes, Real Evaluation
Three physical Raspberry Pi robots on a 1m×1m grid board (marked with black tape grid lines). Instructor places 3 coloured packages (red, green, blue blocks) at the pickup station. Students start the fleet — coordinator assigns packages to nearest idle robots. Each robot: navigates to pickup (A* pathfinding + PID motor control), YOLOv8 identifies package colour (same model trained in Class 11), navigates to the correct colour-coded delivery shelf, signals delivery complete. Fleet dashboard on the classroom projector: shows all 3 robots moving in real time, task queue updating, delivery count incrementing. Time trial: how long to deliver 6 packages? Students must achieve <5 minutes for full marks. Panel of 2 PREKSHA faculty + 2 invited engineers asks technical questions during and after: "Why did Robot 2 wait at that grid cell?" "What happens if the ultrasonic false-triggers?" "How does your deadlock resolution work?" The ability to answer under pressure is as important as the demo itself.
Technical Report and Video Documentation
Every engineering project requires documentation. Technical report structure: system overview (architecture diagram with all components), pathfinding algorithm analysis (A* implementation, time complexity, comparison with greedy baseline), control systems (PID tuning methodology, Kp/Ki/Kd values justified, response curve graphs), vision system (YOLOv8 confusion matrix, mAP@50 per class, failure cases documented), swarm coordination (task allocation algorithm, deadlock resolution, measured performance vs optimal), known limitations and future improvements. Video documentation: 5-minute screencast of full demo with voiceover explaining each component. Both submitted to a shared PREKSHA project archive — Class 6 students in 2030 will be able to watch Class 12's 2026 demo and be inspired by what's achievable.
🤖
Grand Capstone — IoT Track
3-Robot Autonomous Warehouse Fleet + Fleet Dashboard
3× RPi + Arduino robots, A* pathfinding (Webots validated), PID motor control, encoder odometry, YOLOv8 colour classification. Swarm MQTT coordinator with greedy task allocation + deadlock resolution. Next.js fleet dashboard: live 5×5 grid SVG, task queue, KPI cards, battery alerts. Technical report + 5-minute demo video. Live demo to 4-person panel. 6 packages delivered autonomously in <5 minutes. Technical questions answered under pressure.
A* Pathfinding Encoder Odometry Webots Digital Twin Swarm MQTT Coordination Deadlock Resolution Fleet Dashboard (Next.js) Technical Report Writing
🧠
Track 3 — Full AI Product Development
Advanced RAG · Hybrid Search · RAGAS · AI Agents · Multi-modal · AI Safety · Product Pitch
Term 1
April – June 2026
Advanced RAG: Chunking Strategy, Reranking, and Hybrid Search
Naive RAG fails because of chunking: split a 10-page PDF into fixed 512-token blocks → some chunks cut mid-sentence, losing context. The chunk about "Week 5: Servo motors" is split so "servo" is at the end of chunk 12 and "motor control" starts chunk 13. Vector search returns chunk 12 but the answer is in chunk 13. Solutions: recursive character text splitter (respects paragraphs, then sentences), semantic chunking (split where the topic changes — uses embedding similarity between consecutive sentences to detect topic boundaries). Reranking: initial vector search retrieves top-20 candidates. Cross-encoder reranker (Cohere Rerank API or sentence-transformers cross-encoder) re-scores all 20 by relevance to the specific query. The top-5 after reranking are more accurate than the original top-5. Hybrid search: run BM25 keyword search AND dense vector search simultaneously, merge results via Reciprocal Rank Fusion. Finds documents matching both the meaning AND the specific keywords — best of both retrieval paradigms.
Real world: Perplexity.ai (10M+ daily active users, 2024) achieves high quality answers through exactly this pipeline: hybrid retrieval → reranking → top-5 → GPT-4 with citation prompt. Their Faithfulness score (do answers come from retrieved content?) is a KPI tracked daily by the engineering team. Below 0.82 triggers an investigation.
RAGAS: Automated Evaluation of RAG Quality
RAGAS (Retrieval Augmented Generation Assessment, Shahul Es et al., 2023) provides automated metrics that correlate with human quality judgements: Faithfulness: for each sentence in the answer, use an LLM to check if it can be inferred from the retrieved context chunks. Score = faithful sentences / total sentences. Target: >0.85. Answer Relevancy: use an LLM to generate N candidate questions from the answer, measure cosine similarity between these generated questions and the original question. High relevancy = the answer addresses the actual question. Target: >0.82. Context Recall: use the ground truth answer to check if the retrieved context contains the information needed to answer correctly. Target: >0.75. These metrics run automatically on a test set of 50 question-answer pairs, giving a quantitative quality score in minutes. Students run RAGAS after every RAG improvement (better chunking, reranking added) to measure the effect — turning AI development from art to engineering.
Streaming with Server-Sent Events: The LLM Real-Time Experience
Without streaming: user asks question → API waits 10 seconds for the full LLM completion → returns the entire answer at once → user stares at a spinner for 10 seconds. With streaming: API sends tokens as they're generated → user sees the answer forming word-by-word → much better perceived responsiveness (same total time, very different experience). Server-Sent Events (SSE): HTTP response with Content-Type: text/event-stream. Server writes "data: token " incrementally. Browser's EventSource API reads tokens as they arrive: source.onmessage = event => append(event.data). FastAPI SSE: async def stream_chat(): async for chunk in openai.stream(): yield f"data: {chunk.choices[0].delta.content} ". Next.js frontend: useEffect to manage EventSource lifecycle, useState to accumulate tokens. The streaming experience is what separates a professional-feeling AI app from a clunky one. Every successful LLM product (ChatGPT, Claude.ai, Gemini) uses streaming.
💡 Concept Spotlight
RAGAS: Measuring What Matters in RAG Systems
Traditional ML evaluation is straightforward: compare model output to ground-truth label, compute accuracy/F1. RAG evaluation is harder: the output is natural language text — you can't compare strings. RAGAS uses LLMs to evaluate LLM outputs: for Faithfulness, an LLM acts as a judge, checking each factual claim in the answer against the retrieved context. For Answer Relevancy, an LLM generates hypothetical questions from the answer and measures their semantic similarity to the original question. This "LLM as judge" approach correlates with human evaluation at 0.85+, and runs automatically on any test set. It enables: comparing RAG pipelines systematically, catching quality regressions before they reach users, and setting SLOs (Service Level Objectives) for AI product quality — "our Faithfulness score must stay above 0.82 or we alert the team."
Analogy: Evaluating an essay with RAGAS is like having an expert examiner who checks: Did the student cite real sources? (Faithfulness). Did they answer the actual question, not a related one? (Answer Relevancy). Did they find all the relevant information available? (Context Recall). Faster than human grading, consistent, and automated at scale.
Term 2
July – September 2026
AI Agents: LLMs That Take Actions, Not Just Answer
An AI agent is an LLM that can use tools. OpenAI function calling: define tools as JSON schemas (name, description, parameters). The LLM decides which tool to call based on the user's request. Your code executes the tool and returns the result. The LLM uses the result to continue reasoning. Tool examples: search_curriculum(query) — searches PREKSHA Pinecone database. get_student_progress(student_id) — queries PostgreSQL. send_reminder(student_id, message) — calls the Telegram Bot API. An agent loop: user asks "Which Class 9 students haven't submitted their Node.js project?" → LLM calls get_student_progress for Class 9 → receives list of submissions → identifies missing ones → LLM calls send_reminder for each → summarises actions taken. One query, multiple tool calls, meaningful real-world effect. CrewAI: orchestrate multiple agents with different roles (researcher, writer, critic) working in sequence. AutoGen: agents that write and iteratively fix code until tests pass.
Multi-Modal AI: Vision + Language Combined
GPT-4V (Vision) accepts images alongside text in the prompt. Applications: OCR replacement (photo of a handwritten circuit diagram → extract component values and connections as JSON), diagram explanation (photo of a Class 8 IoT wiring → explain what's connected and whether the resistors are correct), accessibility (describe a PREKSHA lab photo for a visually impaired student), assignment grading (student submits photo of handwritten code → GPT-4V checks for syntax errors and logic issues). Implementation: the image is base64-encoded and included in the messages array alongside text. Token cost: a 512×512 image costs ~170 tokens. A detailed image at 1024×1024 costs ~765 tokens. Students build the multi-modal assignment helper: teacher uploads photo of student's handwritten circuit, prompt asks "Check if the resistor values are correct given a 5V supply and standard LEDs. Explain any errors clearly for a 13-year-old." — directly useful in the PREKSHA lab.
AI Safety: From Theory to Practice in Your Product
The EU AI Act (2024) classifies AI systems by risk. High-risk: education and vocational training (directly affects student outcomes). AI systems in education must: provide transparency to users that they're interacting with AI, ensure human oversight of automated decisions, maintain audit logs of all interactions, allow users to challenge automated outputs. The PREKSHA AI Study Assistant qualifies as high-risk — it directly affects students' understanding of curriculum. Requirements students must implement: system prompt disclosure ("I'm an AI assistant for PREKSHA curriculum — I may make mistakes"), clear citation of source documents, teacher oversight dashboard showing which questions were asked and answered, anomaly detection (alert if a student's query pattern suggests academic dishonesty), rate limiting (prevent students from using the AI to complete assignments wholesale rather than learn).
Industry Connection
Khan Academy's Khanmigo (GPT-4-powered AI tutor, launched 2023) is a production RAG + agent system serving millions of students. Architecture: RAG over Khan Academy's curriculum content, agent with tools to view student progress and suggest specific exercises, streaming responses, teacher oversight dashboard. Khanmigo explicitly refuses to do homework for students — it asks Socratic questions instead. The PREKSHA AI Study Assistant that Class 12 students build is architecturally identical. The difference: Khanmigo has 50 engineers; PREKSHA Class 12 has 2 students and 8 months of PREKSHA training.
Term 3
October – December 2026
Full AI Product: Architecture to Production to Pitch
The Class 12 AI grand capstone integrates all three years of AI/ML learning: Document ingestion: 7 years × 3 tracks × 3 terms × topic descriptions = 63 curriculum units + all PREKSHA project descriptions → LangChain PDF/text loader → recursive text splitter (512 tokens, 50 overlap) → OpenAI ada-002 embeddings → Pinecone upsert. Query pipeline: embed question → Pinecone hybrid search (top-20) → Cohere reranking (top-5) → GPT-4o with source citation prompt → stream via FastAPI SSE → render in Next.js chat UI with source drawer. Memory: ConversationBufferWindowMemory (last 6 turns). Multi-modal: student can upload circuit diagram photo → GPT-4V answers questions about it → answer stored in conversation history. Teacher analytics: track which curriculum topics are queried most frequently → identify knowledge gaps → inform next year's teaching focus. RAGAS evaluation suite: 50 test Q&A pairs covering all 7 classes, run on every code change via CI/CD. Target: Faithfulness >0.85, Answer Relevancy >0.82. Full CI/CD: GitHub Actions → pytest → RAGAS eval → deploy to Railway (FastAPI) + Vercel (Next.js).
The Business Pitch to PREKSHA Management
The AI Study Assistant is pitched to PREKSHA Academy management as a real product for real adoption in 2027. Pitch deck: (1) Problem — "PREKSHA Class 6 students spend 45 minutes per week looking for specific curriculum explanations across notes, the website, and asking teachers. This wastes 22.5 hours of learning time per student per year." (2) Solution — live demo of the chat assistant answering a Class 6 question about HTML, with citations. (3) Technical architecture — one diagram, explained in 3 minutes. (4) Quality metrics — RAGAS Faithfulness 0.87, Answer Relevancy 0.84 — shown as a chart across iterations. (5) Cost model — OpenAI API cost: ₹0.32 per student per month at 50 queries/month. Pinecone free tier covers 1M vectors. Total cost: ₹0.32 × 500 students = ₹160/month. (6) Adoption plan — Class 6 pilot (lowest stakes, most benefit), expand after one semester. (7) Safeguards — teacher override dashboard, EU AI Act compliance checklist. Management votes yes/no on adoption. The most meaningful assessment of the year: a real product decision by real stakeholders.
Common Misconception
"A higher RAGAS score always means a better AI product." — RAGAS measures retrieval quality and factual groundedness — important but not everything. A RAG system can have Faithfulness=0.95 and still be a poor product if: latency is 15 seconds per query (users abandon), the UI is confusing (users don't understand the citations), the chunking doesn't cover niche topics students actually ask about, or the system confidently says "I don't have information on this" for questions that ARE covered (poor recall). Product quality = retrieval quality (RAGAS) + latency (p50/p95) + UX (user satisfaction score) + coverage (% of curriculum topics answerable) + safety (no harmful outputs). RAGAS is one metric in a multi-dimensional quality space. Optimising one metric at the expense of others is how products fail despite "good scores."
Grand Capstone — AI/ML Track
PREKSHA AI Study Assistant — Production RAG Product
Hybrid RAG (vector + BM25) + Cohere Reranking + GPT-4o + Pinecone + FastAPI SSE streaming + Next.js chat UI with source citation drawer. Multi-modal: photo upload for circuit/schematic questions. AI Agents: Socratic mode (asks guiding questions instead of direct answers). Teacher dashboard: query analytics, knowledge gap identification. RAGAS eval suite (50 Q&A pairs) runs in CI/CD. Faithfulness >0.85. EU AI Act compliance checklist. Pitched to PREKSHA management with real adoption proposal. If adopted, used by incoming Class 6 students in 2027.
Advanced RAG + Hybrid Search Cohere Reranking RAGAS Evaluation Suite AI Agents + Tool Use Multi-modal GPT-4V FastAPI SSE Streaming AI Safety + EU AI Act
Weekly Schedule — Class 12 (Grand Capstone Year)
Day Slot 1 (2:00–3:30 PM) Slot 2 (3:30–5:00 PM)
Monday 💻 Microservices + Docker Architecture 💻 SaaS Build + Stripe + Playwright
Tuesday ⚡ A* Pathfinding + Webots Simulation ⚡ Robot Fleet Build + Swarm Coordinator
Wednesday 🧠 Advanced RAG + RAGAS Theory 🧠 AI Product Build + Agent Dev + RAGAS Lab
Thursday 🎤 Industry Guest Lectures + Mentorship Sessions 📋 All-Track Capstone Work (3 tracks simultaneously)
Friday 🏆 Demo Prep + Pitch Practice + Technical Report Writing 📝 Peer Code Reviews + Cross-Track Collaboration
Saturday 🌟 Monthly Grand Demo Day · Industry Panel Reviews · PREKSHA Management Pitch · Parent Open House
Track 1 Grand Assessment
SaaS product + microservices all deployed and working 30%
CI/CD pipeline: all checks green, Playwright E2E passing 25%
Industry panel pitch score (clarity + tech depth) 25%
Open source PR merged (show GitHub notification) 20%
Track 2 Grand Assessment
Live demo: 6 packages delivered autonomously <5 min 40%
Fleet dashboard live + all 3 robots visible in real time 20%
Technical Q&A with panel (pathfinding, PID, swarm) 25%
Technical report + Webots simulation video evidence 15%
Track 3 Grand Assessment
AI product live, RAGAS Faithfulness >0.85 (CI/CD proves it) 35%
PREKSHA management pitch (adoption decision made) 30%
EU AI Act compliance checklist completed 20%
RAGAS improvement tracked across 3+ pipeline iterations 15%