Programming challenges and implementations of various algorithms and ADT's