Programa do Curso
Dia 1 — Fundamentos Robustos do Python e Ferramentas
Recursos Modernos do Python e Tipagem
- Fundamentos de tipagem, genéricos, Protocols e TypeGuard
- Dataclasses, dataclasses congeladas (frozen) e visão geral sobre attrs
- Correspondência de padrões (PEP 634+) e uso idiomático
Qualidade do Código e Ferramentas
- Formatadores e linters de código: black, isort, flake8, ruff
- Verificação estática de tipos com MyPy e pyright
- Hooks pre-commit e fluxos de trabalho do desenvolvedor
Gestão de Projetos e Empacotamento
- Gestão de dependências com Poetry e ambientes virtuais (virtual environments)
- Estruturação do pacote, pontos de entrada (entry points) e melhores práticas de versionamento
- Construção e publicação de pacotes no PyPI e registros privados
Dia 2 — Padrões de Design e Práticas Arquiteturais
Padrões de Design em Python
- Padrões criacionais: Factory, Builder, Singleton (variantes idiomáticas do Python)
- Padrões estruturais: Adapter, Facade, Decorator, Proxy
- Padrões comportamentais: Strategy, Observer, Command
Princípios Arquiteturais
- Princípios SOLID aplicados a bases de código em Python
- Arquitetura Hexagonal/Limpa (Clean Architecture) e delimitadores (boundaries)
- Injeção de dependência e gestão de configuração
Modularidade e Reutilização
- Diferença entre design de bibliotecas e código de aplicação
- APIs, interfaces estáveis e versionamento semântico
- Gestão de configurações, segredos e configurações específicas do ambiente
Dia 3 — Concorrência, AsyncIO e Performance
Concorrência e Paralelismo
- Fundamentos de multithreading e implicações do GIL (Global Interpreter Lock)
- Multiprocessamento e pools de processos para tarefas intensivas de CPU
- Quando usar concurrent.futures versus multiprocessing
Programação Assíncrona com asyncio
- Padrões async/await, loop de eventos e cancelamento
- Criação de bibliotecas assíncronas e interoperabilidade com código síncrono
- Padrões para I/O intenso, backpressure (retrocesso) e limitação de taxa (rate limiting)
Profiling e Otimização
- Ferramentas de profiling: cProfile, pyinstrument, perf, memory_profiler
- Otimização de caminhos críticos (hot paths) e uso de extensões em C/Numba quando apropriado
- Medição de latência, throughput (vazão) e utilização de recursos
Dia 4 — Testes, CI/CD, Observabilidade e Implantação
Estratégias de Teste e Automação
- Testes unitários e fixtures com pytest; organização dos testes
- Testes baseados em propriedades com Hypothesis e testes de contrato (contract testing)
- Mocking, monkeypatching e teste de código assíncrono
CI/CD, Lançamento e Monitoramento
- Integração de testes e gates de qualidade no GitHub Actions/GitLab CI
- Criação de contêineres reproduzíveis com Docker e builds de múltiplas etapas (multi-stage)
- Observabilidade da aplicação: logging estruturado, métricas do Prometheus e tracing (rastreamento)
Segurança, Endurecimento e Melhores Práticas
- Auditoria de dependências, conceitos básicos de SBOM (Software Bill of Materials) e varredura de vulnerabilidades
- Práticas de codificação segura para validação de entrada e gestão de segredos
- Endurecimento em tempo de execução: limites de recursos, direitos do usuário e segurança do contêiner
Projeto Integrador e Revisão
- Laboratório em equipe: design e implementação de um pequeno serviço usando padrões apresentados no curso
- Testes, verificação de tipos, empacotamento e pipeline de CI para o projeto
- Revisão final, crítica do código e plano de melhorias acionáveis
Resumo e Próximos Passos
Requisitos
- Forte experiência em programação Python de nível intermediário
- Conhecimento em programação orientada a objetos e testes básicos
- Experiência usando linha de comando e Git
Público-Alvo
- Desenvolvedores Python seniores
- Engenheiros de software responsáveis pela qualidade do código Python e pela arquitetura
- Líderes técnicos e engenheiros de MLOps/DevOps que trabalham com bases de código em Python
Testemunhos de Clientes (2)
tudo estava perfeito
Florin Vrincianu
Curso - Python Programming Fundamentals
Máquina Traduzida
Exercícios práticos relacionados ao conteúdo realmente ajudam a entender mais sobre cada tópico. Além disso, o estilo de começar a aula com uma palestra e continuar com exercícios práticos é bom e útil para relacionar com a palestra apresentada anteriormente.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Curso - Introduction to Data Science and AI using Python
Máquina Traduzida