Understanding the fundamentals of generics
Understanding why and when to use generics
Creating and using generic functions
Implementing generic interfaces
Building classes with generic types