self teaching grapth