Constructionist attempts at supporting the learning of computer programming: A survey