The Design And Evaluation Of Visual-Semantic Programming For Computer Science Education