The Anadromi Project (TAP) is an innovative approach to computer science education. Armed with Python, this revolutionary open source program focuses on teaching the bright leaders of tomorrow necessary tools for recursive problem solving and algorithmic thinking. These skills are applicable and essential to both the computer science field as well as other disciplines.
- Prerequisites
- Stage 1: Hill Climbing
- Stage 2: Gaining Speed
- Stage 3: At the Top
- License
- Acknowledgements
Students should be somewhat comfortable the basic concepts of programming:
- Variables and simple data types
- Loops
- Conditional operators
- Functions
This stage will focus on simple but inefficent algorithms that neatly fuse the basics of programming, preparing the student for more advanced concepts.
Students will start off with a basic implementation of a linear search, a search algorithm that finds the index of a specific element in a list.
This program will use the selection sort algorithm to sort an unordered list.
Another sorting algorithm exercise to practice coding skills.
This rather abstract concept is introduced rather early on in order to demonstrate the efficency of the previously learned algorithms. Time complexity provides a nice segway into recursion and answers the question to why we need these efficent yet terribly complex algorithms.
This stage focuses on the transition to more complicated algorithms that introduce recursion.
Binary search is a searching algorithm that works only on ordered lists, though far faster than the previous linear search. The theory behind it is not difficult to understand, but it will introduce the Three Laws of Recursion and feature its application.
Merge sort builds on the recursive foundation binary search introduced previously, sorting a list far faster than selection sort and bubble sort by a large margin.
The most modern of sorting algorithms, quicksort depicts the mastery of recursion and shows readiness to move onto dynamic programming.
More on time complexity that will include these three new recursive algorithms.
Hone your skills with a common mathematical puzzle that can be solved through recursion.
Using everything learned from the previous lessons, the student will create different algorithmic solutions to the knapsack problem. This is the capstone project of the program.
Imagine that you have an empty bag which you must fill with items, each of these items containing an arbitrary value and cost when taken. What would you take? How can you take the best choice? This particular implementation will focus on the greedy algorithm, the philosophy of taking what seems to be the most valuable at the moment.
Rather than greedily taking whatever is most valuable, the binary search tree algorithm will search all combinations of items and then decide what is best.
Dynamic programming will build on the binary search tree implementation, improving the efficency of the program.
The Anadromi Project is released under the terms of the MIT License.
- University of Alberta's High School Internship Program
- Supervisor Cody Steinke
- Logo designer Seth Hinz