Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
7 views

Intro To Computer Programming Assignment 2

Python Questions

Uploaded by

erickbaldskie
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Intro To Computer Programming Assignment 2

Python Questions

Uploaded by

erickbaldskie
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

CS102/NWE102/SWE102

Assignment 2: University Timetable Automation System


Due date: 28/10/24, 08:00

Background: At a university, creating an optimized timetable for lectures, lab sessions,


and tutorials is a time-consuming and challenging task. The process involves scheduling
multiple classes across different departments, rooms, and times, while avoiding conflicts
for students, lecturers, and rooms. Your task is to create a system that automates the
timetable generation process.
Problem Description:
You need to design and implement a Python system that generates an optimal timetable
for a university’s courses, lecturers, and students. The system should ensure that no
conflicts occur, and the timetable is distributed evenly to avoid overcrowded schedules.
Requirements:
1. Class Design:
o Design classes for Course, Lecturer, Room, StudentGroup, and
TimetableSlot.
 Course: Attributes should include course_code, course_name,
lecturer, student_groups, duration, preferred_time_slots, etc.
 Lecturer: Attributes should include lecturer_id, name, courses,
available_timeslots, etc.
 Room: Attributes should include room_id, capacity,
available_timeslots, etc.
 StudentGroup: Attributes should include group_id, students,
courses, etc.
 TimetableSlot: Attributes should include course, lecturer, room,
start_time, and end_time.
2. Input Data:
o The system should take the following input data:
 List of courses (with their respective duration, lecturer, and student
groups).
 List of lecturers (with their respective available time slots and
preferred times).
 List of rooms (with room capacities and available time slots).
 List of student groups (which courses they are enrolled in).
3. Constraints:
o No Conflicts: Ensure that no student group, lecturer, or room is double-
booked at the same time.
o Room Capacity: Ensure that the room assigned to a class is large enough to
accommodate all the students in the group.
o Lecturer Preferences: Where possible, assign classes to lecturers based on
their preferred time slots (e.g., a lecturer might prefer to teach between
9:00 AM and 2:00 PM).
o Minimized Gaps: The system should minimize gaps in both lecturers' and
students' timetables (i.e., avoid scheduling classes far apart unless
necessary).
o Max Workload: Ensure lecturers do not exceed a predefined maximum
workload per day (e.g., 6 hours of teaching per day).
4. Scheduling Algorithm:
o Implement an algorithm (such as backtracking, greedy, genetic algorithms,
or simulated annealing) to assign courses to time slots while satisfying all
constraints.
o The system should aim to generate an optimal timetable, considering the
constraints and preferences.
5. Output:
o The system should output a detailed timetable for each course, lecturer,
room, and student group, showing the assigned time slots.
o If conflicts are unsolvable, the system should flag them and suggest
potential manual fixes or relaxation of constraints.
6. Edge Cases:
o Handle cases where there are more courses than available time slots and
rooms.
o Ensure that small student groups are not assigned to large rooms
unnecessarily.
o Handle overlapping courses or labs that require the same student group but
must be scheduled in different slots.
Example Input:
Expected Output:
 A timetable for each course, lecturer, room, and student group showing when and
where classes will be held, like this:

Extra Credit (Optional):


1. Implement a graphical user interface (GUI) that allows the university admin to
input data (courses, lecturers, rooms, etc.) and visualize the generated timetable.
2. Allow the system to support changes in the middle of the semester (e.g., a lecturer
becomes unavailable) and automatically reschedule the affected classes.
3. Implement a feature where users can export the timetable in various formats (PDF,
CSV, etc.).

You might also like