Open antmarakis opened 7 years ago
Good write-up, thanks.
Hello @MrDupin and @norvig, to improve the visualizations for the games.py
, along with the existing the existing Canvas
, we can also use some Python GUI framework like Tkinter
. We will implement the algorithms as given in games.py
and then provide a demonstration of the respective game with the help of Tkinter
.
I would surely love to work on this aspect!
@apb7: Do you mean to use Tkinter
alongside the notebooks, or in the notebooks?
Seems like a great idea, I would love to hear more.
@MrDupin: I originally thought a separate Tkinter
implementation alongside the notebooks. Later we can merge it in the notebooks.
For instance, in Tic-Tac-Toe there would be options like Vs Computer
, Vs Player
for the user. A proper 3×3 grid with buttons would be displayed where the user will click upon his turn.
Sounds interesting. I would like to see a demo of this, for some of the simpler visualizations.
Can you do it?
I had worked on a Tic-Tac-Toe GUI a few weeks ago. It uses the minimax algorithm (might be a bit different from the code given in games.py
) without alpha-beta pruning.
This is a simple version and can be later modified according to the algorithms of the book.
Can you convert it to Python 3.4? This is the version we are using for the repository right now.
Yes. Tkinter
support Python 3.4 as well. There won't be any problem @MrDupin.
@MrDupin, @norvig and @Chipe1 : I am currently working on it and will be done with a basic version of the GUI, which incorporates the minimax
algorithm of games.py
, in a day.
Hey @MrDupin, I have pushed the code to the forked repository. You can find it under the gui
folder. The GUI now makes use of the algorithms of games.py
and is compatible with Python 3.4.
Awesome, I will take a look during the weekend when I will have more time.
@apb7 Looks good. The choice to change the AI at every step is nice. With the extra freedom that comes with using Tkinter instead of just notebook can we make the application more expressive? Like a tree which shows the thought process and decision tree of the AI. @norvig What do you think about having Tkinter applications in the repo? I'm not sure if we can run it from within notebooks.
@Chipe1 : Yes we can have a side panel which shows the thought process as well as the decision tree of the AI along with the gameplay. This will definitely look good!
Hey, that was really cool, I would love to see more tkinter on the project!
I opened an issue about this: #659.
@MrDupin: Sure! I'll work out on other games as well.
@MrDupin @Chipe1 Hi I am a machine learning enthusiast and want to learn and contribute in this organisation. Plus if possible I am also looking for gsoc2018, can you suggest me how to take up a new challenge here.
Hi @Dragneel7. I am glad you want to join the project! A great place to start looking for ideas is the contributing guide. Take a look and see what kind of work we are doing here, and if you have any further questions feel free to ask.
@MrDupin @Chipe1 Hello! I read about aimacode's idea list page specifically the possible documentation of packages like NLTK. I am an NLP enthusiast and a GSoC'18 aspirant. Any leads I need to follow to help with the idea? :smile:
This is something I was also interested in, but it was decided that at least for the summer we would not be adding external libraries such as Tensorflow or NLTK. In the future though this will possibly change, so only @norvig can tell as when we can star adding these libraries.
@MrDupin @Chipe1 @norvig I am interested in contributing to aima-python as a gsoc 2018 aspirant. I have gone through the project ideas list and decided to contribute to "Project 1: Finish aima-python algorithms and add explanatory notebooks". I have set up the repository and gone through contributing guidelines. I would be really thankful if you could provide any suggestions on how to get started.
I have a few queries in general:
i) When is the right time to mail the mentors regarding the project?
ii)Should I just pick a few issues and get started on them, or is there any other procedure to follow?
iii) Are contributions to aima-python only criteria for application consideration or does other relevant work matter too?
I would really appreciate if you could give a perspective on how things work in general. Thanks a lot !
Hello @alpha721!
i) I am not sure, I am only a student. :)
ii) There are some contribution ideas on CONTRIBUTING
, in particular the sections "New And Improved Algorithms" and "Jupyter Notebooks". You can also work on open issues that others aren't working on.
iii) As far as I know, relevant work matters as well, even though it is suggested you work on this repository at least a little bit, to get to know the ropes.
Generally speaking, there are two main veins of work here: a) Completing the algorithms (you can find a list of unimplemented algorithms on the README
) and b) Writing Notebooks. It is in b) that most of the current work falls under. To see how to help in that department, you can take a look at the CONTRIBUTING
link from above.
Hope this helped!
Thanks a lot @MrDupin . I would keep things in mind :)
What I Did (in short):
Worked on the notebooks, mainly on Natural Language Processing, Learning and Knowledge. This work includes adding sections for new algorithms explaining how they work and giving examples, new visualizations and clean-up in old ones, fixing grammar/stylistic/formatting mistakes and adding more information on older sections.
Implemented algorithms and utilities in the aforementioned modules.
Click to view my commits
What I Didn't Do (but wish that I had):
A big issue with the notebooks and visualizations is that visualization code is usually ugly and unrelated to the contents of the notebook. For that reason, we added a new file,
notebook.py
, to put all the unrelated (not just the visualizations) code in. Initially I wanted to transfer all such code to the new file, but unfortunately I got sidetracked and didn't have time for it.Towards the end of the program we came up with the idea of notebooks for applications, where we would showcase basic applications for the concepts in a module. Unfortunately there was not much time to flesh them out and they are lacking at the time of writing this.
When writing the notebooks, I should have spent more time and gone in greater detail on the "Implementation" sections. Currently I mostly glossed over them, assuming that most could follow the code easily, but of course that is not always the case. I should have specified the purpose of some select individual lines of code, so that students can more easily get a grip on what the source does without having much Python knowledge.