A B-tree assignment that is realistic enough that students can list it on their resumes: nifty assignment
James S. Plank · Journal of computing sciences in colleges · 2015
High level languages like Python and Java, and even C++, abstract away so many details of what goes on beneath the hood when a computer program is running, that it becomes a challenge to open students' eyes to the fascinating interplay between algorithms and computer systems. In particular, the C++ Standard Template Library does such a good job with vectors, sets and maps, that it is hard to impart to students the subtle impact of issues such as memory management, that can profoundly affect the performance of a program. Most Computer Science curricula focus on the theory and abstract mechanics of algorithms, and then move onto the design principles of operating systems. In my experience, students do not get enough hands-on experience with the bits and bytes of their computer systems, and how the algorithms that they learn in the abstract interact with these bits and bytes.