This document contains notes from Covenant Ko on software design patterns and principles. It discusses functional decomposition, abstract data types, and object-oriented programming. It covers topics like the differences between assembling and composing code, open-closed and quality assurance principles, and relationships between abstract data types and objects. Links are provided to external references and resources on these topics.