Course Code: bespdsfocpy
Duration: 21 hours
Course Outline:

Improving Python Code Quality

  • Some loose topics
    • Generators and Streams. Some aspects of functional programming
    • Aspect-Orientation and Decorators
    • Duck-Typing for User-Defined Data Structures

Clean Code - design aspects and best practices

  • Traits of Good Code
    • Design by Contract, Separation of Concerns, Function Signatures, Orthogonality
  • SOLID Principles
  • Further principles
    • DRY, KISS, Beware Premature Optimization, YAGNI, Tell don't ask
  • Software-Paradigms
    • imperative vs OO vs functional vs AO (Aspect Orientation) vs generic
  • OOP
    • Classes represents concepts
    • Classes represent responsibilities
    • OO Relationships
    • Aggregation vs Inheritance
    • Interface vs Implementation
    • Python Magic Methods
  • More about Classes, objects and data structures
    • Different kinds of objects, Objects vs. Data Structures, Mixins, Perils of Inheritance
  • Some Common Design Patterns and their takeaways
    • Creational Patterns
    • Sinleton, Monostate
  • Structural Patterns
    • Adapter, Composite, Decorator, Façade
  • Behavioural Patterns
    • Chain of responsibility, Template method, Command Pattern, State Pythonic Code

Real-life software projects

  • Test First & Test-Driven Design
    • Unit-tests & Frameworks, Test-Driven Design, Integrationtests, Test-Automation
  • Profiling
  • Code-Formatting & Style-Guides
    • Quality-traits: Searchability, Consistency & Code Quality
  • Documentation
    • Comments, DocStrings & Annotations

Version Control with Git

  • First-time GIT
  • Recording Changes into the repository
  • References - checking things out, restoring files, resetting the branch tips
  • Git Branching and Merging
  • Rebasing
  • Local and Remote Repositories, pulling/fetching and pushing

Scientific Python

  • Jupyter Notebooks for Scientific Computing
  • Numpy
    • indexing, broadcasting
    • ufuncs
    • thinking “vectorized code”
  • Pandas
    • a use-case example with Pandas, Matplotlib/Seaborn for exploration and number-crunching
  • Statsmodels and Scipy
    • a few selected topics of interest