A Manim-based tutorial series explaining software design patterns and algorithms with animations and code.
- Python 3.10+ (3.11 or 3.12 recommended; Manim does not support 3.13 yet)
All dependencies live in a single virtual environment so everyone can run the same setup:
# From the project root
cd /path/to/software-design-algorithms
# Create and activate virtual env
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies (Manim + its deps)
pip install -r requirements.txt
# Optional: upgrade pip first
pip install --upgrade pip && pip install -r requirements.txtAfter that, manim is available only inside this env. Share the repo (and requirements.txt); teammates run the same three steps to get an identical environment.
Each tutorial lives in its own folder: NN-topic/ (e.g. 01-lexorank/). Inside:
- script.md — Teleprompter / scene-by-scene narration
- code/ — Code snippets referenced in the script
- scenes/ — Manim scene files (
.py)
See PLAN.md for the full folder layout and workflow. For Lexorank scenes, 01-lexorank/STYLE_RULES.md defines font, colors, timing, and layout so you don’t have to re-specify them.
Activate the venv first (source .venv/bin/activate), then from the project root:
# Render a scene (low quality, preview) — use --disable_caching during development
manim -pql --disable_caching 01-lexorank/scenes/01_problem.py ProblemIntro
# Higher quality (e.g. final export)
manim -qh --disable_caching 01-lexorank/scenes/01_problem.py ProblemIntro
# List all scenes in a file
manim -ql 01-lexorank/scenes/03_lexorank_algorithm.pyOr from inside a tutorial folder:
cd 01-lexorank
manim -pql --disable_caching scenes/01_problem.py ProblemIntroCache: Manim caches partial movies. During development this is annoying: font, layout, or color changes can be invisible until you clear cache. Always use --disable_caching when iterating; you can drop it for one-off full-quality renders if you prefer.
Output (videos) goes to media/ at the project root by default; this folder is gitignored.
-
Last frame only (fastest) — Renders only the final frame as a PNG. Use this to check layout, colors, or the end state without waiting for the full animation:
manim -s -ql 01-lexorank/scenes/01_problem.py ProblemIntro
Image is written to
media/images/01_problem/ProblemIntro.png(and opens with-pif you add it). -
Low quality — You’re already using
-ql(480p, 15 fps). Stay with-pqlfor the quickest full-video preview. -
OpenGL live preview — Uses a window to play the animation (and can re-run on demand) instead of writing a video file first. Handy for repeated tweaks:
manim -p -ql --renderer opengl 01-lexorank/scenes/01_problem.py ProblemIntro
Requires OpenGL support; on some machines the default Cairo renderer is more reliable.
-
Jupyter — For step-by-step or inline preview, use the
%%manimmagic in a notebook (see Manim docs).
| # | Topic | Description |
|---|---|---|
| 01 | Lexorank | Ordered list inserts without renumbering (Jira-style ranking) |
More to come.