
A friendship that teaches the hardest lesson — letting go.
The Cry in the Forest
Akum heard the sound while collecting firewood in the forest above his village in Nagaland. It was a small, high sound — like a kitten mewing, but wilder, more desperate.
He followed the sound through ferns and fallen logs until he found it: a clouded leopard cub, no bigger than a house cat, caught in a tangle of creeper vine. One paw was twisted, and the cub's cloud-shaped spots were matted with mud and blood.
"Don't bite me," Akum whispered, and carefully untangled the vines.
The cub looked at him with golden eyes — frightened but too weak to run. Akum wrapped it in his shawl and carried it home.
The Healing
Akum's grandfather, a retired hunter who now spent his days carving wood, looked at the cub and shook his head.
"Clouded leopards are wild, Akum. You can't keep it."
"I won't keep it," said Akum. "I'll just fix it."
He splinted the twisted paw with bamboo sticks and strips of cloth. He fed the cub warm milk mixed with rice water. He made a nest of old blankets behind the woodpile and checked on it every hour.
The cub healed slowly. After a week, it could stand. After two weeks, it could walk. After three weeks, it could climb — and it climbed everything. The woodpile. The fence. The roof of the chicken coop. The chickens were not pleased.
Akum named the cub Meghla — cloud — because of the dark cloud-shapes on her fur.
The Friendship
For two months, Akum and Meghla were inseparable. Meghla slept on Akum's bed. She followed him to the edge of the village (but never into it — she was still wild enough to fear crowds). She played with Akum's feet when he did homework. She purred — a deep, rumbling purr — when he scratched behind her ears.
But as Meghla grew, things changed. She stopped eating rice and milk and started catching mice on her own. She disappeared for hours into the forest and came back with feathers on her whiskers. Her claws, once small and retractable, were now long and hooked and left scratches on the bamboo floor.
"She's becoming what she is," said his grandfather. "And what she is, is not a pet."
The Letting Go
One evening, Akum carried Meghla to the edge of the forest — the deep part, where the trees were tall and the undergrowth was thick and the sounds of the village couldn't reach.
He set her down on a mossy log. Meghla looked at him. Akum looked at her. His throat hurt in the way it hurts when you're trying very hard not to cry.
"Go on," he said. "This is where you belong."
Meghla didn't move. She tilted her head, the way she always did when she was confused.
"Go," said Akum, louder this time. He turned around and walked away. He didn't look back, because he knew that if he did, he would pick her up and take her home.
He heard a rustle behind him — the sound of a clouded leopard disappearing into the canopy, moving through the trees the way clouds move through the sky. Silent. Beautiful. Free.
The Return
Akum cried that night. And the next night. And the one after that.
But a week later, while collecting firewood in the same part of the forest, he found something on the mossy log where he had said goodbye: a freshly caught pheasant, still warm, placed neatly on the moss.
He looked up into the canopy. Two golden eyes blinked at him from a high branch — then vanished into the leaves.
Meghla was wild now. But she hadn't forgotten.
And every now and then, on the mossy log at the edge of the forest, Akum would find a gift — a bird, a fish, a bundle of feathers — left by a friend who couldn't stay but never truly left.
The end.
Choose your level. Everyone starts with the story — the code gets deeper as you go.
Here is a taste of what Level 1 looks like for this lesson:
# Simulate GPS trilateration in 2D import numpy as np # Three "satellites" at known positions sat_A = np.array([0.0, 0.0]) sat_B = np.array([10.0, 0.0]) sat_C = np.array([5.0, 8.66]) # True animal position (unknown to us) true_pos = np.array([4.0, 3.0]) # Measured distances (with small noise) d_A = np.linalg.norm(true_pos - sat_A) + np.random.normal(0, 0.1) d_B = np.linalg.norm(true_pos - sat_B) + np.random.normal(0, 0.1) d_C = np.linalg.norm(true_pos - sat_C) + np.random.normal(0, 0.1) # Solve with least squares (linearised) # From d_A^2 = x^2 + y^2 and d_B^2 = (x-10)^2 + y^2: # d_A^2 - d_B^2 = 20x - 100 => x = (d_A**2 - d_B**2 + 100) / 20 x_est = (d_A**2 - d_B**2 + 100) / 20 y_est = (d_A**2 - d_C**2 + 25 + 75.0) / (2 * 8.66) # • What does this code calculate? # • Why does the noise cause a small error?
This is just the first of 6 coding exercises in Level 1. By Level 4, you will build: Map Wildlife Movement from GPS Tracking Data.
By Level 4, enrolled students build: Map Wildlife Movement from GPS Tracking Data
Free
Level 0: Listener
Stories, science concepts, diagrams, quizzes. No coding.
You are here
Level 0 is always free. Coding levels (1-4) are part of our 12-Month Curriculum.
A friendship that teaches the hardest lesson — letting go.
The big idea: "The Boy Who Befriended a Clouded Leopard" teaches us about Animal Conservation & Tracking — and you don't need to write a single line of code to understand it.
Imagine you are blindfolded in a huge, dark field. A friend stands somewhere in the field and shouts "You are 50 metres from me!" That one piece of information tells you that you are somewhere on a circle of radius 50 m around your friend — but there are infinitely many points on that circle. You cannot pinpoint your location from just one distance. Now a second friend, standing at a different spot, shouts "You are 30 metres from me!" You draw a second circle. The two circles overlap in exactly two points. Getting closer! Now a third friend shouts a distance. Three circles overlap at just ONE point. That is your exact location.
This is precisely how GPS (Global Positioning System) works. Instead of friends in a field, there are 31 satellites orbiting Earth at about 20,200 km altitude. Each satellite constantly broadcasts a signal that says "I am at position (x, y, z) and the time right now is T." Your GPS receiver picks up the signal and notes when it arrived. Because radio signals travel at the speed of light (299,792 km/s), the receiver can calculate the distance: distance = speed × travel time. With distances from three satellites, it draws three huge spheres in space. The one point where all three spheres overlap is your position on Earth. A fourth satellite corrects for clock errors.
For wildlife tracking, scientists fit a GPS collar around a clouded leopard’s neck. The collar contains a GPS receiver, a battery, and a tiny computer that records the leopard’s latitude and longitude every few hours. After weeks or months, the collar either drops off automatically (a timed release mechanism) or transmits data via satellite to the researchers’ computers. The result is hundreds of coordinate points tracing the animal’s movements — where it hunts, where it sleeps, how far it travels, and which paths it avoids. This is how scientists mapped the first-ever home ranges of clouded leopards in Nagaland.
Key idea: GPS pinpoints location using trilateration: measuring distances from three satellites, each distance defining a sphere, and finding the single point where all three spheres intersect.
Clouded leopards are nocturnal, arboreal, and terrified of humans. You could sit in a Nagaland forest for ten years and never see one. So how do scientists photograph them? They let the animals photograph themselves — using camera traps.
A camera trap is a weather-proof camera strapped to a tree, connected to a PIR (passive infrared) sensor. Here is how the PIR sensor works. Every warm object — your body, an animal, a cup of tea — emits infrared radiation. Infrared is a type of light with wavelengths longer than visible red (about 700–14,000 nm). You cannot see it, but you feel it as heat. The PIR sensor contains a pyroelectric crystal that generates a tiny voltage when infrared radiation hits it. When nothing is moving, the infrared pattern in front of the sensor stays constant, and the voltage stays steady. When a warm animal walks past, the infrared pattern CHANGES — one zone of the sensor gets more infrared, then less. This sudden change triggers the camera.
The trigger speed matters enormously. A clouded leopard can cross a trail in under two seconds. If the camera takes one second to wake up, the animal is already gone. Modern camera traps trigger in 0.2–0.5 seconds — fast enough to catch a running leopard mid-stride. The camera fires an infrared flash (invisible to the animal) rather than a white flash (which would scare it and ruin the shot). The photo is stamped with the date, time, temperature, and moon phase, then saved to an SD card.
The critical insight: every clouded leopard’s cloud-shaped spots are unique, like a human fingerprint. By photographing both flanks (left and right sides), researchers build an ID catalogue. When the same individual appears at different traps on different dates, scientists know it is alive, moving, and occupying a specific area. This is the foundation of every population estimate for this species.
Key idea: Camera traps use passive infrared sensors to detect the heat signature of moving animals, triggering a photograph without human presence — the only reliable way to study secretive species like clouded leopards.
Access all 130+ lessons, quizzes, interactive tools, and offline activities
Here is a puzzle. You have a jar full of white beads — hundreds of them — but you cannot count them all. How do you estimate the total? The mark-recap...
Fifty years ago, a Naga village elder could walk into the forest and know where the leopards were. He had a lifetime of observation. Today, that fores...