1. Day 1 - Iniciando no mundo da programação
    1. Introdução ao treinamento
      1. os caminhos da carreira Python
      2. Base
      3. Web
      4. Automação
      5. Engineer
    2. Programação e Linguagens
      1. Binários
      2. Compilação e interpretação
    3. A plataforma Python
      1. PLR
      2. PSF
      3. PyPI
      4. Comunidade
    4. Instalação e ambiente
      1. Instalação, ambientes online, editores
      2. opções no CLI do Python
      3. Obtendo ajuda no interpretador
    5. Git e seu primeiro Hello World
      1. Criando e organizando um Repositório GIT
      2. Escrevendo um Hello World
      3. Shebang e ambiente
      4. Scripts Executáveis
      5. Commits
    6. Ambiente, script e variáveis
      1. Comentários de código
      2. Metadados e dunder variables
      3. Lendo variáveis de ambiente
      4. Escrevendo um Hello World multilingue
    7. Tipos de Instrução
      1. Expressões
      2. Assignments
      3. Statements
    8. Blocos de código e identação
      1. Qual o motivo de Python usar espaços em branco?
      2. Como organizamos os blocos de código
    9. Ambientes Virtuais e Ipython
      1. Criando virtualenv
      2. Instalando libraries do PyPI
      3. Usando o Ipython
  2. Day 2 - Tipos e estruturas de dados
    1. O que são tipos de dados e o tipo inteiro
      1. Como Python organiza a informação na memória
      2. O que é um objeto
      3. O tipo de dado inteiro
      4. Syntax Sugar e operadores
    2. Tipos primários float, bool, NoneType
      1. Floats e divisão
      2. Booleanos e expressões condicionais
      3. Inicializando variáveis "vazias"
    3. Textos, Encoding e String
      1. Como são armazenados os textos
      2. A tabela de caracteres ASCII
      3. Caracteres de controle
      4. A tabela de caracteres UTF-8
      5. Emojis
      6. Encoding e Decoding
      7. Bytes
      8. Concatenação
      9. Iteração em textos
    4. Formatação de textos
      1. Iterpolação Vs Concatenação
      2. Interpolação clássica com %
      3. str.format
      4. alinhamento, preenchimento, precisão
      5. f-strings
      6. Renderizando templates
    5. Tipos compostos e o tipo tupla
      1. Combinando tipos com tuplas
      2. Representando pontos do plano cartesiano
      3. Tuplas para interpolação de textos
      4. Protocolo de subscrição para acesso a índices
      5. Fatiamento
      6. Desempacotamento
      7. Imutabilidade
    6. Listas
      1. Mutabilidade
      2. Adicionando elementos
      3. Removendo elementos
      4. Inserindo em posição especifica
      5. Append no final da lista
      6. Fatiamento
      7. Extensão de listas
      8. Contando elementos
      9. Iteração de lsitas
      10. Protocolo de Container `in`
    7. Sets e a teoria dos conjuntos
      1. A teoria dos conjuntos
      2. Sets
      3. Hash Table
      4. Removendo duplicidade
    8. Dicionários
      1. Modelando dados com dicionário
      2. Subscrição com chaves
      3. HashTable e contains
      4. Iteração de dicionários
      5. Extensão de dicionários
      6. get
    9. Usando estruturas de dados
      1. Ordem de complexidade
      2. Substituindo uma cadeia de ifs por um dict
  3. Day 3 - Input, Output, Processamento
    1. Stdin & Stdout e argumentos de CLI
      1. print e stdout
      2. input e stdin
      3. sys.argv
      4. piping
    2. Manipulando arquivos e pastas
      1. Review de comandos Linux para filesystem
      2. O módulo os.path
      3. Listando pastas e arquivos
      4. Criando pastas e arquivos
      5. Lendo e Escrevendo em arquivos
      6. A biblioteca Pathlib
    3. Tratamento de erros com Exceptions
      1. A abordagem LBYL
      2. A abordagem EAFP
      3. Objetos Exception
      4. Capturando multiplas Exceptions
    4. Gravando logs
      1. A bilbioteca logging
      2. Log levels
      3. Configurando o Logger
      4. Formatando Logger
      5. Logs rotativos
    5. Algoritmos
      1. Transformando texto em pseudocódigo
    6. Condicionais Ternárias
      1. Ifs inline ou ternários
      2. Atribuições condicionais
      3. Atribuições short circuit
    7. Repetições com for e while e comprehensions
      1. O loop for em detalhes
      2. O loop while
      3. List comprehension
      4. Dict comprehension
      5. Range e geradores
      6. Mutação durante a iteração
  4. Day 4 - Funções, Debugging e seu primeiro projeto.
    1. Funções úteis embutidas
      1. Somando coleções
      2. Obtendo valor mínimo e máximo
      3. Obtendo o tamanho de coleções
      4. Ordenando e Revertendo
      5. Filtrando e mapeando
      6. Enumerando iteradores
      7. Juntando sequencias em pares
    2. Funções úteis da stdlib + envio de e-mails
      1. Obtendo dados randômicos
      2. Ferramentas de iteração
      3. Funções parciais
      4. Estatistica básica
      5. Obtendo IDs unicos
      6. lendo password do usuário
      7. Enviando e-mails
    3. Criando suas próprias funções
      1. O que é uma função
      2. Transformando fórmula matemática em função
      3. Argumentos e atribuições
    4. Anatomia detalhada de uma função
      1. Motivos para usar funções
      2. Assinatura de função
      3. Argumentos posicionais e nomeados
      4. Docstring
      5. Retornos
    5. Escopos, argumentos mutáveis e coringas
      1. Os 4 namespaces do Python
      2. Acessando variáveis de outros escopos
      3. Variáveis globais
      4. globals() e locals()
      5. Argumentos coringa
      6. Argumentos mutáveis
    6. Funções lambda
      1. HIgh Order Functions
      2. Closures
      3. Lambdas
      4. Protocolo Callable
    7. Recursão e programação funcional
      1. Comparação entre imperativo e funcional
      2. Retry com loop
      3. Retry com recursão
    8. Debugging
      1. prints e fstring
      2. execução interativa
      3. Debuggers interativos
      4. Tipos de debuggers
      5. Debugger em IDE
    9. O sistema de imports
      1. importlib
      2. sys.path e python -m site
      3. conflitos de dependencias
      4. isolamento
      5. requirements
      6. Poetry
    10. Organizando repositório, projeto e vscode
      1. Repositório
      2. Issues
      3. Milestones
      4. Configurando o VSCode
    11. Estrutura de pastas, build e install do projeto
      1. gitignore e Pull Requests
      2. Criando módulos e fazendo imports
      3. Meta arquivos: init e main
      4. pycache
      5. criando um setup.py
      6. Instalando em modeo editável
    12. Entry points de linha de comando
      1. Entrypoints
      2. Argparse
    13. Gestão de dependencias e Makefile
      1. Lendo requirements.txt no setup.py
      2. Extra requirements
      3. Usando Makefile para organizar comandos
  5. Day 5 - Qualidade de Software e de Código
    1. Doctest, Pytest e Decorators
      1. Escrevendo doctests
      2. Pytest
      3. assertions
      4. O que são decorators
    2. Unit tests, Integrations tests, Configuração do Pytest e Github Actions CI
      1. Diferença entre unit e integration
      2. Configuração do Pytest com conftest
      3. Pytest marks
      4. Criando um workflow no CI do Github ACtions
    3. Boas práticas em testes, setup, teardown, parameterize e reports
      1. Tests sem side effects
      2. Usando Fixtures
      3. Setup e teardown
      4. Generators e Hooks
      5. Testes de CLI
      6. xUnit reports
    4. Qualidade de código com linters e auto formatação
      1. Qualidade código
      2. Estilo e linters
      3. Usando pyproject.toml
      4. Auto formatação com isort e black
    5. Como escolher boas libs + click, rich, test
      1. Dicas para escolher libs
      2. Click
      3. Rich
      4. Rich-Click
      5. Teste de comandos Click
    6. TDD + Regex
      1. Programação orientada a testes
      2. Criando um validator de e-mails com Regex
      3. Gerando passwords randomicos
    7. Criando um sistema de bancos de dados baseado em JSON + uso de mocking patch
      1. Modelando um banco de dados em JSON
      2. Transformando JSON em dict
      3. Gravando um dict em um arquivo JSON
      4. Criando um sistema de banco de dados que conecta em um JSON
    8. Testando com pytest-forked e adicionando funcionalidades ao projeto
      1. Testes com banco de dados isolado
      2. Evitando race condition com pytest forked
    9. Documentação com Mkdocs
      1. Os tipos de documentação
      2. Usando Mkdocs para construir docs
    10. Empacotamento, semver e distribuição
      1. Semantic Versioning
      2. Build
      3. Adicionando arquivos estáticos ao build
      4. Empacotamento em egg e wheel
      5. Conectando no PyPI de testes
      6. Upload para o PyPI com twine
    11. System Design
      1. Diagrama de camadas do sistema
  6. Day 6 - Orientação a Objetos
    1. Os paradigmas de programação
      1. Procedural
      2. Funcional
      3. Orientação a objetos
    2. Introdução a Orientação a Objetos
      1. Classes
      2. __dict__
      3. Instancias
      4. Atributos
      5. Métodos
    3. Inicialização de objetos
      1. Atributos de classe X de instância
      2. Construtor e Inicializador
      3. Atributos mutáveis
    4. Os 4 Pilares da Orientação a Objetos
      1. Abstração
      2. Herança
      3. Polimorfismo
      4. Encapsulamento
    5. Encapsulamento com propriedades
      1. Descriptors getter and setter
      2. Properties
      3. Name Mangling
    6. Python Data Model e Protocolos
      1. Python Data Model e métodos __dunder__
      2. Protocolos
      3. Printable, Addible, Iterable, Container, Sized, Collection, Subscriptable
    7. Python Moderno com Type Annotations e Dataclasses
      1. O que é o Python moderno
      2. Como a anotação de tipos pode ajudar a evitar problemas
      3. Quando usar typing?
      4. Anotando funções, classes e métodos
      5. Mypy
      6. Tipagem composta
      7. Type Alias
      8. Dataclasses
    8. Dataclass abstrata, Enums, field e super()
      1. Abstração em dataclasses
      2. Enumerações para evitar erros
      3. Valores mutáveis em dataclasses
      4. quando usar super()
    9. Structural Pattern Matching
      1. Pattern Match Estrutural
      2. Criando um "jogo" da tartaruga
  7. Day 7 - Consumindo e armazenando dados.
    1. Modelagem e validação com Pydantic
      1. Pydantic Vs Dataclasses
      2. Validation
      3. Serialização
    2. Introdução a bancos de dados SQL
      1. SGBD - Sqlite, Postgres
      2. SQL estrutural
      3. SQL insert
      4. SQL consulta
      5. SQL update
      6. SQL delete
      7. Sessão e transactions
    3. Conectando nosso projeto ao banco de dados
      1. Biblioteca embutida sqlite3
      2. Executando Queries
      3. ORM e SQLAlchemy
      4. Pydantic e SQLModel
    4. DB Migrations e API REST
      1. Alembic
      2. MIGRATIONS
      3. Deserialização
      4. Urllib
      5. requests e httpx
    5. Desafio do projeto
      1. Desafio final do Projeto
  8. Day 8 - Demos - Web, API, Gui, Game, TUI
    1. Interface Gráfica para Desktop
      1. Formulário com PySimpleGUI
    2. Game Engine 2D
      1. Game com Pygame
    3. Terminal User Interface
      1. TUI comTextual
    4. Web sites com HTML e Flask
      1. Um Blog com Flask
    5. API REST com FastAPI
      1. API com FastAPI
  9. Aulas ao Vivo
    1. Aulas ao vivo regularmente
    2. aulas extra
    3. grupo no discord
  10. CursoDePython.com.br
  11. Treinamento Python BASE Fundamentos de Programação com Python É parte do pacote Python Expert na Plataforma LINUXtips.io Ministrado por Bruno Rocha @rochacbruno Tem 64 horas de aula em video Muitos exercícios práticos Certificado