/lessoner

teaching stuff to some fwens

Primary LanguageAstro

Link para a planilha

https://docs.google.com/spreadsheets/d/1QvxVngrPeBXGgfG0FHwsuEb3s8rHeKUN9nx8nq08Wcw/edit#gid=0 Coloque seu nome na FrontPage caso for utilizar

Plano de Aula (Sujeito a alterações)

Parte 1 - Lógica de Programação

1. Introdução

  • Configurando o ambiente
  • Output no console
  • Variáveis e tipos primitivos + string
  • Input do console
  • If else
  • Extra: ifs nestados
  • Comentários
  • Exercícios

2. Controle de Fluxo

  • While
  • For
  • Break, continue
  • Extra: loops nestados
  • Exercícios

3. Arrays e Matrizes

  • Declaração de arrays
  • Arrays de tamanho definido em runtime
  • Declaração de matrizes
  • Iterando sobre arrays
  • Iterando sobre matrizes
  • Analogias para visualizar N dimensões
  • Exercícios

4. Introdução a Otimização

  • Motivação
  • Análise assintótica
  • Considerações sobre hardware
  • Exercícios

5. Funções

  • Definição
  • Utilizando valores de retorno
  • Recursividade
  • Exercícios

6. Structs

  • Definição
  • Passando structs como parâmetros
  • Exercícios

7. Memória

  • Entendendo a disposição da memória
  • Stack vs Heap
  • Ponteiros
  • malloc e new
  • Segurança de memória e Garbage Collector
  • Smart pointers
  • Exercícios

8. Estruturas de Dados Abstratas do C++

  • Motivação
  • pair
  • vector
  • list e forward_list
  • stack
  • queue
  • deque
  • set e unordered_set
  • map e unordered_map
  • Exercícios

9. Ordenação

  • Motivação
  • Lista de algoritmos comumente utilizados
  • Insertion Sort
  • Merge Sort
  • Counting Sort
  • Contagem de inversões
  • Heap Sort
  • Quick Sort
  • Quick Select
  • Exercícios

10. Grafos e Árvores

  • Motivação
  • Conceitos
  • Matriz de adjacência
  • Lista de adjacência
  • Conjunto de adjacência
  • Busca por profundidade
  • Busca por largura
  • Encontrando componentes conexas
  • Caminho mínimo (Dijkstra)
  • Caixeiro Viajante
  • Ordenação topológica
  • Árvores geradoras mínimas (minimum spanning tree)
  • Exercícios

11. Aritmética e Geometria Aplicadas

  • Revisão do básico
  • Teorema de Pitágoras
  • Distância Euclidiana
  • Distância de Manhattan
  • Vetores
  • Números primos
  • Crivo de Erastótenes
  • Números Complexos
  • Realizando N trocas de estado com objetos comutativos
  • Convex Hull
  • Sweep Line
  • Aritmética modular simples
  • Exercícios

12. Otimizações Gerais

  • Busca Binária
  • Soma de Prefixos
  • Árvore de Segmentos
  • Lazy Propagation
  • BIT (Árvore de Fenwick)
  • Retornando às estruturas de dados
  • Union-find
  • Compressão de Coordenadas
  • Bitmasks para representação de conjuntos e combinações
  • Exercícios

13. Gulosos e Programação Dinâmica

  • Introdução
  • Problema das Palestras
  • Problema da Moeda
  • Problema da Mochila
  • Longest Common Subsequence
  • Exercícios

14. Programação Orientada a Objetos

  • Motivação
  • Conceitos
  • Composição
  • Herança
  • Polimorfismo
  • Encapsulamento
  • Interfaces
  • Custo Benefício

15. Concorrência

  • Motivação
  • Estilos
  • Implementação
  • Cuidados
  • Exercícios

15. Convenções de Código

  • Motivação
  • Indentação
  • Convenções de nomes

Parte 2 - Desenvolvimento Web

1. HTML

  • Conceitos
  • Tags importantes
  • Semântica
  • Material

2. CSS

  • Conceitos
  • Propriedades importantes
  • Material

3. JavaScript

  • Conceitos
  • Sintaxe
  • Paralelo ao C++
  • Objetos e Arrays no JavaScript
  • Manipulações na DOM
  • fetch API
  • Exercícios

4. Web Stack

  • Conceitos
  • Protocolos (TCP, UDP, HTTP, FTP, WebSockets, SMTP)
  • Tecnologias Frontend
  • Tecnologias Backend
  • SGBDs

5. Protocolo HTTP

  • Estrutura de um Request
  • Estrutura de uma Response
  • Material

6. Comunicação por Sockets do C++

  • Motivação
  • Conectando dois computadores
  • Realizando um request e obtendo uma resposta
  • Exercícios

7. Bancos de Dados

  • Conceitos
  • Tipos de Bancos de Dados
  • SQL
  • NoSQL
  • Modelagem
  • Caching com Redis
  • Exercícios

8. Backend Standalone: Nodejs + Express

  • Conceitos
  • Configurando o ambiente
  • Criando rotas API
  • Comunicação com o Banco de Dados
  • Utilizando uma ORM
  • Utilizando WebSockets
  • HTMX
  • Exercícios

9. Frontend: React

  • Conceitos
  • Configurando o ambiente
  • Hello World
  • useState e useEffect
  • Outros hooks
  • Componentes
  • 'use server' e 'use client'
  • Integrando com Tailwind CSS
  • Integrando com zod
  • Introdução ao Nextjs
  • Exercícios

10. Backend: Go

  • Conceitos
  • Sintaxe
  • Paralelo ao Nodejs
  • Exercícios

11. Web Scraping e Consumo de API

  • Conceitos
  • Demonstração
  • Exercícios

Parte 3 - Conceitos Avançados

1. Design Patterns

  • Conceitos
  • Gerais
  • Factory
  • Singleton
  • Object Pool
  • Builder
  • Adapter/Wrapper
  • Proxy
  • Memento
  • Observer

2. Programação Orientada a Dados

  • Motivação
  • Conceitos
  • Demonstração

3. Programação Funcional

  • TODO

4. Introdução a Assembly

  • TODO