{'fraction_non_alphanumeric': 0.02727272727272727, 'fraction_numerical': 0.0, 'mean_word_length': 5.834482758620689, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
"Virtual" experimentation on algorithm optimality

Learning programming in general, and algorithms in particular, demands to carry out a variety of practical activities, including experiments. In this paper, we summarize our instructional experience experimenting with algorithm optimality and we discuss the main issues raised. First, we introduce experimentation with algorithms. Afterwards, we briefly present the tools we developed for experimentation with optimality (GreedEx, GreedExCol and OptimEx) and we illustrate the kind of results that are expected by using a number of (exact and nonexact) greedy algorithms. We also describe our experiences in actual courses. Of special relevance are the students' difficulties and misconceptions we identified, as well as the interventions we performed to remove them. Finally, we relate these experiences with a number of relevant educational issues, namely learning goals, instructional methods, and how to address students' difficulties.