Computer ScienceProgramming ConceptsProgramming Concepts Type Systems Type Introspection and Reflection Programming Styles Cohesion and Coupling Metaprogramming Marshalling Inversion of Control Dependency Injection Others