SSRN 3849936
SSRN 3849936
Abstract— Computer Science is a field of not process or steps or set of rules to be followed in
just creating solutions to day-to-day activities but calculations, or problem-solving operations. So,
also to optimize it to the fullest. Algorithms are the the algorithms are meant to a set of rules or
core operational unit for optimizing any activity that instructions that define how a work is to be
offers work with certain efficiency, and to get executed upon in order to get the expected
increase the efficiency of a task, optimization is
outcomes. Algorithms must be highly optimized
required to come up with highly scalable units to
widen up the operational fields to whatever the to achieve the best time & space complexity
extent we desire. In this process, we achieve some possible. Time complexity in layman terms is a
great algorithms which are highly optimized that generalized version of the time taken by the
they provide us the best possible efficiency for those algorithm or the program written using it takes.
tasks. Sorting is the key component in Data These time complexities are one of the key
Structures and Algorithms; hence the best optimized values that decide the efficiency of an algorithm.
versions of those algorithms have to be understood So, lesser the time taken by the program for
better. But that process is complicated and couldn’t execution, greater the efficiency of that program
be understood on the first time we see the whole
or the gist algorithm. Space complexity is similar
algorithm or code. To provide a solution for this
problem, we have realized an interesting to time complexity but in memory and how does
psychological line “we remember and understand the memory storage gets affected with respect to
better what we see than what we hear or learn”, the input size. This factor is less valuable
hence we have to find a way to make these sorting compared to time complexity for the purpose of
algorithms more appealing by introducing any efficiency but not negligible as if we consider
interesting aspect that our brain understands faster large scale applications, they will have their data
and remembers better. So, we decided to visualize stored in multiple data centers various regions
these algorithms in the form of some geometric and also some replication technologies that
shapes and designs and animation among them to
amount to a lot of overhead to the overall system
depict the mechanism behind the algorithms.
and application served will also be affected.
II. OVERVIEW
I. INTRODUCTION
A. Problem Defination
Computer Science is a field completely build of
building more efficient tools and logics. In a The main problem we are discussing here is
computer, as in hardware each electrical about the way we approach to study or
component works and works a mechanism to understand or modify an algorithm which could
support and provide the computer, software also end up taking a lot more time than it deserves to
plays a vital role to make a computer function as be given. This is because we prefer to use code
we desire. Software is nothing but sets of right away to see what algorithm is for and what
programs which were written with logics and it does, but seeing the result and thinking we
tools to support various ranges of platforms using understand the mechanism is not logical enough,
libraries, and its dependencies. These programs better approach is that understanding the logic
and logics are written by taking certain measures behind it. The best possible way is to divide the
and used various techniques to achieve the final algorithm into small logical chunks and
outcome which should be highly efficient which understanding what each logic does to follow
are called algorithms. Algorithms are the each step of the designed algorithm without
underlying logics and mechanism on which getting compromised on the efficiency of both
software is built on. If any of evaluation metrics times taken for any amount of input size and
like the efficiency which is the head of all the space complexity also. To understand these
metrics applicable for an algorithm should be as algorithms better, we need a method to make
optimized as possible. Algorithm means that a things easier and interesting for better time
management and explore more variants. So, we be consuming more time for learning phase of
got many questions such as what method are we the languages we needed to study and understood
using to achieve the result? Who are the target and code sample applications for understanding it
users? What are the main benefits? How does we practically. So, the summarized procedure is
offer the solution? Does this also make sure that listed in terms of our phases that we divided
usual theoretical learning method retains? Does based on the work we committed to complete in
this avail the major part of algorithms, specified timestamps:
complexities? We are going to address all these
questions in our project as a part of providing Learning phase: Mostly starting to gather as
overall solution for making the algorithms as a much of information as possible, and get the
cup of tea for all those who wish to explore the data to start the learning arc for those new
interesting and high potential field of Algorithms. tools. We understood the technologies and
tools we committed to work in through
B. Objectives various sources and courses.
Project "Howsort” has its main objective to Wireframe phase: To achieve a good and
create a tool to facilitate the flow of learning understandable application, we have to
much easier and reduce the time spent on design the best User Interaction as possible
understanding through smaller logic chunks that so that, we could be effectively establish a
amount to the complete complex algorithmic good navigation structure of our application.
logic. This application aims its users to be ones So, for that, we need to create a skeleton of
that getting started with learning the popular the application to effectively measure the
sorting algorithms out there for upgrading changes might be required and minimize
themselves to be a better software engineer and them through different available User
also highly useful for interviewing at top tech Interface components. This phase is more of
companies like Google, Amazon, and others for an application interface planning one and to
better way of contributing to the tech industry. avoid any changes later.
The work explains all the major problems that we
addressed and provide solutions with the features
and methods that we propose as the solution for Foundation phase: In this phase, we created
the problem statement we defined. This is the the setup required for the technologies we
main objective of the project and added were going to work on and also the
supporting modules to make it complete. So that dependencies needed for our project.
the target users will be able to understand Database setup is also done in this phase
algorithms effectively as possible by using the using Firebase’s Authentication and Fire
visual representation of the algorithm mechanism store for storing user details on
and answering some questions after going authentication.
through its theoretical aspect and learning the
major steps used for making that visualizer work Animation phase: In this phase, we
and depict. configured how to create different
geometrical shaped components and use
C. Methodology them inside a Flutter application as we wish
and achieve some physics animation
properties like move along the axis, scale,
We have drafted a procedure following etc. Also implemented algorithms that were
appropriate functions required to work with a modified to facilitate the movement of the
model that has many obstacles in the way and shapes for visual depiction of internal
build the way out. We have built this application mechanism of the algorithms. Bubble sort,
as a cross-platform application based on Flutter Insertion sort, and Selection sort algorithms
technology from Google. This tool enables us to were introduced for the application.
support both major mobile operating systems iOS
and Android. Also because of the recent
announcement by Google, we are potentially Development phase: We have started to
looking at an application that can run on any merge both the tried and tested modules i.e.,
platform, almost any operating system from graphical visualization and algorithms. In
mobile to web to windows applications. The plan this phase, we integrated both and created
was for implementing sorting algorithms which the intended result that on hitting the sorting
includes Bubble sort, Insertion sort, Selection button, starts to sort on selecting number of
sort, and also others if we could manage to pull numbers, sorting algorithm, and delay for
of our requirements early. And in initial stages, each term sort. Also started to build
we prepared to use React-Native as our building supporting modules such as Authentication,
tool for cross-platform facility but turned out to
Quiz, Theory, etc. to make the application Incompatibility in visualization tools and the various
complete. cross-platforms on which the E-learning applications are
build.
Testing phase: This is the final phase and we It displays movement of the bars without displaying any
are currently working on this phase along comparison of data. The user has no option to adjust the
with the development phase to fix whatever speed of visualizer according to his/her pace. The sound
we feel inappropriate and any bugs. We effects are static to the visualizer so as the sorting
started to find many bugs in our exceeds a particular time, the sound tends to repeat.
implementation and started to solve each
module related bugs each time. So, this
phase works along with the previous one to
constantly keep track of bugs and needed
111. System Design
fixes.
D. Related Work
As we already stated, the project deals with cross- Firestore, and Realtime database are used to
platform mobile application, the software requirements store user details except authentication
seem to be more. Some major software requirements details like Name detail while signing up.
for the project are:
Android Version – at least 5.0 (Lollipop).
API level – should be or greater than 22. These are the major software requirements
Supports v4 and v7 compatible libraries which not limited and are used for
developing, building, testing, and deploying
Figma, and Balsamiq tools are used for the application.
application wireframes and create layouts to
depict the UI components.
ACKNOWLEDGMENT
For creating diagrams, charts, and flowcharts
such as architecture diagram and ER flow The project, titled “Howsort”, has been completed. The
model diagram using draw.io web tool to system has been designed with greatcare and is error-free,
have a well scripted schedule of events and while still being effective and time-saving. This project
tasks. aimed to create an app for visualising sorting algorithm
This project provided us with useful information and
Designing application’s screens is done practical knowledge on a variety of topics, including
using Figma, and created complete Flutter developmenttools, Dart language, to build Android
navigation structure to make sure to avoid app.The system as a whole is secure.
lots of pauses and rollbacks in development
phase.