Project Ideas for
We are looking for students to work on
aimacode for the Google Summer of Code (GSoC) in 2018. We don't know for sure how many students we will be allowed to sponsor, but here are some project ideas:
Project 1: Finish
aima-python algorithms and add explanatory notebooks
Finish the implementation of the pseudocode algorithms in Python: we have a list of half a dozen algorithms yet to implement, and a dozen still requiring tests. For this we're looking for coders with good taste: the code needs to work, of course, but it also needs to be easy for the reader to understand, and to have a very close (almost one-to-one) correspondence to the pseudocode in the book.
In addition to that, we would like to add ipython (jupyter) notebooks that explain how to use the algorithms, and show their application to specific domains, demonstrating both how to use the code, and how the underlying AI ideas work. The notebooks should also inspire the reader to try out new ideas of their own. This requires coding skills, but also English writing skill and good educational pedagogy. Potential mentors: Dragomir Radev,
Pierre de Lacaze,
Project 2: Finish
Most of the algorithms from the third edition have been implemented. Currently, the authors are working on the fourth edition of the text. The algorithms from the fourth edition are updated simultaneously in the pseudocode repository. These algorithms are required to be updated in the AIMA4e branch of the repository. As far as the third edition is concerned, we have introduced Java-Notebooks so that it becomes easier to experiment with the code in the browser itself. Following are a few lines along which you can initiate your work:
- Most of the algorithms from the third edition are complete. However, the testing suites have a large scope of improvement. You can begin by writing test cases for any of the algorithms. It is also the best way to take a grasp of the codebase.
- Since the notebooks were introduced only in the last year, there are very few completed notebooks. You can begin by picking up a chapter of your choice and then exploring them in the notebooks.
- You can keep an eye on the pseudocode repository and implement any new algorithms introduced for the fourth edition in the AIMA-4e branch. You can further visit this issue for inspiration.
The code needs to work, of course, but it also needs to be easy for the reader to understand, and to have a reasonably close correspondence to the pseudocode in the book. Potential mentor: Peter Norvig
Project 3: Graphical demos in
email@example.com. See the guide to applying.
Project 4: Initiate
This is a new project: build a website (on GitHub) for the exercises that were in the AIMA book for the third edition, but will be only online in the fourth edition. We currently have LaTeX source for the exercises. We need to reorganize as follows:
- Translate the current exercises from LaTeX into markdown (this may be done before GSoC starts).
- Design a good format to display the exercises as pretty GitHub pages.
- Create some new, high-quality exercises, with solutions. Concentrate on exercises that require programming solutions. Your sample solutions have to not only solve the problem but also clearly demonstrate the concepts to the students.
- Create an encouraging community for volunteers to write new exercises and solutions and correct/augment old ones.
- Design a system where students can vote/rank exercises.
- Figure out a way to have the answers for some exercises hidden (so that professors can assign them as homework) and have the answers for others (and discussion forums) available for the community.
Potential mentor: Peter Norvig
If you are interested in applying as a GSoC student, you should:
- Say which of the above areas you are interested in working on.
- Say what your experience is, including pointers to some projects you've worked on.
- Bonus points if you've contributed to
aimacodealready: look for an open issue and pitch in; let us know what you've done in the application.
- You don't need a detailed proposal saying what specific things you want to do within an area--just general areas you are interested in.