LEARNING THEORIES FOR TEACHING COMPUTING