Duh! Used CSS, HTML and JAVASCRIPT for the creation of this website from scratch. I learned to use all the skill mentioned before to build this website. This was a fresh experience as I needed to research and out my imagination into words. I knew what features I wanted on my website, but I did not know the proper lingo till I researched it and no one could directly teach me this as I needed practical guidance and no one was free enough to help me, so I had to learn it all on my own. It was fun, creating this website, as it gave me a new appreciation for my love for programming.
Made changes to the algorithms of POSTGRESQL, especially Nested Loop algorithm, and creted multiple algorithms that use Reinforced Learning techniques such as reward distribution. Below are the algorithms that I have helped improve:
This algorithm tries to find the best subset of tuples from the entire table. The algorithm first explores a certain number of tuples and then finds the best rewarding tuples from those and then uses them in the exploitation process. This algorithm mainly focuses on giving a subset of the results as fast as possible. There are number of uses for such an algorithm, for example: Search Engine Results, Recommendation Systems and Fraud Detection.
This algorithm performs a join operation between two tables using a ripple approach. The process begins by joining the first tuple of one table with all tuples of the other table. Similarly, the first tuple of the second table joins with all tuples of the first table. Subsequently, the second tuple joins with all tuples of the other table except the first one. This pattern continues iteratively, ensuring that each tuple progressively joins with a decreasing subset of the other table’s tuples. The process is repeated for all tuples in both tables until the join operation is complete.
This custom nested-loop join algorithm extends PostgreSQL’s standard approach by adding a lightweight “exploration–exploitation” phase that caches subsets (or “pages”) of rows from the left and right tables. Each side alternates between exploring new tuples—tracking a “reward” for successful matches and a “failure count” for mismatches—and exploiting (revisiting) its highest-reward tuples. In other words, while it still conceptually performs a nested loop, it maintains small caches of promising tuples, selects the best ones based on accumulated rewards, and dynamically switches direction between left-to-right and right-to-left scans. This technique aims to reduce unnecessary comparisons and focus on rows more likely to produce matching join results.
This algorithm supplements PostgreSQL’s basic approach with a dynamic exploration–exploitation strategy. It caches “pages” of rows from the outer (left) relation and caches/updates promising tuples from the inner (right) relation, tracking a “reward” (for each successful match) and a “failure count” (for each mismatch). After a mandatory exploration phase, the algorithm calculates average rewards on both sides and switches between “left-to-right” and “right-to-left” exploitation, aiming to reuse high-reward tuples rather than performing a naive nested loop over all data. By adaptively caching and discarding lower-reward entries, ICL reduces redundant scans and speeds up join processing, especially when data contains skewed or more-likely-to-match tuples.