A premium, SaaS-style dashboard built with Python and Streamlit that optimizes study schedules using a Dynamic Greedy Algorithm.
- Dynamic Greedy Scheduling: Allocates study hours based on difficulty, urgency, and a fairness penalty to prevent subject burnout.
- SaaS Dashboard UI: Dark-themed, glassmorphic interface with color-coded metric cards and interactive intensity heatmaps.
- Resource Analytics: Donut charts for time distribution and real-time utilization metrics.
- Interactive Syllabus: Add subjects dynamically and re-generate your plan instantly.
- Exportable Plans: Download your optimized schedule as a CSV file.
This project includes a detailed academic report covering the algorithm, system design, and implementation.
📥 Download here:
Smart Study Planner Report
This project is built around a Dynamic Greedy Algorithm designed to solve the multi-objective optimization problem of study scheduling. Unlike a static schedule, this system recalculates priorities in real-time.
Each subject is evaluated using a custom heuristic that balances Complexity and Urgency:
- Difficulty (Weight 3x): Acts as the primary driver for effort allocation.
- Urgency (Reciprocal of DaysLeft): Ensures that as an exam approaches, the subject naturally climbs the priority list, regardless of its difficulty.
A standard "Greedy" algorithm would simply pick the hardest subject and allocate all hours to it. To prevent burnout and ensure a balanced syllabus, we implement a Progress Penalty:
- How it works: For every hour allocated to a subject, its priority score is temporarily reduced by 1.5 points.
- Result: This allows other subjects to "catch up" in priority, creating a distributed schedule where the student switches topics naturally throughout the day.
- Block-by-Block Allocation: Instead of allocating full days, the system works in 1-hour blocks.
- Greedy Selection: For each block, the system identifies the subject with the highest current dynamic priority.
- Feedback Loop: Once a block is assigned, the subject's penalty is updated, and the list is re-sorted for the next block.
-
Time Complexity:
$O(D \cdot H \cdot N \log N)$ , where$D$ is total days,$H$ is daily hours, and$N$ is the number of subjects. This ensures the dashboard remains lightning-fast even with large syllabi. - Optimization: Uses a stable sorting approach to ensure consistency in the schedule.
-
Clone the repository:
git clone https://github.com/saatvic008/smart-study-planner.git cd smart-study-planner -
Install dependencies:
pip install -r requirements.txt
-
Run the application:
streamlit run app.py
- Frontend: Streamlit, Custom CSS
- Visualization: Plotly Express
- Logic: Python (Dynamic Greedy Heuristic)
- Data: Pandas
