(1) Assemble an array to store student records, including their name, ID, and grades for each course. Perform actions to insert new records, dismantle records, and search for a student by their ID. (10 marks)
(2) Build a linked list to organise a student’s course registration dynamically. Manipulate the list to add courses, remove courses, and traverse the list to display all courses a student is enrolled in. (10 marks)
(3) Adjust a stack to handle the undo functionality (e.g., undo a course registration or withdrawal). (10 marks)
(4) Adapt a queue to manage students on a waitlist for a course or students in a queue for academic advising. Alter the queue by enqueuing and dequeuing students for these purposes.(10 marks)
(5) Create a binary search tree (BST) to store and manage courses by their course ID. Formulate an in-order traversal to display all courses sorted by their IDs.(10 marks)
(6) Design a graph to represent course prerequisites, where edges represent prerequisites between courses. Construct DFS and BFS algorithms to traverse the graph and find paths between courses.(10 marks)
(7) Reorganise the search process by implementing a binary search algorithm to find a student’s record by their ID in a sorted array. Alter the search algorithm to compare the performance of binary search with linear search for large datasets.(10 marks)
(8) Revise the merge sort algorithm to sort student records based on their grades in descending order. Vary the performance of merge sort by comparing it with bubble sort. (10 marks)
(9) Create a hash table to store student records, using their student ID as the key. Modify the table to implement insert, delete, and search operations, ensuring collision handling (e.g., using chaining or open addressing). (10 marks)
(10) Design a solution for the course assignment problem, where students are assigned to courses based on availability and prerequisites, optimising for the best allocation of students to courses. (10 marks)
Source Code
Construct the modules for the program based on the requirements.
a. Your design and implementation should use object-oriented principles.
b. Your console / graphical user interface should be easy to use and intuitive.
c. Your application should incorporate error checking and input validation.
Implement the best practices for writing an object-oriented program, which include code reusability, modularity, robustness in handling user inputs, abstraction, encapsulation, remarks and comments, reasonable naming of identifiers, indentations, screen layout and report layout.
Report
You’re required to prepare a concise and comprehensive report, which contains detailed description about your system. It should cover the entire flow of the system, including test cases for different types of inputs and outputs, especially for data validation and exception handling.