Self-teching the C programming langauge