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 want to ask what algorithm should I use in eliminating the subjects? Please help.
 A: 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.
A: 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.

