I can't remember who, but someone's said that design patterns really would be more appropriately called something like "palliatives for static manifestly typed languages."
Knowing idioms that relate to certain expressive / organizational problems is a good thing (especially if you're primarily working in a static manifestly typed language), but there's a weird overcelebrated status to them, and I'm not sure I'd encourage a developer I was training to become familiar with a full catalogue of them.
A design pattern is a well-known way to do something. It's important so you don't reinvent the wheel.
They're different than external libraries, because usually the details of your application are closely integrated with how you implement the design pattern.