Part one:
Creation of a NxN grid/map randomly, guaranteeing at least one path which leads from the starting point to the end point.
Part two:
Implementation of A* Algorithm, written in Python, and using it on the grid of part one.
Part three:
Comparing A* with different heuristics and BFS and Dijkstra algorithms, over path length, expanded nodes, grid size and probability (metric on how dense the grid is).