I think almost every university uses Introduction to Algorithms(CLRS), but in my opinion one thing that would make CLRS more appealing to students is including practical implementations of data structures such as Red-Black Trees, AVL Trees, and similar concepts and how these are used in real life like Linux scheduler for example. My only issue with the book is that it is extremely mathematical.

Some of my favorite books are Competitive Programming 4 and Data Structures and Algorithm Analysis in C++.

 

When I studied data structures, my professor strongly emphasized implementing your own data structures from scratch—for example, recreating something like LLVM’s small_vector and pushing it until it breaks to truly understand its behavior.

 

Best,

Kartik

 

From: SG20 <sg20-bounces@lists.isocpp.org> on behalf of Ville Voutilainen via SG20 <sg20@lists.isocpp.org>
Date: Sunday, May 24, 2026 at 4:47
PM
To: sg20@lists.isocpp.org <sg20@lists.isocpp.org>
Cc: Ville Voutilainen <ville.voutilainen@gmail.com>
Subject: Re: [isocpp-sg20] Education references for teaching data structures implementation in C++

External.

On Sun, 24 May 2026 at 23:03, Bjarne Stroustrup via SG20
<sg20@lists.isocpp.org> wrote:
>
>
> On 5/24/2026 3:34 PM, JOSE DANIEL GARCIA SANCHEZ via SG20 wrote:
> > Dear all,
> >
> > I have been asked by a colleague about good teaching references
> > (preferrrably books) for teaching basic implementation of data
> > structures in C++.
> >
> > Any recommendations?
>
> Sorry no. I have never taught datastructures and I'm not up on what
> materials people use for that. From what I have seem from students, I'm
> rather suspicious on the quality of those courses.

I have no idea either. I've never seen any decent materials for it,
and wouldn't know where to find them.

Not that I've ever needed to write a custom container, for example, either.

I do understand the need for such. Being able to provide
implementations that have various different trade-offs
is certainly useful in all sorts of high-performance scenarios, which
I luckily have never had to deal with. :)

I wonder how the LLM suggestions of

https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.amazon.co.uk%2FData-Structures-Algorithm-Analysis-United%2Fdp%2F032144146X&data=05%7C02%7Cko496%40drexel.edu%7C6d19e2ee64cc4cb1676a08deb9d5adf0%7C3664e6fa47bd45a696708c4f080f8ca6%7C0%7C1%7C639152524573967399%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=NquiiWe058c7N6r5CnOQtYz%2B%2BuPUZxAAiFgENo%2Fp7Jw%3D&reserved=0

and

https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.amazon.co.uk%2FProgramming-Program-Design-Including-Structures%2Fdp%2F1133526322&data=05%7C02%7Cko496%40drexel.edu%7C6d19e2ee64cc4cb1676a08deb9d5adf0%7C3664e6fa47bd45a696708c4f080f8ca6%7C0%7C1%7C639152524573985144%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=NJWpt4FGPb9yJJ%2B%2BdAQ0TuKbm1vV7rFkZCvWpgDxQUk%3D&reserved=0

and

https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.amazon.co.uk%2FProblem-Solving-C-Walter-Savitch%2Fdp%2F0134448286&data=05%7C02%7Cko496%40drexel.edu%7C6d19e2ee64cc4cb1676a08deb9d5adf0%7C3664e6fa47bd45a696708c4f080f8ca6%7C0%7C1%7C639152524573997189%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=fgU%2FUIetjg9Ob9gSCz1Z4h0l0tyQR9FY%2F3pJQL9Bj2A%3D&reserved=0

fare. The middle one is ancient, but I have no idea whether that matters.

I think the challenge here is to keep the students awake. I don't
think talking about how to implement what std::vector and std::list
do will do that. They would probably stay awake for 10 minutes when
talking about the difference between std::list and std::forward_list,
but something more interesting with a reasonable rationale would be needed.
--
SG20 mailing list
SG20@lists.isocpp.org
https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg20&data=05%7C02%7Cko496%40drexel.edu%7C6d19e2ee64cc4cb1676a08deb9d5adf0%7C3664e6fa47bd45a696708c4f080f8ca6%7C0%7C1%7C639152524574009122%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=A8ZSp6GN2npjscAm%2BBGspUkAR9POReNo%2FHmUmZTqQvQ%3D&reserved=0