Basic Information
Software Entropy and Software Design Utility. Declarative And Imperative Programming. Refactoring, Automatic Testing and Unit Testing, Testing Doubles, and Test Costs. Abstraction, Composition, And Modularization. Coupling and Cohesion, Solid Principles, Design Patterns, Dependency Graph, and Dependency Injection. Code Reuse, Inheritance and Composition. Application Programming Interface Design Nd Test-driven Design. Internal and External Domain Specific Languages, Automatic Code Generation. Functional Principles In Object-oriented Design# Immutability, Purity, Type-driven Design, Total Functions and Monads. Software Architecture, Web Applications, And Model-view-controller Architecture. Learning Ouctomes# at The End of The Course The Student Will Able To# 1. Design and Test Complex Software Systems. 2. Write Clean, Clear With Fewer Errors. 3. Improve The Maintenance of New and Existing Code.
Faculty: Computer Science
|Undergraduate Studies
|Graduate Studies
Pre-required courses
236703 - Object-oriented Programming
Related Books
- Design patterns : elements of reusable object-oriented software
- Domain-driven design : tackling complexity in the heart of software - Evans, Eric
- Domain-specific languages - Fowler, Martin
- Effective Java - Bloch, Joshua
- Extreme programming explained : embrace change - Beck, Kent
- Growing object-oriented software, guided by tests - Freeman, Steve
- Implementation patterns - Beck, Kent
- Refactoring : improving the design of existing code - Fowler, Martin
- Test-driven development : by example - Beck, Kent