This project is comprised of custom software utilizing Python and MongoDB to perform create, read, update, and delete (CRUD) operations on large-scale datasets. It serves to provide a user-friendly experience to our customers through easy database queries, efficient processing, and rapid results. It specializes in helping customers identify dogs in shelters that would make ideal candidates for search and rescue operations. The databases holding information about dogs in shelters are large and have the capability to rapidly grow. Therefore, it was important to create a project that would allow workers to identify capable dogs much more quickly and efficiently.
-
How do you write programs that are maintainable, readable, and adaptable? Especially consider your work on the CRUD Python module from Project One, which you used to connect the dashboard widgets to the database in Project Two. What were the advantages of working in this way? How else could you use this CRUD Python module in the future?
- Ensuring programs are maintainable, readable, and adaptable is paramount in any development environment. Software has to be extensively tested ensuring no errors arise from regular use or from edge-case scenarios. These tests should comprehensively test each function of the code ensuring it functions as expected and meets customer requirements. Comments should be utilized to provide sufficient explanation such that a new developer would be able to quickly understand what role each section of code performs in the overall program. For a program to be adaptable, it is necessary for a developer to follow the principles of object-oriented programming and to uphold effective programming strategies. Regarding the CRUD Python module, the advantages of developing this way were extremely valuable. Error handling measures have been implemented to prevent any unintended errors to occur and the conditional statements ensure information flows as expected. The functionality has also been validated with testing to verify the outputs match expectations. Furthermore, comments are prevalent throughout the code documenting the functionality of each method. This is useful for maintainability and future maintenance as a developer would be able to quickly get up to speed on the programs functions and requirements. While the CRUD module could certainly be expanded to provide additional functionality, it can be applied to any software that interacts with documents in a database which requires CRUD operations.
-
How do you approach a problem as a computer scientist? Consider how you approached the database or dashboard requirements that Grazioso Salvare requested. How did your approach to this project differ from previous assignments in other courses?
- As a computer scientist, I approach problems analytically and methodically. It is highly important to first determine the requirements for the software and obtaining any supplemental information to prevent information gaps. Then, it is critical to design the software by identifying which datasets would be most efficient, outlining conditional statements, creating methods to perform specific tasks, to name a few. From there, development will be enhanced as most of the questions have been answered and sections of code have been formulated. Development, such as for this course, is best done iteratively with testing done after new methods have been added. In doing so, new functionality can be implemented and tested quicker while validating no new errors arise with the introduction of the module. Furthermore, it allows for more frequent feedback which benefits development. This project differed from previous assignments in other courses as I performed thorough testing frequently. Additionally, I got to work with entirely new concepts and tools such as databases, full-stack development, interfaces, Dash, Plotly, Pandas, and MongoDB.
-
What do computer scientists do, and why does it matter? How would your work on this type of project help a company, like Grazioso Salvare, to do their work better?
- Computer scientists simply solve problems and provide tools that increase the efficiency of tasks. Considering the project in this course's requirements as an example, solving this problem mattered significantly as it saves workers countless hours of manually identifying potential working dog breeds. Previously, it would require scanning through tens of thousands of entries in a database to find a match. This process is extremely ineffective but the software designed completely solves this problem. It rapidly allows for each entry in the database to be catalogued appropriately. Entries can be efficiently and easily added, removed, updated, or searched for based on user needs. Furthermore, the sort features quickly reduces the entries displayed to the user to only relevant options that meet the criteria. By identifying which dogs are candidates to become working dogs that much faster, they can enter training, develop skills, and save humans at astronomically higher rates. Less time is necessary to simply identify dogs which can now be allocated to training the dogs.