Also note that I am 17-18, so some of what I said will be incredibly impractical and impossible to teach since I am not on the front lines of the industry, nor am I planing to be for a considerable amount of time. I still hope that it gives a proper image of what I want to learn and advance it, and how many others would naturally want the same.

On Fri, 29 May 2026, 9:02 pm Muneem, <itfllow123@gmail.com> wrote:
I agree that having an implementation as a reference can help. I am new to c++ (1 year in) and it helps me as well, but I also think that having mathematical information around such structures are all useful. The thing about math is that it reassures you of correctness and efficiency, alongside making it easy to reference in your memory.

If I were to start from scratch, I would want a teacher/teaching resource that could first teach me the basics (classes and exceptions) then about what each container/data structure is meant for, then exception safeties, an implementation implementating such structures with exception safeties in mind, then the formal math of it, like what does it mean for a ordered map/set to be weakly ordered, and at last, the standard's interface. For me the math and making use of performance gurrenties, with some common sense is important. For example, I want to know when vectors may be impractical enough to not be able to utilize holes in memory.

A resource for classes and exceptions, alongside exception safety would be the classic book of Bjarne Stroustrup "The c++ programming language 4th edition". For a more detailed view into each container, you would probably have to write code yourself based on modren features. For performance and how to make use of it, you would again need to show the assembly and how it maps to the CPU usage, for mathematical definitions of certain orderings in order maps/sets, a resource would be: https://eceweb.uwaterloo.ca/~dwharder/aads/Abstract_data_types/ . I sadly haven't found time to read the all of it (though I am planning to), but had to read some parts out of necessity. 

I don't know what the conference is exactly for but this is my view. Hope it is useful. 

On Mon, 25 May 2026, 1:59 am Ohlan,Kartik via SG20, <sg20@lists.isocpp.org> wrote:

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

--
SG20 mailing list
SG20@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/sg20