solid
grasp
dry
oop 4 pillars
relationships between objects
oop vs functional programming
design patterns