I'm reading the book Clean Code by Uncle Bob. I'm also enrolled in a data structures & performance course and reading several algorithms and data structures books.
One immediately apparent difference is that in Clean Code, Uncle Bob criticizes non-semantic variable names such as "k", "x", "j", etc for general use in a computer program (other than for example a loop counter) whereas in the algorithm books, every single variable is coded with 1 letter names or non-semantic names, which makes it much more difficult for me to comprehend what the code is doing, despite the logic itself being rather simple.
What are some strategies for refactoring code with such non-semantic variable names for the purposes of learning and why the drastic difference in engineering vs. data structure code presentation? Thank you.