cambridge thesis stephen hawking problem solving method of teaching computer science