A simulation tool for testing packet transmission and computing shortest paths across network topologies, built with Python as part of my computer science coursework at UPEI.
Understanding how packets travel through a network is one of those things that sounds simple until you actually try to model it. In our computer science courses at the University of Prince Edward Island, we studied graph algorithms in theory, but I wanted to see them work in practice. How does Dijkstra actually perform when you throw real constraints at it? What happens when nodes fail or links get congested? I wanted to build something that would let me experiment with these questions directly, not just solve them on paper.
I built a Python simulation tool that models network topologies as weighted graphs and runs packet transmission scenarios across them.
The simulator became a genuinely useful tool for understanding network behavior. I could set up topologies of varying complexity, run packets through them, and watch how different algorithms handled the routing. It made abstract concepts tangible. I used it throughout my coursework to validate theoretical results and test edge cases that were hard to reason about on paper. The visualization layer made it easy to demo during presentations, and it helped classmates grasp concepts that were otherwise hard to picture.
This project taught me that the gap between knowing an algorithm and implementing it properly is real. Dijkstra is elegant in a textbook, but handling edge cases in code forced me to understand it at a deeper level. I also learned the value of building tools for yourself. When you can interact with a concept, you learn it faster than reading about it ever allows. It reinforced my belief that the best way to understand a system is to build a small version of it.