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