Skip to content

Latest commit

 

History

History
9 lines (6 loc) · 2 KB

README.md

File metadata and controls

9 lines (6 loc) · 2 KB

COPADS - Collection of Python Algorithms and Data Structures

The main aim of COPADS is to develop a compilation of of Python data structures and its algorithms, making it almost a purely developmental project. Personally, I look at this as a re-usable collection of tools that I can use in other projects. Therefore, this project is essentially "needs-driven", except a core subset of data structures and algorithms.

This project originated from 3 threads of thought. Firstly, while browsing through Mehta and Sahni's Handbook of Data Structures and Applications, I thought there might be utility to have a number of the listed data structures implemented in Python. Given my interest in biological data management, having a good set of data structures is always handy. The 2nd thread of thought came from Numerical Recipes. Again, I thought these algorithms will be handy to have and had started to translate some of them into Python during some overly energetic days. Finally, Python Cookbook had undergone 2 editions by 2008 and ActiveState had provided an online platform for Python Recipes which I found to be useful and can see how some of these recipes can be merged. Thus, COPADS is borned.

However, I always felt a need to be able to describe algorithms/codes in an un-ambiguity manner which can be verified. In computer science, these un-ambiguity description systems are known as formal methods. Mathematics is used to confer un-ambiguity. This makes formal methods a very useful means of asynchronous technical communication (handing over software codes from developers to maintainers).

In this respect, I designed BeSSY (Behavioural Specification System) which no more than high-school mathematics (arithmetic, sets theory, functions, and Boolean algebra) as a basis to describe software systems. Functions and logic (in the form of boolean algebra) is an important aspect of computer programming; hence, is a bridge to convert a specification to skeletal source codes.