A clean code, tdd driven approach towards developing some fundamental computer science algorithms