Módulo 1

Prepwork (EAD)

Nessa fase, serão apresentados conceitos iniciais sobre programação por meio de EAD. Como o curso não apresenta pré-requisitos em programação, essa fase é essencial para o nivelamento de conhecimento entre todos os participantes, portanto, para iniciar o curso presencial, é necessário que o aluno tenha encerrado a fase prepwork. O curso em EAD tem duração de 30 a 40 horas e dá aos alunos um conhecimento básico de:

  • Web 101 - como a rede funciona
  • Terminal - comandos básicos
  • Git - comandos básicos
  • HTML / CSS - fundamentos
  • JavaScript - fundamentos
  • Mentalidade de startup - fluxo de trabalho técnico

Nessa fase serão apresentados alguns conceitos iniciais sobre programação por meio de EAD. Como o curso não apresenta pré-requisitos em programação essa fase é essencial para nivelar o conhecimento entre todos, é necessário para iniciar o curso presencial que o aluno tenha encerrado essa fase. O curso leva entre 30 a 40 horas e dá aos alunos um conhecimento básico de:

  • Web 101 - como a rede funciona
  • Terminal - comandos básicos
  • Git - comandos básicos
  • HTML / CSS - fundamentos
  • JavaScript - fundamentos
  • Mentalidade de startup - fluxo de trabalho técnico

Fundamentos

O objetivo neste módulo é ensinar a lógica de programação, ou seja, como construir algoritmos usando iterações, condições e operações matemáticas de leitura e de escrita de informações na memória do computador. Este conhecimento elementar é base para boa parte dos conceitos apresentados nos outros módulos.

Nesse módulo, você irá aprender a escrever algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Irá também aprender a analisar e armazenar dados de arquivos padrão (CSV, JSON, XML, HTML).

  • Principais conceitos de programação
  • Documentação de Ruby para as aulas
  • Algoritmos & estrutura de dados (Array, Hash)
  • Detectar padrões de texto com expressões regulares
  • Analisar e armazenar dados em arquivos padrão (JSON, CSV, XML)
  • Web scraping com Nokogiri
  • Solicite e analise dados de APIs RESTful JSON

Estruture seu código com classes diferentes seguindo os princípios orientados a objetos. Assim como os arquitetos projetam um edifício, os programadores devem aprender a respeitar os padrões ao projetar um software.

  • Principais conceitos de Programação Orientada a Objetos
  • Classes, objetos e variáveis de instância
  • Métodos de instâncias e de classes, herança de classes
  • Interfaces públicas versus privadas
  • Encaminhando solicitações de usuários
  • Simulando um banco de dados com arquivos CSV
  • Conhecimento profundo de MVC (Model View Controller)

Os softwares precisam armazenar informações em um banco de dados. Sem ele, por exemplo, o Facebook não teria como armazenar os dados dos usuários. Aprenda a projetar um banco de dados relacional e a construir consultas estruturadas em seu banco de dados usando o SQL.

  • Design de Esquema de Base de Dados & SQL
  • Relações "one-to-many", "many-to-many" e tabelas de ligação
  • CRUD no SQL (criar, ler, atualizar e apagar)
  • Consultas avançadas de ligação
  • Conectando seu banco de dados ao Ruby com um ORM (Mapeamento Relacional de Objetos)
  • Princípios básicos de Active Record: migrações e nomenclatura
  • Princípios avançados de Active Record: associações e validação

Desenvolvimento Web

 O objetivo deste módulo é ensinar ferramentas (frameworks) que proporcionam alta produtividade no desenvolvimento de aplicações web. Os frameworks de desenvolvimento de aplicações web são ferramentas que utilizam padrões de arquitetura e configuração pré-selecionados, restando ao desenvolvedor apenas escolher e configurar os módulos que pretende usar. No contexto da administração pública, faz sentido que os alunos sejam introduzidos a algum framework de desenvolvimento de aplicações web.

Junte tudo ao programar seus primeiros aplicativos em Ruby on Rails. Coloque seus aplicativos em produção e comece a programar “do jeito Rails”.

  • MVC no Rails: Roteamento, Controladores, Parâmetros e Visualizações
  • Modelos e CRUD no Rails
  • Adicionando gemas ao seu projeto
  • ERB: Layouts, Parciais e Auxiliares
  • Recursos aninhados e espaços para nomes
  • Refatorando um aplicativo com serviços
  • Construa uma API com Rails

Aprenda ES6, a última versão do JavaScript, para adicionar um comportamento dinâmico ao seu site ou atualizar as páginas sem recarregar, graças ao AJAX.

  • Fundamentos de JavaScript
  • ES6 e suas diferenças com o ES5
  • Ferramentas JavaScript (Babel, Webpack, yarn)
  • Eventos DOM e AJAX

Crie uma marketplace do zero em 5 dias. Você trabalhará em equipes para aprender a colaborar no Github usando pull requests e implementará seus aplicativos no Heroku, utilizando o mesmo fluxo de trabalho de startups bem-sucedidas.

  • Colaborando em um aplicativo Rails com Git e Github
  • Testando no Rails com Rspec
  • Autenticação com Devise
  • Omniauth e login com serviços de terceiros (Facebook, Linkedin, Spotify…)
  • Autorização do usuário
  • Pesquisa no Rails
  • Pagamento, Mailing, geocodificação e mapas
  • Trabalhos em segundo plano com Sidekiq
  • Upload de imagem com Cloudinary
  • Implementação contínua no Heroku

Crie uma interface de usuário com design intuitivo e programe belos componentes e layouts, aplicando as técnicas de CSS mais recentes.

  • Design de Produto, Princípios de UX e UI
  • HTML (tags, id, classes, atributos)
  • CSS (seletores, propriedades, organização dos estilos)
  • Princípios de design intuitivo
  • Dicas de web design para componentes e layouts
  • Técnicas de CSS com flexbox e CSS grid
  • Consultas de mídia CSS para Design Adaptativo
  • Princípios básicos do Bootstrap e Sistema de Grid Responsivo

Colocando em prática

Os projetos finais são o ponto alto do curso. Os alunos trabalham juntos para colocar em prática tudo o que aprenderam (e mais!): eles inventam, montam, projetam, programam e implementam um projeto original em equipes de 3 ou 4 pessoas durante um período de duas semanas.

  • Necessidades e objetivos do usuário e proposta de valor exclusiva
  • Prototipagem no Figma para testar a UX
  • Dividindo tarefas em jornadas de usuário
  • Programando uma aplicação web do zero
  • Construa tudo! Do back-end à interface do usuário
  • Implemente em um ambiente de produção
  • Lance seu aplicativo web num evento aberto ao público

Módulo 2

Análise de dados

Ao final do curso, o participante será capaz de realizar análises de dados no contexto da administração pública por meio de capacitação em métodos, técnicas e ferramentas para a coleta, organização, integração e análise de conjuntos de dados.

  1. Introdução a linguagem de programação python.
  2. Introdução ao Pandas (Python):
    • Estruturas de dados do Pandas.
    • Importação, exportação, integração, manipulação e limpeza de dados.
    • Filtro e Agregação de dados.
    • Carga e coleta de dados (CSV, API, Web Scraping, SQL).
    • Visualização de dados em Python.
  3. Conceitos de Estatística Descritiva e Probabilidade.
  4. Análise de dados em forma de gráficos.
  5.  Experimentos.

Machine learning

Ao final do curso, o participante será capaz de identificar oportunidades de uso e aplicar técnicas de ML para:

  • Modelizar dados;
  • Construir modelos preditivos para estimar uma variável de interesse em função de outros dados correlacionados;
  • Compreender o fenômeno modelado, baseado em dados, para apoiar a decisão;
  • Melhorar a qualidade do modelo preditivo, determinando o algoritmo mais adequado ou desenhando novas variáveis - feature engineering.
  1. Diferenças entre programação e aprendizado de máquina (ML): O desafio de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.
  2. Categorias de machine learning (ML): Supervisionado, não supervisionado.
  3. Diversidade de aplicações.
  4. Desafio: estimativa de preço de imóveis em função de suas características.
  5. Regressão linear:
    • Intuição, cenários de uso.
    • Preparação de dados para modelização.
    • Uso da biblioteca python scikit-learn.
  6. Conceitos gerais de ML, aplicados ao caso básico de regressão linear:
    • particionamento dos dados em treinamento/teste/validação;
    • Over e under fitting;
    • Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.
  7. Regressão logística: Extensão da regressão linear como primeiro classificador.
  8. Árvore de decisão:
    • Construção e interpretação.
    • Extensão para Random Forest, aplicação sistemática em tarefas de previsão.
    • Desafio: prever sobreviventes do naufrágio do Titanic.
  9. Visão geral de redes neurais: conceito, modelos pré-treinados, aplicações em visão computacional e processamento de linguagem natural (NLP), com vetorização de palavras e categorias.