COMP-401 Foundations of Programming Assignments cover: encapsulation, inheritence princples, and singleton, factory, bridge, decorator, observer design patterns.