An anime-guided Python tutor that grows with you — from your first print() to your first trained model.
She's not just patient. She's delighted you're here.
Built by Omega Mu Gamma Studio · the team behind SeeDS, KMapX, EG Suite, GateLab, Java-chan, and PlusPlus-chan.
Python-chan is a browser-based Python learning app where a warm, brilliant mascot character walks students all the way from "what is a variable" to "I just trained a logistic regression model." She's the friend who already understands the thing you're stuck on, and explains it like she's genuinely glad you asked.
Unlike the rest of the Chan family, Python-chan isn't a single curriculum — she's three full courses, stacked. Foundations gets you fluent. Data Science gets you working with real datasets. Machine Learning gets you building models that predict things. Each course is its own complete 5-unit, 75-lesson arc, and they're designed to be taken in order — but a confident self-learner can jump straight to Course 2 or 3 if they already know their basics.
No abstract theory walls. No condescension. Just Python, three courses deep, taught by someone who's thrilled you're learning it.
🔗 Try it live → python-chan.vercel.app
Every lesson across all 225 lessons follows this exact structure:
| Phase | Name | What Happens |
|---|---|---|
| 1 | See It Work | Python-chan shows working code, the output, and explains what's happening line by line |
| 2 | See It Break | Same code, deliberately broken — she explains the error, why it happened, and what it teaches you |
| 3 | You Try | Student writes code or fills in blanks; pattern-based validation gives immediate feedback |
Validation is regex/pattern-based — no code execution in the browser. This keeps the app lightweight and deployable anywhere.
| Course | Focus | Units | Lessons |
|---|---|---|---|
| 1 | Foundations | 5 | 75 |
| 2 | Data Science Track | 5 | 75 |
| 3 | Machine Learning Track | 5 | 75 |
📖 View Course 1 — Foundations (75 lessons)
Unit 1 — Getting Started 1.1 What is Python and Why It Matters · 1.2 Setting Up Your Environment · 1.3 Your First Python Program · 1.4 Variables and Assignment · 1.5 Basic Data Types — int, float, str, bool · 1.6 Type Conversion · 1.7 Arithmetic Operators · 1.8 Comparison and Logical Operators · 1.9 String Formatting with f-strings · 1.10 Getting Input from the User · 1.11 Comments and Code Hygiene · 1.12 Common Beginner Errors · 1.13 How Python Reads Your Code · 1.14 The Python REPL · 1.15 Mini Challenge — Hello, World Done Right
Unit 2 — Control Flow and Functions 2.1 if, elif, else · 2.2 Nested Conditionals · 2.3 while Loops · 2.4 for Loops · 2.5 break, continue, pass · 2.6 Defining Functions · 2.7 Parameters and Arguments · 2.8 Return Values · 2.9 Default and Keyword Arguments · 2.10 Scope — Local vs Global · 2.11 Recursion Basics · 2.12 Lambda Functions · 2.13 map and filter · 2.14 List Comprehensions · 2.15 Mini Challenge — FizzBuzz Your Way
Unit 3 — Collections 3.1 Lists and Indexing · 3.2 List Methods and Slicing · 3.3 Tuples — Immutable Sequences · 3.4 Dictionaries — Keys and Values · 3.5 Dictionary Methods · 3.6 Sets and Set Operations · 3.7 Nested Collections · 3.8 Iterating Over Collections · 3.9 zip and enumerate · 3.10 Sorting and Reversing · 3.11 Unpacking and Spreading · 3.12 Dictionary Comprehensions · 3.13 Choosing the Right Collection · 3.14 Common Collection Patterns · 3.15 Mini Challenge — Word Frequency Counter
Unit 4 — Files, Errors, and Modules 4.1 Opening and Reading Files · 4.2 Writing to Files · 4.3 Working with CSV · 4.4 Try, Except, Finally · 4.5 Raising Custom Exceptions · 4.6 Context Managers — with Statement · 4.7 Importing Modules · 4.8 The Standard Library Tour · 4.9 Installing Packages with pip · 4.10 Virtual Environments · 4.11 os and pathlib · 4.12 datetime Module · 4.13 random Module · 4.14 Writing Your Own Module · 4.15 Mini Challenge — File-Based To-Do List
Unit 5 — Object Oriented Python and Final Project 5.1 Classes and Objects · 5.2 The init Method · 5.3 Instance Attributes and Methods · 5.4 Class Attributes and Class Methods · 5.5 Inheritance · 5.6 Method Overriding · 5.7 Encapsulation · 5.8 Polymorphism · 5.9 Magic Methods — str, len, eq · 5.10 Decorators · 5.11 PEP 8 and Writing Clean Code · 5.12 Debugging Techniques · 5.13 Writing Tests with unittest · 5.14 Project — Build a CLI App · 5.15 Project — Polish and Submit
📖 View Course 2 — Data Science Track (75 lessons)
Unit 1 — The Data Science Setup 1.1 What is Data Science? · 1.2 The Data Science Workflow · 1.3 Setting Up Jupyter and Anaconda · 1.4 NumPy Arrays vs Python Lists · 1.5 Creating and Inspecting Arrays · 1.6 Array Operations and Broadcasting · 1.7 Indexing and Slicing Arrays · 1.8 Reshaping and Stacking Arrays · 1.9 Introduction to Pandas · 1.10 Series and DataFrames · 1.11 Loading Data — CSV, Excel, JSON · 1.12 Exploring Your Dataset · 1.13 Selecting and Filtering Data · 1.14 Handling Missing Values · 1.15 Mini Challenge — Load and Describe a Dataset
Unit 2 — Data Cleaning and Transformation 2.1 Identifying Dirty Data · 2.2 Renaming Columns and Reindexing · 2.3 Data Type Conversion · 2.4 Deduplication · 2.5 String Cleaning in Pandas · 2.6 Sorting and Ranking · 2.7 GroupBy and Aggregation · 2.8 Merging and Joining DataFrames · 2.9 Pivot Tables · 2.10 Apply and Lambda in Pandas · 2.11 Binning and Discretization · 2.12 Outlier Detection · 2.13 Feature Engineering Basics · 2.14 Saving Cleaned Data · 2.15 Mini Challenge — Clean a Messy Dataset
Unit 3 — Visualization 3.1 Why Visualization Matters · 3.2 Matplotlib — Your First Plot · 3.3 Line Charts and Bar Charts · 3.4 Scatter Plots and Histograms · 3.5 Subplots and Layouts · 3.6 Styling and Themes · 3.7 Seaborn vs Matplotlib · 3.8 Distribution Plots · 3.9 Categorical Plots · 3.10 Heatmaps and Correlation · 3.11 Pair Plots · 3.12 Annotating Charts · 3.13 Interactive Plots with Plotly Intro · 3.14 Choosing the Right Chart · 3.15 Mini Challenge — Visualize a Real Dataset
Unit 4 — Statistics and Exploratory Analysis 4.1 Descriptive Statistics · 4.2 Probability Basics · 4.3 Normal Distribution · 4.4 Binomial and Poisson Distributions · 4.5 Hypothesis Testing · 4.6 p-Values and Significance · 4.7 Correlation vs Causation · 4.8 Univariate Analysis · 4.9 Bivariate Analysis · 4.10 Multivariate Analysis · 4.11 Time Series Basics · 4.12 Rolling Statistics · 4.13 EDA Workflow · 4.14 EDA Case Study · 4.15 Mini Challenge — Full EDA Pass
Unit 5 — Intro to ML and Final Project 5.1 What is Machine Learning? · 5.2 Supervised vs Unsupervised · 5.3 Training, Validation, Test Sets · 5.4 Overfitting and Underfitting · 5.5 The Scikit-Learn API · 5.6 Linear Regression · 5.7 Logistic Regression · 5.8 Model Evaluation Metrics · 5.9 Cross Validation · 5.10 Web Scraping with BeautifulSoup · 5.11 APIs and JSON Data · 5.12 SQL with Pandas · 5.13 Project — Choose a Dataset · 5.14 Project — Full EDA and Modeling · 5.15 Project — Present Your Findings
📖 View Course 3 — Machine Learning Track (75 lessons)
Unit 1 — ML Foundations 1.1 The ML Pipeline · 1.2 Feature Engineering Principles · 1.3 Preprocessing with Scikit-Learn · 1.4 Pipelines and ColumnTransformer · 1.5 Baseline Models · 1.6 Linear Regression Deep Dive · 1.7 Polynomial Regression · 1.8 Ridge and Lasso Regularization · 1.9 Logistic Regression Deep Dive · 1.10 K-Nearest Neighbors · 1.11 Decision Trees · 1.12 Support Vector Machines · 1.13 Regression Metrics · 1.14 Classification Metrics — Precision, Recall, F1 · 1.15 Mini Challenge — Compare Three Models
Unit 2 — Ensemble Methods and Model Tuning 2.1 Bagging and Random Forests · 2.2 AdaBoost · 2.3 Gradient Boosting · 2.4 XGBoost · 2.5 Stacking and Blending · 2.6 Cross Validation Strategies · 2.7 Grid Search · 2.8 Random Search · 2.9 Feature Importance and Selection · 2.10 Dealing with Imbalanced Data · 2.11 K-Means Clustering · 2.12 DBSCAN · 2.13 Principal Component Analysis · 2.14 Dimensionality Reduction Use Cases · 2.15 Mini Challenge — Tune a Random Forest
Unit 3 — Neural Networks 3.1 The Perceptron · 3.2 Multilayer Networks · 3.3 Activation Functions · 3.4 Backpropagation Intuition · 3.5 Keras and TensorFlow Setup · 3.6 Building Your First Neural Network · 3.7 Loss Functions and Optimizers · 3.8 Dropout and Batch Normalization · 3.9 Callbacks and Early Stopping · 3.10 Saving and Loading Models · 3.11 Image Data and Preprocessing · 3.12 Convolutional Layers and Pooling · 3.13 Building a CNN from Scratch · 3.14 Transfer Learning · 3.15 Mini Challenge — Image Classifier
Unit 4 — NLP and Advanced Topics 4.1 Text Preprocessing · 4.2 Bag of Words and TF-IDF · 4.3 Word Embeddings · 4.4 Recurrent Neural Networks · 4.5 Transformers and BERT Intro · 4.6 Sentiment Analysis Pipeline · 4.7 Generative Models — GANs Intro · 4.8 Reinforcement Learning Basics · 4.9 ML Ethics and Bias · 4.10 Model Monitoring and Drift · 4.11 Saving Models — Joblib and Pickle · 4.12 Building a Flask API for Your Model · 4.13 AutoML Tools · 4.14 MLOps Overview · 4.15 Mini Challenge — Sentiment Classifier
Unit 5 — Capstone Project 5.1 Problem Selection and Scoping · 5.2 Data Collection and Cleaning · 5.3 Exploratory Analysis · 5.4 Feature Engineering · 5.5 Model Selection · 5.6 Hyperparameter Tuning · 5.7 Evaluation and Interpretation · 5.8 Handling Edge Cases · 5.9 Building a Flask API · 5.10 Model Documentation · 5.11 Bias Audit · 5.12 Peer Review Session · 5.13 Project — Final Implementation · 5.14 Project — Deployment · 5.15 Project — Presentation
- Three-phase lesson structure — See It Work → See It Break → You Try, across all 225 lessons
- Three-course progression — Foundations unlocks Data Science, which unlocks Machine Learning; advanced learners can unlock a track early via a placement quiz
- Contextual hint escalation — hint appears at 2 wrong attempts, solution unlocks at 5
- Pattern-based validation — instant feedback without a server or code execution engine
- Full lesson navigation — collapsible sidebar grouped by course → unit → lesson, with per-lesson completion tracking
- XP system — earn XP per lesson, with bonus XP for first-attempt success and hint-free runs
- 15 levels (5 more than her siblings, because there's 3x the curriculum) — clear thresholds with a persistent progress bar
- Level-gated cosmetics — new rewards unlock as you level up, tracking your shift from "learning to code" to "shipping models"
- localStorage persistence — no account needed, progress is saved in the browser
App Themes (equippable backgrounds):
| Level | Item | Style |
|---|---|---|
| 1 | Golden Hour Desk 🌇 | Warm light through the window, mug of tea steaming next to the keyboard — the default |
| 4 | Jupyter Garden 🪴 | Soft green notebook cells climbing like ivy across the screen |
| 7 | Chalkboard Constellations ✨ | Equations and scatter plots drawn in chalk dust across a night sky |
| 10 | Server Room Glow 🖥️ | Cool blue rack lights — the model is training, and she's not leaving until it finishes |
| 13 | Golden Ratio Study 📐 | Marble desk, brass instruments, the aesthetic of someone who actually reads the math behind the model |
Character Outfits (equippable; all with full 6-expression sprite art):
| Level | Outfit | Vibe |
|---|---|---|
| 1 | Sunlit Cardigan 🧶 | Soft, oversized, slightly too long sleeves. Her signature look, always equipped |
| 2 | Library Cardigan 📖 | Same warmth, draped over a reading nook fit for f-strings and footnotes |
| 4 | Lab Coat & Glasses 🔬 | Data Science Mode — ON. Pen behind the ear, sleeves rolled |
| 5 | Greenhouse Sundress 🌿 | NumPy arrays bloom like a garden when you know how to broadcast them |
| 6 | Night-Owl Hoodie 🦉 | EDA at 2am. The dataset finally makes sense |
| 8 | Professor's Blazer 🎓 | Machine Learning Mode — ON. She means business, but she's still smiling |
| 9 | Garden Witch ✨🌸 | The Ensemble Methods outfit. Many small spells, one strong forest |
| 10 | Idol — Gradient Descent 🎤 | She already performs a Celebration. Might as well dress for it |
| 12 | Neural Net Kimono 🧵 | Silver thread circuitry stitched through deep navy silk |
| 14 | Capstone Crown 👑 | You survived all three courses. Wear the crown |
| 15 | Off the Clock 🏖️ | model.deployed = True. She is, finally, allowed to rest |
Downloadable Wallpapers (phone/desktop art, save to your device):
| Level | Wallpaper | Vibe |
|---|---|---|
| 3 | Morning Notebook ☕ | Jupyter cells, coffee ring stain, golden light |
| 3 | Cherry Blossom Reading Nook 🌸 | A worn copy of a stats textbook in her lap |
| 6 | The Pandas DataFrame 🐼 | Rows and columns rendered as a quiet, orderly garden grid |
| 6 | Scatter Plot Skyline 🌃 | City lights mapped as a correlation plot, glowing softly |
| 8 | Rainy Lab Window 🌧️ | Condensation on the glass, a model training in the reflection |
| 9 | Loss Curve Sunset 📉 | The loss is finally going down. So is the sun |
| 11 | Neon Notebook Arcade 🕹️ | Retro-futurist console running an actual logistic regression |
| 12 | Mountain Summit — Convergence 🏔️ | She reached the global minimum. So did you |
| 13 | Shrine Steps — Stats Edition 🏮 | Stone steps, dawn mist, a p-value finally below 0.05 |
| 15 | Deployment Day Sunset 🌅 | The Flask API is live. Time to watch the sky instead of the logs |
Python-chan has 6 distinct expressions that fire contextually throughout lessons:
| State | Trigger |
|---|---|
idle |
Phase 1 — explaining working code |
thinking |
Hint mode; waiting for input |
surprised |
Correct answer |
happy |
Phase transitions and encouragement |
sad |
Wrong answer (first few times) |
idle-sleep |
Idle between interactions |
Each equipped outfit has its own full set of 6 expression sprites — swapping outfits changes Python-chan's entire look, not just a filter.
Domain Expansion — a fullscreen celebration effect fires on milestone level-ups and on completing each of the three courses, complete with confetti.
| Layer | Choice | Why |
|---|---|---|
| Frontend | React 19 + Vite 8 | Fast HMR, ES modules, modern JSX transform |
| Styling | Plain CSS + Framer Motion 12 | No CSS framework overhead; animations via Motion |
| State | Zustand 5 | Minimal boilerplate, works with persist middleware out of the box |
| Data | JSON files + localStorage | Zero backend for Phase 1; data adapter ready for Phase 2 |
| Routing | React Router v7 | File-level page components |
| Hosting | Vercel | Zero-config deployment |
- Node.js 18+
- npm or yarn
# Clone the repo
git clone https://github.com/Omega-Mu-Gamma-Studio/Python-Chan.git
cd Python-Chan
# Install dependencies
npm install
# Start the dev server
npm run devThe app runs at http://localhost:5173 by default.
# Build for production
npm run build
# Preview the production build locally
npm run previewThis repo is Vercel-ready with no configuration needed. Connect the repo in the Vercel dashboard and it'll detect the Vite setup automatically. No environment variables required for Phase 1.
Python-Chan/
├── public/
│ ├── sprites/ # Character expressions (Sunlit Cardigan — base outfit)
│ │ ├── teaching.png
│ │ ├── excited.png
│ │ ├── frustrated.png
│ │ ├── thinking.png
│ │ ├── oops.png
│ │ ├── idle.png
│ │ └── uniforms/ # Outfit-specific sprite sets (6 expressions each)
│ │ ├── library-cardigan/
│ │ ├── lab-coat/
│ │ ├── greenhouse/
│ │ ├── night-owl/
│ │ ├── professor-blazer/
│ │ ├── garden-witch/
│ │ ├── idol/
│ │ ├── neural-kimono/
│ │ ├── capstone-crown/
│ │ └── off-the-clock/
│ └── wallpapers/ # Downloadable device wallpapers (10 total)
│ ├── pythonchan-morning-notebook.png
│ ├── pythonchan-sakura-reading-nook.png
│ ├── pythonchan-dataframe-garden.png
│ ├── pythonchan-scatter-skyline.png
│ ├── pythonchan-rainy-lab.png
│ ├── pythonchan-loss-curve-sunset.png
│ ├── pythonchan-neon-notebook.png
│ ├── pythonchan-convergence-summit.png
│ ├── pythonchan-shrine-stats.png
│ └── pythonchan-deployment-sunset.png
│
├── src/
│ ├── components/
│ │ ├── character/PythonChan.jsx # Sprite renderer; reads spriteOverrides from equipped outfit
│ │ ├── layout/AppLayout.jsx # Root layout; applies theme + background
│ │ ├── lesson/ # LessonCanvas, CodeBlock, PhaseIndicator
│ │ └── ui/ # Sidebar, BottomBar, XPDisplay, ProgressBar, CourseSelector
│ │
│ ├── data/
│ │ ├── lessons/ # 225 JSON lesson files (course1–3, unit1–5, lessons 1–15)
│ │ ├── courses/ # 3 course JSON files (id, title, unit list)
│ │ ├── units/ # 15 unit JSON files (id, title, lesson list)
│ │ └── shopItems.js # All cosmetic definitions (outfits, themes, downloadables)
│ │
│ ├── hooks/
│ │ ├── useLesson.js # Lesson phase state machine
│ │ ├── useProgress.js # Progress store bindings
│ │ └── useSound.js # Sound effect hooks
│ │
│ ├── pages/
│ │ ├── Home.jsx # Dashboard / course selection
│ │ ├── CoursePage.jsx # Unit list for a course
│ │ ├── UnitPage.jsx # Lesson list for a unit
│ │ ├── LessonPage.jsx # The actual lesson experience
│ │ └── Shop.jsx # Cosmetics shop
│ │
│ ├── services/
│ │ ├── lessonService.js # JSON loader + lesson data access
│ │ └── storageService.js # localStorage adapter (Phase 2: swap for API)
│ │
│ ├── store/
│ │ ├── progressStore.js # Zustand store: XP, level, outfits, progress
│ │ └── lessonStore.js # Zustand store: active lesson state
│ │
│ └── utils/
│ ├── xpCalculator.js # XP thresholds, level math, earned XP calculation
│ ├── patternMatcher.js # Regex-based answer validation engine
│ └── pyHighlighter.js # Python syntax highlighting for code blocks
Lesson JSON files live at src/data/lessons/course{C}/unit{N}/{N}.{M}.json. Each file follows this structure:
{
"id": "1.1",
"course": 1,
"title": "What is Python and Why It Matters",
"xp": 10,
"phases": [
{
"phase": 1,
"title": "See It Work",
"dialogue": "Python-chan's explanation text here",
"code": "print('Hello, Player!')",
"output": "Hello, Player!"
},
{
"phase": 2,
"title": "See It Break",
"dialogue": "Here's what happens when...",
"code": "print('Hello, Player!'",
"error": "SyntaxError: unexpected EOF while parsing"
},
{
"phase": 3,
"title": "You Try",
"dialogue": "Your turn!",
"prompt": "What function prints text to the console in Python?",
"answer": "print()",
"hint": "It's four letters and very friendly.",
"solution": "print()"
}
]
}- Create a folder under
public/sprites/uniforms/<outfit-name>/ - Drop in 6 PNGs named:
teaching.png,idle.png,oops.png,thinking.png,frustrated.png,excited.png - Add an entry to
src/data/shopItems.jswithspriteOverridesmapping each expression state to the correct file path - That's it —
PythonChan.jsxandShop.jsxboth readspriteOverridesautomatically
In the Shop page, triple-click the Shop title to toggle the dev cheat:
- First triple-click → instantly sets XP to 9999 and level to 15 (unlocks everything)
- Second triple-click → resets XP and level back to 0 / 1
- All 225 lessons authored and published across 3 courses
- Full cosmetics system (11 outfits, 5 themes, 10 downloadable wallpapers)
- XP/leveling, shop, expressions, domain expansion
- localStorage persistence, no account required
- PostgreSQL + Express API backend
- User accounts and cross-device sync
- Progress stored server-side (the store already has a
_resetForMigrationhook and storage adapter pattern ready for this) - Instructor view: class-wide completion dashboards
- No frontend rewrite required — only the storage layer changes
Character Art: Python-chan's sprites were generated using AI tools and hand-curated for expression consistency by the Omega Mu Gamma Studio team. All character designs are proprietary to Omega Mu Gamma Studio.
Note: As a free, open-source educational tool, we prioritized shipping a complete learning experience over commissioning custom art. If you're an artist interested in contributing official character designs, reach out — we'd love to collaborate.
Python-chan is part of a student-built suite of open-source engineering and CS education tools from Omega Mu Gamma Studio.
| Tool | What it does |
|---|---|
| SeeDS | 3D data structure visualizer with drag-and-drop Playground mode |
| KMapX | Karnaugh map simplifier with don't-care support |
| EG Suite | 3D Engineering Graphics simulator for ME22201 |
| GateLab | 2D digital logic schematic playground (CS22303) |
| Java-chan | Anime-guided Java tutor for CS22301 |
| PlusPlus-chan | Anime-guided C++ tutor for aspiring game developers |
| Python-chan | Anime-guided, three-course Python tutor — Foundations, Data Science, and Machine Learning — this repo |
This project is licensed under the PolyForm Noncommercial License 1.0.0.
You may use, modify, and share this software for noncommercial purposes only. This includes:
- Personal study and hobby projects
- Educational and research use
- Use by noncommercial organizations (charities, educational institutions, government bodies)
Commercial use is prohibited without a separate commercial license from Omega Mu Gamma Studio.
The character art, sprites, and visual assets for this project are also proprietary. They may not be reproduced, redistributed, or used outside this project without explicit permission.
For commercial licensing inquiries, contact Omega Mu Gamma Studio.
© 2026 Omega Mu Gamma Studio