Job scheduler and task assignment: A couple of ideas for your project: ---------------------------------------------------------------------- In this project you will have to implement a scheduler for the CS department. Trust me, everybody will appreciate your work here ! In order to design such a software, you will first have to understand what are the constraints of this scheduling problem, list them, and (most probably) translate them into logic representation. It is expected that the problem should be over-constrained (don't worry, if it turns out not to be, we'll make it over-constrained anyway :) ). In such cases where there is no solution to the constraints, you should consider preferences over the constraints: basically you should separate constraints that MUST be satisfied (s.a. all specified courses should be taught) from the constraints that can not be satisfied without hurting too much everybody's sensibility :) You will have to understand properly how to define these soft constraints (what kind of framework, solving method, etc.) and propose some appropriate soft constraints for the problem of CS scheduling. I suggest that you target two successive prototype of your scheduler: 1. the first one should handle only classical constraints (to be continued from the prolog program I provided you with): this way you are on the safe side, you have a software working. 2. the second one should be an enhancement of the first one (probably written in a different language, of your choice, or interfacing with prolog: that's up to you): soft constraints/preferences should be taken into account and solved. You should also prepare a plan to assess the efficiency of your product. This must be documented in the final report, and implemented during the testing stage. Don't forget that you have to define milestones at which points you will have to release deliverables... and stick to them :). The graduate student of the team should be in charge of making sure that other members will turn their work on time.