BTW, do you have any immediate recommendations on where to learn things like that?
Sergey Samokhov

Design patterns I think of as a part of the realm of “software engineering” — they’re not really a part of formal “Computer Science” because they’re about how humans manage big pieces of software more than they are about the computation of some result (like an algorithm). That’s probably splitting hairs a bit, but perhaps a small justification for leaving it out of teachyourselfcs. We do teach a class about API design at Bradfield though, so maybe we should add a section to teachyourselfcs.

In terms of an immediate resource, the so called “Gang of Four” book is probably the most popular design pattern resource out there:

Another great book that is a bit of design-patterns a bit of algorithms and a bit of data structures is Designing Data Intensive Applications: — it’s more about how different kinds of databases and distributed databases work than a collection of useful design patterns, but a great read with some very applicable bits.