Thanks for considering contributing to aima-csharp
! Whether you are an aspiring Google Summer of Code student, or an independent contributor, here is a guide to how you can help:
- First, read and understand the code to get a feel for the extent and the style.
- Look at the issues and pick one to work on.
- One of the issues is that some algorithms are missing from the list of algorithms.
- Implement functions that were in the third edition of the book but were not yet implemented in the code. Check the list of pseudocode algorithms (pdf) to see what's missing.
- As we finish chapters for the new fourth edition, we will share the new pseudocode in the
aima-pseudocode
repository, and describe what changes are necessary. We hope to have aalgorithm-name.md
file for each algorithm, eventually; it would be great if contributors could add some for the existing algorithms.
- Submit an issue describing your proposed change to the repo in question (or work on an existing issue).
- The repo owner will respond to your issue promptly.
- Fork the desired repo, develop and test your code changes.
- Submit a pull request.
-
Under which versions of Visual Studio does this happen?
-
Is anybody working on this?
Are we right to concentrate on Java and Python versions of the code? I think so; both languages are popular; Java is fast enough for our purposes, and has reasonable type declarations (but can be verbose); Python is popular and has a very direct mapping to the pseudocode in the book (but lacks type declarations and can be slow). The TIOBE Index says the top seven most popular languages, in order, are:
Java, C, C++, C#, Python, PHP, Javascript
So it might be reasonable to also support C++/C# at some point in the future. It might also be reasonable to support a language that combines the terse readability of Python with the type safety and speed of Java; perhaps Go or Julia. I see no reason to support PHP. Javascript is the language of the browser; it would be nice to have code that runs in the browser without need for any downloads; this would be in Javascript or a variant such as Typescript.
There is also a aima-lisp
project; in 1995 when we wrote the first edition of the book, Lisp was the right choice, but today it is less popular (currently #31 on the TIOBE index).