
A fish who wanted to see the sky — aquatic ecosystems explained.
The Curious Fish
In the Barak River, which flows through the green valley of southern Assam, there lived a silver fish named Borali. Borali was the fastest swimmer in the river, but speed wasn't enough for her. She had a question that no other fish could answer.
"What does the sky look like from up there?"
From underwater, the sky was just a wobbly, bright ceiling. Borali could see light and shadow, but never the details. She wanted to see clouds. She wanted to see birds. She wanted to see what the world looked like without water in the way.
The First Jump
One morning, Borali swam as fast as she could toward the surface and leaped. For one glorious second, she was in the air — and she saw it. The sky. Blue and enormous, with white clouds shaped like elephants and mountains and sleeping cats.
Then she fell back with a splash.
"What did you see?" asked the other fish.
"Everything!" gasped Borali. "The sky is amazing. There are shapes up there — white, floating shapes that change and move. And the air! The air is light and warm and it smells like flowers!"
"You're making that up," said the old catfish.
"Jump and see for yourself!" said Borali.
The Jumping Contest
One by one, the fish of the Barak began to jump. The small ones could only get a glimpse — a flash of blue before they fell back. The bigger ones stayed up longer and saw more. The mahaseer jumped so high that he saw the hills in the distance and came back speechless with wonder.
Soon, jumping became the favourite activity in the river. Every morning, the fish would leap — not to catch insects, not to escape predators, but simply to see. Each jump was a tiny vacation from the underwater world. Each jump brought back a new story.
"I saw a bird!" said one.
"I saw a rainbow!" said another.
"I saw a child waving at me!" said a third.
The Lesson
The old catfish, who was too heavy to jump, listened to all the stories and finally said something wise: "You know, you don't jump because you want to leave the river. You jump because seeing something new makes you love where you live even more."
Borali thought about that. It was true. Every time she fell back into the water after a jump, the river felt more like home. The cool current felt more refreshing. The pebbles on the riverbed looked more beautiful. Seeing the sky didn't make her want to leave — it made her grateful for both worlds.
And that is why, to this very day, if you sit by the Barak River and wait quietly, you will see fish jumping. They are not chasing food. They are not running from danger. They are just looking at the sky — because a curious fish named Borali taught them that the world is bigger than your water, and the only way to see it is to jump.
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:
import numpy as np
import matplotlib.pyplot as plt
# How does water temperature affect dissolved oxygen?
temps = np.array([5, 10, 15, 20, 25, 30, 35])
do2 = np.array([12.8, 11.3, 10.1, 9.1, 8.2, 7.5, 6.9]) # mg/L
plt.figure(figsize=(8, 5))
plt.plot(temps, do2, 'o-', color='#3b82f6', linewidth=2)
plt.axhline(y=4, color='red', linestyle='--', label='Stress zone')
plt.fill_between(temps, 0, 4, alpha=0.1, color='red')
plt.xlabel("Water temperature (°C)")
plt.ylabel("Dissolved oxygen (mg/L)")
plt.title("Warmer Water = Less Oxygen for Fish")
plt.legend()
plt.show() # At what temperature do fish start struggling?This is just the first of 6 coding exercises in Level 1. By Level 4, you will build: Model Fish Jump Trajectories and Oxygen Triggers.
By Level 4, enrolled students build: Model Fish Jump Trajectories and Oxygen Triggers
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 fish who wanted to see the sky — aquatic ecosystems explained.
The big idea: "Why Fish Jump in the Barak River" teaches us about Fish Biology & Aquatic Ecosystems — and you don't need to write a single line of code to understand it.
You breathe air, which is about 21% oxygen. Fish breathe water — and here is the surprise: water contains only a tiny amount of dissolved oxygen, roughly 8–12 milligrams per litre in a healthy river. That is less than 1% of what air contains. So how do fish get enough?
The answer is gills. As water flows over a fish’s gills, oxygen passes through thin membranes into the blood. The trick is countercurrent exchange: blood flows in the opposite direction to the water. This keeps a concentration difference along the entire gill surface, allowing the fish to extract up to 80–90% of the dissolved oxygen — far more efficient than our lungs (~25%). Think of it like wringing out a wet towel: by twisting the opposite way, you squeeze out more water.
Here is the critical problem: warm water holds less oxygen. At 5°C, water can dissolve about 12.8 mg/L of oxygen. At 30°C, it drops to about 7.5 mg/L. Gas molecules move faster in warm water and escape into the air more easily. Add pollution (which feeds oxygen-consuming bacteria) and algal blooms (which consume O₂ at night), and you can get dangerously low levels.
When dissolved oxygen drops below about 4 mg/L, fish become stressed. They gasp at the surface, cluster near rapids (where water is churned and aerated), or — as Borali showed us — they jump. Jumping is a last-resort survival behaviour: the fish is literally trying to gulp air because the water is not providing enough oxygen.
Key idea: Fish breathe dissolved O₂ through their gills. Warm water holds less oxygen, so hot weather + pollution = stressed fish that gasp and jump.
A fish jumping out of water looks dramatic, but it is never random. Every jump is a response to a specific pressure. Let’s walk through the four main reasons, because understanding them turns a simple splash into a readable signal.
1. Low oxygen. As we just learned, when dissolved O₂ drops too low, some fish leap to gulp air at the surface. Certain species (like climbing perch and snakeheads) have a special “labyrinth organ” that lets them breathe air directly. But even species without this organ will jump and splash — the impact stirs up the water surface, mixing in a tiny bit of extra oxygen.
2. Parasite removal. Fish carry external parasites — leeches, flukes, and lice that attach to gills, fins, and scales. Jumping and slapping back against the water surface generates a shock force that can dislodge these hitchhikers. Studies on salmon show that heavily parasitized fish jump significantly more often than clean fish. The harder the landing, the more parasites get knocked off.
3. Predator escape. When a heron strikes from above or a larger fish attacks from below, prey fish explode out of the water in an unpredictable direction. This works because aquatic predators cannot follow into the air, and the random re-entry point makes it nearly impossible to predict where the fish will land. It is the underwater equivalent of a surprise exit through a window.
4. Migration barriers. During spawning season, salmon and mahseer must travel upstream to reach shallow, gravelly breeding grounds. When they hit a waterfall or rapids, they jump. These are not panic jumps — the fish reads the current, positions itself in the fastest upward flow, and launches at 60–80° from horizontal. Biologists have measured that this angle range maximizes height for a given speed.
Key idea: Fish jump to gulp oxygen, shake off parasites, escape predators, or clear migration obstacles. Each jump type has a different trigger and purpose.
Access all 130+ lessons, quizzes, interactive tools, and offline activities
A fish jump is a physics problem in disguise. It starts underwater with what biologists call a **C-start**: the fish bends its body into a tight C-sha...
Here is the powerful idea: **fish behaviour is a real-time indicator of river health**. You do not need expensive instruments to know something is wro...