Skip to content

Repository files navigation

Software Design Patterns & Algorithms — Tutorial Series

A Manim-based tutorial series explaining software design patterns and algorithms with animations and code.

Prerequisites

  • Python 3.10+ (3.11 or 3.12 recommended; Manim does not support 3.13 yet)

Setup (isolated env for you and your team)

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.txt

After 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.

Structure

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.

Running animations

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.py

Or from inside a tutorial folder:

cd 01-lexorank
manim -pql --disable_caching scenes/01_problem.py ProblemIntro

Cache: 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.

Preview without rendering the full video every time

  • 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 -p if you add it).

  • Low quality — You’re already using -ql (480p, 15 fps). Stay with -pql for 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 %%manim magic in a notebook (see Manim docs).

Tutorials

# Topic Description
01 Lexorank Ordered list inserts without renumbering (Jira-style ranking)

More to come.

About

Visualisation of different algorithms

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages