Automating Programming Assignment Marking with AST Analysis