elements-of-software-construction 50.003 Elements of Software Construction Software design principles taught in Java ##Topics covered Design Patterns UML Diagrams Unit Testing System Testing Concurrency and Threading Testing in Concurrency Optimizing Concurrency