# Android Recommendation App Algorithm

I have this project proposal entitled "Android Based Program Recommendation App". (This application is for those college students who wants to shift to other programs). The app will find a program that take less time to finish based on the subjects that the student already took and passed. So if other programs has the same subjects that the student already took then that subject will be eliminated from the list of subject on that programs. After the elimination, the app will determine the time/year to finish the program by counting the subject remaining or the subject to be take. After determining the estimated year the app will recommend a program to the student that has lesser year to finish.

• I am afraid that this may be too broad to be answerable... Could you edit to add more details and make it more specific? What have you considered? What kind of problems are you facing? – Tim Aug 30 '17 at 8:31

Given the very few details in your question, it would appear that you have already figured out a mechanism to eliminate a subject (course?) from the list of requirements of a program: Just do a simple matching between the courses taken by the student and the course requirements and eliminate the requirement from the program if the course taken fulfills the requirement.

If this simple method does not work for you, please update the question to include details of why not, or alternatively, other constraints that you have.

At first, I would say it has nothing to do with statistic, because courses aren't randomized (in most schools at least). Probably you need topological sorting algorithm:

In the field of computer science, a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering. For instance, the vertices of the graph may represent tasks to be performed, and the edges may represent constraints that one task must be performed before another; in this application, a topological ordering is just a valid sequence for the tasks.