Synthesize Piaget's theory of cognitive development and Vygotsky's, including in each the important aspects of their theories. Compare and contrast the two theories. Finally, explain the strengths and weaknesses of each theory. Include, where applicable, real-life examples.