Menu

Achievement Table

achievements software engineering achievements machine learning

Individual Contributions

individual contributions table

Critical Evaluation

User Interface

The user interface has been designed similar to Google's search interface. The design is kept simple and clean, and we have received positive feedback from the clients. There could be additional functionality in the UI, such as more search filters and advanced search features such as support for boolean logic. The application is usable on mobile devices, however, more work would be needed for a fully responsive UI.

Stability

The application is deployed on the Azure Cloud using a free account. This limits the amount of cloud credit available, giving us little computing resources. We assume that this is one cause for the relatively slow performance of our deployed application. However, we have not experienced any crashes. This indicates relatively high stability.

Efficiency

We are using Elasticsearch for the search engine. This is a highly optimised framework for search tasks, offering high performance for any search algorithm. After having optimised the API calls to the X5GON API service, which were an efficiency bottleneck before, our application has delivered highly efficient search performance.

Compatibility

We have not been able to optimise our application for mobile devices, as mentioned above. Nonetheless, the application is deployed as a cloud-based web application on Azure. This offers performance and compatibility independent of the user's operating system. It is thus compatible with Windows, Linux and Mac, as well as mobile operating systems for smartphones and tablets.

Maintainability

The code has been written with software engineering practices in mind. The architecture clearly separates the project into frontend and backend. There are only a few API calls that the frontend (view) uses to communicate with the backend (controller). The controller then allocates tasks to the relevant models. This allows future developers to expand the system with additional views, such as a mobile application, as well as more search models.

Project management

We employed an agile approach to software engineering in our project. By defining 2-week sprints with clear objectives, we were able to respond to feedback from the clients. Our central team management platform was Notion. We collected meeting notes there such that everyone was on the same page. It also acted as a central store for key documents, such as the requirements, technologies and designs. Weekly team syncs were used to discuss progress and blockers, as well as to set tasks for each team member. This worked well for keeping everyone involved and making continuous progress with the project. Reflecting on the team effort throughout, there was a noticeable increase in effort towards the end of the project. This could have been prevented by a more disciplined work ethic in the earlier stages of the project, where we made less progress than what we could have done.

Future Work

The application is far from complete, there are many more features that could be implemented. One issue with the current application is that it does not use HTTPS. Since it is not deployed on a public domain, we could not apply for an SSL certificate. Another issue is that in the X5GON database there are many documents that have the same title but different document IDs. These are different parts of the same lecture series so it would make sense to group them together in one search result. This would make the search results more concise, allowing the user to see more unique results at a glance. Our clients also advised that they would like us to add pagination to the search results, however, we were unable to implement this due to a lack of time before the project submission.

One particularly relevant part of the unfinished requirements is the part about modelling knowledge. Requirement 26 is "Show difficulty estimations of the documents to users (readability score)" and requirement 27 is "Estimate the current knowledge level of the user using their learning history". Combining these two would allow the application to go beyond being a simple search engine, and more towards a recommendation system. A learning platform that adapts materials to the user's knowledge could revolutionise the way we learn online.