Path Finder is a Java-based application for finding shortest walking paths around the UW–Madison campus. It uses a graph-based approach (with Dijkstra’s Algorithm) for computing optimal routes, backed by a custom hashtable that stores map data efficiently.
- Project Overview
- Features
- Technologies & Tools
- Setup & Installation
- Usage
- Testing
- Project Structure
- Contributors
- License
This project allows users to:
- Load campus map data and display building information.
- Compute and display the shortest path between two buildings.
- Show total walking time and route details using a text-based user interface.
It includes a separate frontend and backend, ensuring a modular structure for user interaction vs. data processing. A custom-chained HashtableMap and a DijkstraGraph class support efficient lookups and shortest path calculations.
- Campus Data Management: Load building and path data (e.g., from
campus.dot
) into a graph. - Shortest Path Calculation: Uses Dijkstra’s Algorithm to quickly compute walking routes around campus.
- Frontend & Backend Separation: Clear distinction between the user interface (
Frontend
) and core logic (Backend
). - Extensive Testing: Includes multiple JUnit-based test suites for both frontend and backend functionalities.
- Java (11+)
- JUnit 5 for testing
- Makefile for compiling and running tests
- Graph Data (e.g.,
.dot
files) for campus paths - Git for version control
- Clone the repository:
git clone https://github.com/SrujayReddy/Path-Finder.git
cd Path-Finder
-
Ensure Java 11+ is installed.
If you plan to run tests locally, confirm you havejunit5.jar
accessible on your machine (or set up in your IDE). -
Review the files to confirm you see
.java
sources,Makefile
, and data files likecampus.dot
.
You can compile and run using the Makefile or standard javac
/java
commands.
- Compile & run the application:
make run
This compiles Frontend.java
(and necessary classes) and runs it.
Alternatively, compile manually:
javac Frontend.java
java Frontend
(Adjust the main class if needed; some groups may start in Backend.java
.)
We have two main sets of tests: BackendDeveloperTests
and FrontendTests
.
- Backend Tests:
make runBDTests
Compiles and runs all JUnit 5 tests for the backend.
- Frontend Tests:
make runFDTests
Compiles and runs all JUnit 5 tests for the frontend.
path-finder/
├── backend/
│ ├── Backend.java
│ ├── BackendDeveloperTests.java
│ ├── BackendInterface.java
│ ├── BackendPlaceholder.java
│ ├── ShortestPathImplementation.java
│ └── ShortestPathInterface.java
├── frontend/
│ ├── Frontend.java
│ ├── FrontendDeveloperTests.java
│ ├── FrontendInterface.java
│ └── TextUITester.java
├── graph/
│ ├── BaseGraph.java
│ ├── DijkstraGraph.java
│ ├── GraphADT.java
├── datastructures/
│ ├── HashtableMap.java
│ ├── MapADT.java
│ └── PlaceholderMap.java
├── submission-checkers/
│ ├── P23SubmissionChecker.java
│ └── P25SubmissionChecker.java
├── server/
│ └── HelloWebServer.java
├── data/
│ └── campus.dot
└── README.md
campus.dot
is a sample graph data file with building and path info.PlaceholderMap.java
was used as a stub during development.TextUITester.java
helps simulate CLI input/output for test scenarios.
- Frontend Developer: Srujay Reddy Jakkidi
- Backend Developer: Steve Hu
This project was developed as part of CS400 at the University of Wisconsin–Madison and is shared strictly for educational purposes.
Important Notes:
- Redistribution or reuse of this code for academic submissions is prohibited and may violate academic integrity policies.
- For external usage outside the course context, please include a clear reference or attribution.