Graphs & Binary Search Trees
Goal
This project is your chance to take everything you have learned about data structures and apply it to a problem that feels real. You will design and build an application around either a Binary Search Tree or a Graph — choosing the right structure, implementing it from scratch, and making it do something useful.
Unlike a lab, there is no benchmark harness to hide behind. You decide how to structure the code, which operations matter, and how a user interacts with the system. That freedom is the point.
A good project is one you are proud to show — not just to your professor, but to anyone.
Choose your project
Pick one project from either track. All options are at roughly the same difficulty. Choose what genuinely interests you — that will show in the final result.
Requirements
These apply to all projects, regardless of track.
Core operations
- BST: insert, delete, search, at least one traversal (in-order), and one domain-specific query (range, top-K, min/max).
- Graph: add node / edge, BFS, DFS, and the algorithm central to your chosen project (Dijkstra, Kruskal, etc.).
Human interaction
- Provide a console menu where a user can load or generate a dataset, run the main operations, and see meaningful output.
- Output must be readable — not raw node/pointer dumps.
Code quality
- Meaningful class and variable names throughout.
- Each public method has a short comment.
Submission
Submit two items by May 18.
01 — Source code
A zip of your project, or a link to a public GitHub repository.
- Include all team members' names in a top-level README.md
02 — Report · 7–10 pages · PDF
Write as if explaining your work to a new colleague — clear, honest, specific.
- Design decisions — why you structured the code this way
- Complexity analysis — time & space for each operation
- Testing — edge cases you verified and how
- Reflection — what was hardest, what you would improve
FAQ
Can I work alone?
Yes. Groups are optional and can be between 1 and 4 students. Solo projects are evaluated by the same criteria — there is no penalty, but also no reduced scope.
Can I propose a different project idea?
Yes, with prior approval. Send a short description of the idea and the core data structure + algorithm you plan to use. Approval must be confirmed before you start.
How much of the code can I generate with AI?
There is no hard limit. Using AI assistants to scaffold, debug, or improve your code is a skill in itself. What matters is that you understand the result. During the review you will be asked to walk through your implementation — unclear or copy-pasted answers will affect your grade.
What if my project turns out to be too easy or too hard?
If it feels too easy, add a non-trivial extension (self-balancing, weighted edges, traversal visualization). If it feels too hard, come to office hours early — not the day before the deadline.
Is there a review / demo session?
Yes. Each group will have a short 10-minute slot where you walk through the code and answer questions. Dates will be announced after submissions close.