There has been much less debate within the computing research community about teaching algorithms than about teaching introductory programming. However, it is advisable (or even necessary) to hold public discussions about different issues, independently of more focused research efforts. This position paper addresses two themes. Firstly, it advocates for an experiential approach to learning algorithms, as a complement to the more common formal and engineering approaches. We show how visualization and benchmarking can make algorithms more concrete to students and their learning more active and insightful. Secondly, we argue that some conceptual models present in algorithm textbooks are imprecise, or even implicit, making difficult to learn their corresponding topics. We elaborate on this concern by advocating that it is not sufficiently stressed that several algorithm design techniques address a specific class of problems (namely, optimization ones) and by visiting several aspects of three design techniques (namely, greedy algorithms, dynamic programming and branch-and-bound).