Fundamental algorithms, data structures and design patterns implemented in Python. Design and usage demonstrated and explained.
I have been programming Python for 20 years and other languages for over 40 years and every year I spend time keeping my fundamental coding skills fresh and also up-to-date with the latest versions of everything and the latest evolving best practices. The Pyrithm project is one of the ways I do this and so it is an educational tool to both teach others as well as to maintain and develop my own skills, especially for the foundational algorithms, data structures, design patterns and development strategies. While I do fully embrace AI-generation for code and anything else and in fact am involved in leading-edge AI research and hold a recent ML patent in this area, in Pyrithm, I do not use AI assistance or AI generation. In this project, I implement the solutions and design patterns based on my own experience and my own standard research for the best solutions I can find. I force myself to learn and reinforce the skill of 'coding' in many ways and the Pyrithm project is one of those ways. You definitely should use AI to the maximum, by all means, but also keep your fundamental skills sharp. You will be competing in interviews and coding tests for top jobs with people who write code very well by hand so you need to both know how to do everything with your own hands and your own mind as your development foundation. AI-code generation skills should be robust, but built upon the fundamentals.
Pyrithm is structured like a tutorial with a lot of code comments and docstrings to explain things and assist learning, in both the pyrithm package/module code as well as the executable example code. There are two types of examples to learn from; examples which import pyrithm modules and demonstrate the usage of those pyrithm modules, and examples which do not import pyrithm modules but rather contain all definitions, self-contained within the example file.
Examples are like mini-tutorials, or the code which would go along with a written or video tutorial.
These examples import corresponding modules from the pyrithm package and illustrate the topic area in this way. Of course they may also make use of other imports.
These examples are self-contained and do not import anything from pyrithm, although they might import modules from the standard library or perhaps even other modules.
Why the difference? It is just a matter of organizing code and timing. Some of the standalone examples may evolve a little in the future and have pyrithm modules written to support them. A first step can be to just write a standalone example to get started and when it is apparent that in implementation can be done in a nice, resusable modular fashion, then that can be done and the example can be moved into examples_pyrithm. Some examples or 'mini-tutorials' might be totally suitable to remain standalone.