Building And Evaluating A Learning Environment For Data Structures And Algorithms Courses