Sudoku helper: A couple of ideas for your project: -------------------------------------------------- The first thing you have to do is to play sudoku and play again to understand what kind of help may be efficient / adapted to your needs. Then you can try and play online and test the helpers that already exists: list and describe the weaknesses you observe (there must be weaknesses :) ). Then you have to prepare a plan of action. What do you plan to do? how do you plan to help the players? how do you plan to assess their level and respond accordingly? You have to decribe all these thoughts of yours, even though it is highly recommended that you don't go ahead directly with these ideas and implement them. My advise is that you target two successive prototypes: 1. the first prototype should implement a help that is based on the level that the user has specified. This way your helper will provide users with possible moves when they are stuck (based again on their specified level). 2. the second prototype should be able to (in addition to the user specifying his/her level) reassess the level of the user. If the user specifies a high level but performs very poorly, then the help should revise the level (possibly also let know the user) and provide efficient help. * Note that, basically, to provide help you need to follow the users game and at each time try to determine what would be the best moves, or a list of wise moves. Depending on the level of the user, you may not want to give the best help. Think about: - determining precisely the problem you plan to solve: there are many ways to implement a helper, you need to make your choice clear. - defining appropriate (utility?) functions to determine which kind of help to provide. - describing a plan to assess your tool - describing how you can assess the user's level (in Prototype 2) You should also consider revising your timeline in the light of the above advises. Don't forget that you have to define milestones at which points you will have to release deliverables. The graduate student of the team should be in charge of making sure that other members will turn their work on time.