An anime-guided Java tutor built for CS22301 — Object Oriented Programming
Because nobody learned polymorphism from a cold error message.
No account. No install. Just open it and start learning.
Built by Omega Mu Gamma Studio — Java-chan is the flagship of the Chan series, a family of anime-mascot programming tutors that also includes Python-Chan, Rust-Chan, Go-Chan, Sharp-Chan (C#), Kotlin-Chan, and PlusPlus-Chan (C++). The studio also builds SeeDS, KMapX, EG Suite, GateLab, ArchVisor, ThermOS, and BlockBeats.
Java-chan is a fully finished, actively maintained browser-based Java learning app where an anime mascot teaches the complete CS22301 OOP syllabus in her own voice — not textbook prose with commentary stapled on top. Every one of 75 lessons runs the same five-phase arc: worked example, broken code walkthrough, hands-on coding, an MCQ challenge, and a closing trivia beat. Java-chan reacts to how you're doing, escalates her hints when you're stuck, and celebrates when you get it right.
No abstract theory walls. No cold error messages. No account required. Progress is saved in your browser automatically. Just open the app and start lesson one.
This is a finished, deployed product under active development. The codebase is public for transparency and academic interest — it is not intended as a template or starting point. If you're a student, just use the app. If you're a contributor or collaborator, read on.
Every lesson — all 75 — runs this exact five-phase arc, no exceptions:
| Phase | Name | What Happens |
|---|---|---|
| 1 | Learn It With Me | A click-to-pin split screen: Java-chan's dialogue plays in short beats on one side; clicking a topic pins a sticky note (term + plain-English definition) on the other. You pick the topic order — it's not one long scroll |
| 2 | See the Code | The same idea, deliberately broken — she explains the bug and why it matters, with an optional "Show Me the Fix" reveal |
| 3 | Code It With Me | Fill-in-the-blank scaffolded coding for most lessons; a full in-browser code editor with real output for coding-heavy lessons, powered by the built-in Java interpreter |
| 4 | Challenge | A quick MCQ check, plus a self-directed prompt to attempt the full program in your own IDE |
| 5 | Fun Facts & Trivia | A closing lore beat in her voice — no grading, just flavor |
Every sticky note you pin in Phase 1 is filed into your Journal — a persistent, cross-lesson glossary of every term you've clicked on, browsable at any time. It's a standing reference you build for yourself as you study, not something authored up front.
A floating Java sandbox is available on every screen — open it any time to write and run Java code freely, completely outside any lesson context. No expected output, no grading, no judgment. Just a place to experiment. Powered by Java-chan's built-in in-browser interpreter.
Java-chan ships a custom tree-walking Java interpreter written entirely in JavaScript. It runs entirely in your browser — no server, no API, no JVM installation, no internet connection required once the page loads.
The interpreter covers the full CS22301 scripting subset: primitive types, strings, arithmetic, control flow (if/else/switch/for/while/do-while/break/continue), 1D and 2D arrays, static methods, System.out, Math, String instance methods, ternary, enhanced for-each, and array initializer syntax. Object system (classes, inheritance, this, super, instanceof) is in active development.
It runs 233 passing tests and has been fixture-verified against real JVM output across the entire Unit 1 curriculum.
For the full architecture, scope decisions, and development roadmap, see INTERPRETER.md.
All five units are complete, published, and available from day one. No paywalls, no drip releases.
| Unit | Topic | Lessons |
|---|---|---|
| 1 | OOP & Java Fundamentals | 15 |
| 2 | Inheritance & Interfaces | 15 |
| 3 | Exception Handling & I/O | 15 |
| 4 | Collections & Threads | 15 |
| 5 | JavaFX & UI | 15 |
📖 View all 75 lessons
Unit 1 — OOP & Java Fundamentals
1.1 What is Java? · 1.2 Setting Up & Your First Program · 1.3 Hello, World! · 1.4 Data Types & Variables · 1.5 Type Casting & Literals · 1.6 Operators · 1.7 Input & Output · 1.8 Control Flow — if/else · 1.9 Loops — for & while · 1.10 Arrays · 1.11 2D Arrays & Matrices · 1.12 Methods · 1.13 Strings · 1.14 Intro to OOP — Classes & Objects · 1.15 Access Modifiers & Encapsulation
Unit 2 — Inheritance & Interfaces
2.1 Inheritance Basics · 2.2 Method Overriding · 2.3 The super Keyword · 2.4 Polymorphism · 2.5 Abstract Classes · 2.6 Interfaces · 2.7 Multiple Interfaces · 2.8 Packages · 2.9 Static Members · 2.10 Final Keyword · 2.11 Inner Classes · 2.12 Enum Types · 2.13 Object Class Methods · 2.14 Wrapper Classes & Autoboxing · 2.15 Unit 2 Review — Design Patterns Intro
Unit 3 — Exception Handling & I/O
3.1 What Are Exceptions? · 3.2 try-catch-finally · 3.3 throw & throws · 3.4 Custom Exceptions · 3.5 try-with-resources · 3.6 Common Built-in Exceptions · 3.7 Byte Streams · 3.8 Character Streams · 3.9 Buffered Streams · 3.10 PrintWriter & Console I/O · 3.11 File Class & File Operations · 3.12 Serialization · 3.13 NIO Basics — Path & Files · 3.14 Working with CSV Files · 3.15 Unit 3 Review — Robust Programs
Unit 4 — Collections & Threads
4.1 Collections Framework Overview · 4.2 ArrayList · 4.3 LinkedList · 4.4 HashSet & TreeSet · 4.5 HashMap & TreeMap · 4.6 Generics · 4.7 Comparable & Comparator · 4.8 Iterator & For-Each · 4.9 Stack, Queue & Deque · 4.10 Intro to Multithreading · 4.11 Creating Threads · 4.12 Thread Synchronization · 4.13 Inter-thread Communication · 4.14 Executor Framework · 4.15 Unit 4 Review — Choosing the Right Tool
Unit 5 — JavaFX & UI
5.1 Intro to JavaFX · 5.2 Your First JavaFX Window · 5.3 Layouts — VBox & HBox · 5.4 Layouts — GridPane & BorderPane · 5.5 Basic Controls · 5.6 Event Handling · 5.7 Styling with CSS · 5.8 FXML & Scene Builder Intro · 5.9 FXML — Wiring Controllers · 5.10 Observable Properties & Binding · 5.11 ListView & TableView · 5.12 Dialogs & Alerts · 5.13 Animation Basics · 5.14 Building a Mini App · 5.15 Unit 5 Review & Course Wrap-Up
- 75 fully authored lessons across 5 units — all available from day one, no paywalls or drip releases
- Five-phase lesson structure on every single lesson, no exceptions — Learn It With Me → See the Code → Code It With Me → Challenge → Fun Facts & Trivia
- Voice-first content — the explanation itself is written as Java-chan teaching, not a neutral textbook paragraph with her commentary appended
- Click-to-pin split screen (Phase 1) — students choose which sub-topic to open first instead of reading top to bottom; each pin files into the Journal
- Persistent cross-lesson Journal — every sticky note a student ever pins is saved and browsable independently of any lesson
- Contextual hint escalation — hint appears at 2 wrong attempts, solution unlocks at 5
- Two Phase 3 modes — fill-in-the-blank with answer-list checking for syntax-recall lessons; real execution with stdout comparison for coding lessons
- Built-in in-browser Java interpreter — write and run real Java with no server, no API, and no installation. 233 tests passing. See
INTERPRETER.mdfor the full scope - Global Java Sandbox — a floating code scratchpad available on every screen, completely outside any lesson context — no grading, no judgment, just free-form execution
- Hover glossary — shared keyword tooltips across the app plus per-lesson overrides for anything unique to that lesson's example
- Inline emphasis system — four distinct typographic treatments for vocabulary, warnings, key ideas, and trivia inside lesson prose (see The Geronimo Stilton Effect below)
- XP system — earn XP on lesson completion; bonus XP for first-attempt success and hint-free runs
- 10 levels — 100 XP per level, with a persistent progress bar
- Level-gated cosmetics — odd levels unlock a new app theme; even levels unlock outfit choices
- localStorage persistence — no account needed, progress is saved in the browser automatically
The shop has three sections. Everything is live and unlockable — no locked previews.
App Themes (equippable backgrounds):
| Level | Item | Style |
|---|---|---|
| 1 | Terminal Black 🖤 | The classic void |
| 3 | Sakura Study 🌸 | Cherry blossom dark |
| 5 | Neon Night Compile 🌃 | Late-night blue |
| 7 | Platform at Dusk 🚉 | Train pulling in, golden light, day fading |
| 9 | Golden Hour Debug 🌇 | Amber sunset |
Character Outfits (equippable; all 12 ship with full 6-expression sprite art):
| Level | Outfits | Vibe |
|---|---|---|
| 1 | Classic Hoodie 🧡 | Her signature look, always equipped |
| 2 | Casual Hoodie 🧥 · Barista ☕ | Off-the-clock hoodie, or apron + Java-logo latte art |
| 4 | School Uniform 🎀 · Sports Day 🏃 | Sailor-collar edition, or track jacket + ponytail |
| 6 | Magical Girl Debugger 🪄 · Off The Clock 🌞 | Gold robe with glowing { } staff, or a relaxed sundress |
| 8 | Streetwear Hacker 🕶️ · Winter Coat 🧣 | All black with green cuffs, or scarf-and-earmuffs winter wear |
| 10 | Legendary Kimono 👘 · Cozy Homewear 👕 · Casual Streetwear 🧢 | Three ways to celebrate making it |
Downloadable Wallpapers (save to your phone or desktop):
| Level | Wallpaper | Vibe |
|---|---|---|
| 1 | Sakura Study 🌸 | Java-chan under a cherry blossom tree, textbook in hand |
| 3 | Neon Night Compile 🌃 | Late-night session vibes — city glow, code scrolling |
| 5 | Platform at Dusk 🚉 | Train pulling in, golden light, the day fading |
| 6 | Morning Brew ☕ | Café window, early morning, warm steam rising |
| 7 | Golden Hour Debug 🌇 · Convenience Store Night 🏪 | The build passed at sunset — or a warm konbini glow |
| 8 | Rainy Afternoon Library 📚 | Velvet armchair, rain on tall windows, warm lamp light |
| 9 | Track Champion 🏆 · Beach Day 🏖️ | Victory-lap confetti, or sun and sand |
| 10 | Winter Hot Chocolate ❄️ | Blue-white cold outside, warm amber inside, fairy lights |
The design rule for every wallpaper: Java-chan belongs in warm worlds. Golden light, lived-in spaces, and ordinary moments that feel like home. When the world is cool, she's the warmth inside it.
Java-chan has 7 distinct expression states that fire contextually throughout lessons:
| State | Trigger |
|---|---|
idle |
Default state — also shown while explaining code in Phase 1 |
idle-sleep |
45 seconds of no interaction — she dozes off and wakes on the next click or keypress |
thinking |
Hint mode; waiting for input |
happy |
Wrong answer, early attempts — a gentle "good try" |
sad |
Repeated wrong attempts |
surprised |
Correct answer |
domain |
A flawless, hint-free answer — triggers the fullscreen Domain Expansion overlay |
Each equipped outfit has its own full set of matching sprites — swapping outfits changes Java-chan's entire look, not just a filter.
Domain Expansion fires on a perfect answer: a radial glow burst, her sprite front and center, the dialogue line, and a "tap anywhere to continue" prompt.
Lesson prose can tag words inline, and each tag renders as a distinct typographic event:
| Tag | Meaning | Treatment |
|---|---|---|
[[term:...]] |
New vocabulary, first appearance | Rounded display font + hand-drawn wavy underline |
[[warn:...]] |
Gotchas, common mistakes | Gold, bold, larger, with a ⚠ mark |
[[key:...]] |
The one idea worth remembering | Pink, bold, with a highlighter-marker stroke behind it |
[[fun:...]] |
Trivia / lighter aside | Purple, italic, stamped in at a slight tilt with a ✨ |
All four pop in on mount and give a small hover bounce. prefers-reduced-motion drops the animation while keeping color/font/icon distinctions intact.
A family-photo rail on the home page linking to every sibling Chan app in the studio — Python-chan, C++-chan, Rust-chan, Go-chan, Kotlin-chan, and C#-chan — each with its own accent color, glyph badge, and one-line tagline.
A looping background track plays across the whole app, composed by Aaron Felix J. A pill in the top bar lets students mute it or adjust the volume; the setting is remembered between visits.
- All 75 lessons written around the five-phase engine and voice-first content
- Phase 1 rebuilt as a click-to-pin split screen across all 75 lessons, with the persistent Journal
- Hover glossary and inline emphasis system across all lesson prose
- Full cosmetics system — 5 app themes, 12 outfits (all with real sprite art), 10 downloadable wallpapers
- XP/leveling, shop, expressions, Domain Expansion
- Meet My Sisters cross-studio rail, background music with volume control
The in-browser Java interpreter is built and shipped. Milestone 1 (the full scripting subset) is complete with 233 passing tests. The Global Sandbox UI (Milestone 2) is the active work item — the floating scratchpad panel available on every screen.
After the sandbox ships, the interpreter roadmap continues open-endedly: object system (classes, inheritance, super, instanceof), collections (ArrayList, HashMap), and additional standard library methods as students hit them in the sandbox. See INTERPRETER.md for the full milestone plan.
- PostgreSQL + Express API backend
- User accounts and cross-device sync (the store already has a
_resetForMigrationhook and storage adapter pattern ready for this) - Instructor view: class-wide completion dashboards
- Suite-wide rollout of the five-phase engine to sibling Chan apps, pending validation here
| 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 |
| Interpreter | Custom tree-walking Java evaluator (src/interpreter/) |
Zero dependencies, runs entirely in browser, covers the CS22301 Java subset |
| Hosting | Vercel | Zero-config deployment |
Character Art: Java-chan's sprites were generated using AI tools and hand-curated for expression consistency by @albertofelix08. All character designs are proprietary to Omega Mu Gamma Studio.
Music: Java-chan's background music was composed by Aaron Felix J, Omega Mu Gamma Studio's Music Director.
Java-chan is one of the flagship tools from Omega Mu Gamma Studio — a student-built suite of open-source engineering and CS education tools.
The Chan series (anime-guided programming tutors):
| Tool | Language |
|---|---|
| Java-chan | Java (CS22301) — this repo |
| PlusPlus-Chan | C++ |
| Python-Chan | Python |
| Rust-Chan | Rust |
| Go-Chan | Go |
| Sharp-Chan | C# |
| Kotlin-Chan | Kotlin |
Other studio tools:
| Tool | What it does |
|---|---|
| SeeDS | 3D data structure visualizer and bug detector |
| KMapX | Boolean expression simplifier (Quine–McCluskey) |
| EG Suite | 3D Engineering Graphics simulator for ME22201 |
| GateLab | 2D digital logic schematic playground (CS22303) |
| ArchVisor | Computer Organization & Architecture platform (CS22304) |
| ThermOS | Interactive modules for Engineering Thermodynamics (ME22301) |
| BlockBeats | Block-based music production and DAW tutor |
This project is licensed under the PolyForm Noncommercial License 1.0.0.
You may use, modify, and share this software for noncommercial purposes only — personal study, educational use, and use by noncommercial organizations. Commercial use is prohibited without a separate commercial license from Omega Mu Gamma Studio.
The character art, sprites, and visual assets for Java-chan 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.
Found a security issue? See SECURITY.md rather than opening a public issue. For contribution guidelines, see CONTRIBUTING.md and our Code of Conduct.
© 2026 Omega Mu Gamma Studio