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

Semestrial Information