Academic Schedular
Academic Schedular
Project Overview
The Academic Scheduler will manage timetables for an educational institution,
ensuring no overlaps (conflicts) in class schedules, teacher availability, or room
bookings. It will allow administrators to input data, generate schedules, and produce
reports while offering a user-friendly experience.
Four Components
• Course Management
Purpose: Handle all course-related data (e.g., course name, code, duration,
credits).
Features: Add new courses, assign prerequisites, and link them to teachers or
departments.
Create: Add a new course (e.g., "CS101: Intro to Programming").
Read: View all courses or filter by department/semester.
Update: Modify course details (e.g., change duration from 1 hr to 1.5 hrs).
Delete: Remove a course if it’s no longer offered.
Student Class Schedule Report
Description: Shows a student’s timetable based on enrolled courses, with times
and locations.
Use: Allows students to see their full schedule in one place.
Component-Wise Flow
1. Course Management
Read: Admin views all courses or filters (e.g., "Show all Computer
Science courses").
• Next Step: Course data feeds into Teacher Management (to assign instructors)
and Timetable Generator
• Teacher Management
Purpose: Manage teacher profiles, availability, and subject expertise.
Features: Track teacher schedules, preferences (e.g., no morning classes), and
workload limits.
Create: Register a new teacher with name, ID, and availability.
Read: Display a teacher’s profile or weekly schedule.
Update: Edit availability (e.g., teacher unavailable on Fridays).
Delete: Remove a teacher from the system (e.g., retirement).
Teacher Schedule Report
Description: Displays a teacher’s weekly schedule, highlighting assigned courses,
times, and rooms.
Use: Helps teachers plan their week and spot conflicts.
Component-Wise Flow
2. Teacher Management
Create: Admin adds a teacher (e.g., "Jane Doe, ID: T001, available Mon-
Fri 9-12").
• Next Step: Teacher availability and expertise link to Course Management (for
assignment) and Timetable Generator.
• Classroom/Resource Management
Purpose: Manage physical resources like classrooms, labs, or equipment.
Features: Define capacity, availability, and special requirements (e.g., projector, lab
tools).
Create: Add a new classroom (e.g., "Room A-101, Capacity: 30").
Read: List all rooms or check availability for a specific time.
Update: Change room details (e.g., add a projector).
Delete: Remove a room if it’s no longer usable.
Room Utilization Report
Description: Summarizes how often each room is used and identifies peak usage
times.
Use: Helps administrators optimize resource allocation.
Component-Wise Flow
3. Classroom/Resource Management
Create: Admin adds a room (e.g., "Room A-101, capacity 30, has
projector").
Read: Admin views all rooms or checks availability (e.g., "Free rooms at
10 AM").
• Next Step: Room availability feeds into Timetable Generator for scheduling.
• Timetable Generator
Purpose: Core engine that creates conflict-free schedules based on input data.
Features: Assign courses to teachers, rooms, and time slots while avoiding
overlaps.
Create: Generate a new timetable for a semester or week.
Read: View the generated timetable for a class, teacher, or room.
Update: Adjust a timetable (e.g., shift a class to another slot).
Delete: Discard an outdated or incorrect timetable.
Conflict Detection Report
Description: Lists any potential scheduling conflicts (e.g., a teacher assigned to two
classes at once).
Use: Ensures the timetable is error-free before finalizing
The core idea is to let the system create a conflict-free timetable based on predefined
rules and data from the other components (courses, teachers, classrooms). Here’s
how it works:
Example Workflow
While automation is powerful, users might want control to tweak the output or handle
exceptions. Here’s how manual generation or adjustments fit in:
1. Manual Creation:
o Provide a drag-and-drop interface (e.g., a calendar grid).
o Admin selects a course, picks a time slot, assigns a teacher and room,
and saves.
o System still checks for conflicts in real-time (e.g., "Room already booked
at 10 AM").
2. Post-Auto Adjustments:
o After automatic generation, allow admins to:
§ Move a class to a different slot.
§ Swap teachers or rooms.
§ Cancel a class and reassign it.
o Each change triggers a conflict check to maintain integrity.
Implementation
Example Workflow
Benefits
Component-Wise Flow
4. Timetable Generator
Process:
Output: Draft timetable (e.g., "CS101: Mon 9-10 AM, Room A-101, Jane
Doe").
[Timetable Output]
Actors are typically derived from a use case perspective, representing users or external
systems that interact with your project. For your Academic Scheduler, here are the
primary actors:
1. Administrator
• Role: The primary user responsible for managing the system and ensuring a
conflict-free timetable.
• Interactions:
o Course Management: Adds, updates, views, or deletes courses (e.g.,
"Add CS101").
o Teacher Management: Registers teachers, updates availability, or
removes them (e.g., "Jane Doe unavailable on Fridays").
o Classroom/Resource Management: Manages rooms and resources
(e.g., "Add Room A-101 with projector").
o Timetable Generator: Triggers automatic timetable generation, makes
manual adjustments, and resolves conflicts using suggestions (e.g.,
"Shift CS101 to 10 AM").
o Reports: Generates and reviews reports (e.g., "View Teacher Schedule
Report for Jane Doe").
• Key Tasks: Inputs foundational data, oversees scheduling, and finalizes the
timetable.
2. Teacher
• Role: A secondary user who interacts with the system to view their schedule and
provide availability.
• Interactions:
o Teacher Management: Provides or updates their availability (e.g., "I’m
free Mon-Wed 9-12").
o Reports: Views their own schedule via the Teacher Schedule Report (e.g.,
"My classes this week").
• Key Tasks: Ensures their availability is accurate; uses the schedule to plan
teaching.
3. Student
• Role: An end-user who benefits from the timetable but doesn’t directly manage
it.
• Interactions:
o Reports: Views their class schedule via the Student Class Schedule
Report (e.g., "My classes: Mon 9 AM CS101").
• Key Tasks: Uses the timetable to attend classes; no direct system management.
• Role: An internal actor (not a human) that automates scheduling and conflict
resolution.
• Interactions:
o Timetable Generator: Pulls data from Course, Teacher, and Classroom
Management to create a timetable.
o Special Feature: Detects conflicts and suggests resolutions (e.g., "Move
CS101 to avoid overlap").
o Reports: Provides data for conflict detection and utilization reports.
• Key Tasks: Handles automation, ensuring the timetable is conflict-free and
efficient.
Here’s how these actors interact with the components in a cohesive flow:
1. Administrator:
o Inputs data into Course Management (e.g., "CS101, 1 hr").
o Adds teachers in Teacher Management (e.g., "Jane Doe, available 9-12").
o Registers rooms in Classroom/Resource Management (e.g., "A-101,
capacity 30").
o Triggers the Timetable Generator to create a schedule.
o Reviews the output, adjusts manually if needed (e.g., "Move CS101 to 11
AM").
o Uses the special feature to resolve conflicts (e.g., accepts suggestion
"Assign Room B").
o Generates all four reports to finalize and distribute the timetable.
2. Teacher:
o Updates their availability through Teacher Management (optional, if given
access).
o Requests and views their Teacher Schedule Report from the
Administrator or a self-service portal.
o Uses the schedule to prepare for classes.
3. Student:
o Receives their Student Class Schedule Report from the Administrator
(e.g., via email or portal).
o Follows the timetable to attend classes.
4. System (Timetable Generator):
o Automatically processes data from all components to generate a draft
timetable.
o Detects conflicts (e.g., "Jane Doe double-booked") and suggests fixes.
o Supplies data for reports like Room Utilization and Conflict Detection.
Actors:
- Administrator
- Teacher
- Student
Use Cases:
• How It Fits:
o Handles CRUD for Course, Teacher, and Classroom Management via
controllers.
o Runs the Timetable Generator as a service with scheduling logic.
o Generates report data (e.g., teacher schedules) via queries and returns it
to the frontend.
• Potential Challenges:
o Steeper learning curve if you’re new to Spring Boot (e.g., understanding
annotations like @Entity, @RestController).
o Overhead for small projects, though your system’s complexity justifies it.
• Idea: Use Spring Boot’s scheduling module (e.g., @Scheduled) to periodically
check for conflicts or regenerate timetables if data changes.
2. Frontend: React
• Potential Challenges:
o Requires API integration knowledge (e.g., using fetch or axios to call
Spring Boot endpoints).
o Managing state for large timetables could get tricky without proper
planning.
• Idea: Use a library like FullCalendar for the Timetable Generator UI—it supports
drag-and-drop and integrates easily with React, saving you time.
3. Database: MySQL
• How It Fits:
o Stores data for all components
(e.g., courses, teachers, rooms, timetable tables).
o Supports complex joins for the Timetable Generator (e.g., finding free
rooms and teachers for a time slot).
o Provides data for reports via SQL queries.
• Potential Challenges:
o Designing the schema requires planning (e.g., foreign keys, indexes for
performance).
o Conflict detection might need complex queries or logic better handled in
the backend.
• Idea: Add a conflict_log table to store detected conflicts and resolutions,
making the special feature more traceable and auditable.
How They Work Together
Example Interaction:
• Scalability: This stack can grow from a small prototype to a full-fledged system
used by a university.
• Separation of Concerns: Backend (Spring Boot) handles logic, frontend (React)
focuses on UI, and MySQL manages data—clean architecture.
• Industry Relevance: These technologies are in high demand, so building this
project boosts your skills for real-world jobs.
• Tooling: Great support for testing (e.g., JUnit for Spring Boot, Jest for React) and
deployment (e.g., Docker).
• Structure:
o Backend: Organize Spring Boot into layers (Controller → Service →
Repository) for clean code.
o Frontend: Break React into components
(e.g., CourseForm, TimetableGrid, ReportTable).
o Database: Design MySQL with tables like:
§ courses (id, name, duration, frequency)
§ teachers (id, name, availability)
§ rooms (id, capacity, features)
§ timetable (id, course_id, teacher_id, room_id, time_slot)
• Development Flow:
1. Set up MySQL schema and seed initial data.
2. Build Spring Boot APIs for CRUD (start with Course Management).
3. Create React pages to call those APIs (e.g., course list).
4. Add the Timetable Generator logic in Spring Boot, test it, then render it in
React.
5. Implement reports and the special feature last.