/CS-300-ABCU_Course_Schedule

This repository contains the "ABCU Course Scheduler" project, developed to assist academic advisors at ABCU in planning and advising on course schedules. The project focuses on efficient data handling, using appropriate data structures to ensure courses are taken in the correct sequence. The experience emphasized the importance of choosing the righ

Project Reflections - ABCU Course Scheduler

In this project, the primary challenge was to develop a software tool to assist academic advisors at ABCU in planning and advising on course schedules, ensuring courses are taken in proper sequence according to prerequisites. The goal was to create a system that could load, organize, and display course information efficiently and accurately.

Approach and Importance of Data Structures: I tackled this problem by focusing on the selection of appropriate data structures that could support efficient data manipulation and retrieval. Understanding data structures was crucial, as it influenced the application's performance and usability. I analyzed vectors, hash tables, and trees for their operational efficiency, memory considerations, and suitability to the project requirements. A balanced tree structure was chosen for its optimal balance between insertion/search efficiency and maintaining data in a sorted order, crucial for displaying courses in alphanumeric order.

Overcoming Roadblocks: Overcoming roadblocks in this project involved several strategies. Initially, understanding and implementing the correct data structures for course scheduling was challenging. Through research and experimentation, I learned to evaluate the complexities and performance implications of each structure, ultimately selecting those best suited for handling course prerequisites and sorting. Debugging complex logic, especially around file I/O and data parsing, required patience and meticulous testing. I frequently consulted documentation and community forums for insights into best practices and solutions to similar problems. This iterative process of identifying issues, researching solutions, and applying fixes was instrumental in progressing through the project's challenges.

Impact on Software Design and Development: This project broadened my approach to software design, emphasizing the importance of selecting the right data structures and algorithms based on the specific needs of the application. It highlighted the value of considering both the immediate functional requirements and the potential for future modifications or expansions.

Evolving Programming Practices: Working on this project has significantly refined my programming skills, particularly in writing code that is maintainable, readable, and adaptable. I've become more adept at commenting, structuring my code for clarity, and abstracting functionality to improve reusability. This experience has ingrained a deeper appreciation for writing code that not only meets the current requirements but is also prepared for future challenges.