Permit offline autograding
Ignore __pycache__ dir
Implement Phases 1 and 2