Two searches, two jobs
Depth-first search explores deep before it explores wide. That makes it a natural maze generator: pick a direction, keep going until you hit a wall, backtrack, and try again. The maze it carves feels organic because the search itself wanders.
Breadth-first search does the opposite. It expands level by level, so the first time it reaches the exit it has found the shortest path. In Maze Explorer, DFS builds the problem and BFS solves it — two searches, two jobs, one game.
Watching it run changes everything
The textbook definitions are correct, but they are static. Real-time rendering makes the difference visible: DFS wanders down corridors and backtracks; BFS floods outward like water filling the maze. Once you have watched both, you do not need to memorise which is which.
That is the real lesson of the project. An algorithm is not a paragraph to remember — it is a behaviour to observe. Building something you can watch is the fastest way to understand it.
What I would do differently
The first version mixed generation, solving and rendering together. Next time I would separate generation from solving cleanly, and keep the leaderboard logic out of the renderer. The game works, but the architecture could be tidier — and tidier code is easier to explain, which matters when the whole point is teaching.
References and further reading
These sources informed the technical framing of this note. Consult the original documentation for full definitions and context.